golang.org/x/build@v0.0.0-20240506185731-218518f32b70/env/dragonfly-amd64/Makefile (about)

     1  # See README for an overview of how to use this Makefile.
     2  
     3  # Database of ISO names and MD5s. Variable name suffix is short version (622 for 6.2.2, see V below)
     4  ISO_600=dfly-x86_64-6.0.0_REL.iso
     5  MD5_600=252fc700803dbadce1de928432373bbb
     6  
     7  ISO_622=dfly-x86_64-6.2.2_REL.iso
     8  MD5_622=b391a29c8e9c1cc33f2441ff1f0d98a0
     9  
    10  ISO_640=dfly-x86_64-6.4.0_REL.iso
    11  MD5_640=5dbf894d9120664a675030c475f25040
    12  
    13  # Default version when invoking make. Can override on command line: make V=600
    14  V=640
    15  
    16  ISO=$(ISO_$V)
    17  MD5=$(MD5_$V)
    18  
    19  default: disk-$V.tar.gz
    20  
    21  clean:
    22  	rm -f *.iso *.iso.bz2 phase*.iso isotmp disk-*.phase* disk-*.tar.gz disk.raw disk.tmp
    23  
    24  # Download image from DragonflyBSD page.
    25  $(ISO):
    26  	curl -o $@.bz2 https://mirror-master.dragonflybsd.org/iso-images/$@.bz2
    27  	echo "$(MD5)  $@.bz2" | md5sum -c -
    28  	bunzip2 $@.bz2
    29  
    30  # If Dragonfly boots with a CD containing pfi.conf that says pfi_script=name.sh,
    31  # then it runs name.sh at the end of the standard startup process.
    32  # We use this to run a script inside a QEMU image.
    33  # phase1.iso is a CD containing phase1.sh, and so on.
    34  %.iso: %.sh
    35  	rm -rf isotmp
    36  	mkdir isotmp
    37  	cp $^ isotmp
    38  	echo pfi_script=$*.sh >>isotmp/pfi.conf
    39  	chmod +x isotmp/$*.sh
    40  	rm -f $@
    41  	genisoimage -r -o $@ isotmp/
    42  	rm -rf isotmp
    43  
    44  # Disk image creation is broken into phases so that later phases
    45  # can be modified and rerun without repeating the earlier phases,
    46  # which can take a long time.
    47  
    48  # Phase 1 sets up a basic DragonflyBSD install on the disk.
    49  # The installer is CD0, the PFI script is CD1, and the installer is also CD2.
    50  # CD2 is used by phase1.sh to get a clean FS image with nothing mounted on it.
    51  disk-$V.phase1: $(ISO) phase1.iso
    52  	qemu-img create -f qcow2 $@ 16G
    53  	(sleep 1; echo 9; echo set console=comconsole; echo boot) | \
    54  	qemu-system-x86_64 \
    55  		-display none -serial stdio \
    56  		-m 4G -net nic,model=virtio -net user -device virtio-scsi-pci,id=scsi0 \
    57  		-drive file=$@,if=none,format=qcow2,cache=none,id=myscsi -device scsi-hd,drive=myscsi,bus=scsi0.0 \
    58  		-drive file=$(ISO),media=cdrom \
    59  		-drive file=phase1.iso,media=cdrom \
    60  		-drive file=$(ISO),media=cdrom
    61  
    62  # Phase 2 updates the pkg database and installing curl, git, and so on.
    63  disk-$V.phase2: disk-$V.phase1 phase2.iso
    64  	cp $< $@
    65  	qemu-system-x86_64 \
    66  		-display none -serial stdio \
    67  		-m 4G -net nic,model=virtio -net user -device virtio-scsi-pci,id=scsi0 \
    68  		-drive file=$@,if=none,format=qcow2,cache=none,id=myscsi -device scsi-hd,drive=myscsi,bus=scsi0.0 \
    69  		-drive file=phase2.iso,media=cdrom
    70  
    71  # Phase 3 customizes the image to run the buildlet.
    72  phase3.iso: buildlet
    73  disk-$V.phase3: disk-$V.phase2 phase3.iso
    74  	cp $< $@
    75  	qemu-system-x86_64 \
    76  		-display none -serial stdio \
    77  		-m 4G -net nic,model=virtio -net user -device virtio-scsi-pci,id=scsi0 \
    78  		-drive file=$@,if=none,format=qcow2,cache=none,id=myscsi -device scsi-hd,drive=myscsi,bus=scsi0.0 \
    79  		-drive file=phase3.iso,media=cdrom
    80  
    81  # For testing and exploration
    82  run: disk-$V.phase3
    83  	cp $< disk.tmp
    84  	qemu-system-x86_64 \
    85  		-display none -serial stdio \
    86  		-m 4G -net nic,model=virtio -net user -device virtio-scsi-pci,id=scsi0 \
    87  		-drive file=disk.tmp,if=none,format=qcow2,cache=none,id=myscsi -device scsi-hd,drive=myscsi,bus=scsi0.0
    88  
    89  # Convert QEMU image back to raw for Google Cloud.
    90  disk-$V.tar.gz: disk-$V.phase3
    91  	rm -f disk.raw
    92  	qemu-img convert -f qcow2 -O raw -t none -T none $< disk.raw
    93  	tar -Sczf $@ disk.raw
    94  	rm -f disk.raw
    95  
    96  # Upload and create prod disk image.
    97  upload-prod: disk-$V.tar.gz
    98  	@echo "Run 'gcloud auth application-default login' if you get credential errors."
    99  	go run ../../cmd/upload --verbose --file=$< --public go-builder-data/dragonfly-amd64-$V.tar.gz
   100  	gcloud compute --project symbolic-datum-552 images create dragonfly-amd64-$V --source-uri gs://go-builder-data/dragonfly-amd64-$V.tar.gz
   101  
   102  # Delete prod disk image.
   103  delete-prod:
   104  	gcloud compute --project symbolic-datum-552 images delete dragonfly-amd64-$V
   105  
   106  # Upload and create staging disk image.
   107  upload-staging: disk-$V.tar.gz
   108  	go run ../../cmd/upload --verbose --file=$< --public dev-go-builder-data/dragonfly-amd64-$V.tar.gz
   109  	gcloud compute --project go-dashboard-dev images create dragonfly-amd64-$V --source-uri gs://dev-go-builder-data/dragonfly-amd64-$V.tar.gz
   110  
   111  # Delete staging disk image.
   112  delete-staging:
   113  	gcloud compute --project go-dashboard-dev images delete dragonfly-amd64-$V