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