1
0

prep-release.sh 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/bash
  2. # prep release for upload to production container
  3. function error_check()
  4. {
  5. if [ $? -eq 1 ]
  6. then
  7. echo "Error encountered... failing..."
  8. exit 1
  9. fi
  10. }
  11. # make ipxe directory to store ipxe disks
  12. mkdir -p build/ipxe
  13. # pull down upstream iPXE
  14. git clone --depth 1 https://github.com/ipxe/ipxe.git ipxe_build
  15. # copy iPXE config overrides into source tree
  16. cp ipxe/local/* ipxe_build/src/config/local/
  17. # copy certs into source tree
  18. cp script/*.crt ipxe_build/src/
  19. # build iPXE disks
  20. cd ipxe_build/src
  21. # get current iPXE hash
  22. IPXE_HASH=`git log -n 1 --pretty=format:"%H"`
  23. # generate generic iPXE disks
  24. make bin/ipxe.dsk bin/ipxe.iso bin/ipxe.lkrn bin/ipxe.usb bin/ipxe.kpxe bin/undionly.kpxe
  25. mv bin/ipxe.dsk ../../build/ipxe/generic-ipxe.dsk
  26. mv bin/ipxe.iso ../../build/ipxe/generic-ipxe.iso
  27. mv bin/ipxe.lkrn ../../build/ipxe/generic-ipxe.lkrn
  28. mv bin/ipxe.usb ../../build/ipxe/generic-ipxe.usb
  29. mv bin/ipxe.kpxe ../../build/ipxe/generic-ipxe.kpxe
  30. mv bin/undionly.kpxe ../../build/ipxe/generic-undionly.kpxe
  31. # generate netboot.xyz iPXE disks
  32. make bin/ipxe.dsk bin/ipxe.iso bin/ipxe.lkrn bin/ipxe.usb bin/ipxe.kpxe bin/undionly.kpxe \
  33. EMBED=../../ipxe/disks/netboot.xyz TRUST=ca-ipxe-org.crt,ca-netboot-xyz.crt
  34. error_check
  35. mv bin/ipxe.dsk ../../build/ipxe/netboot.xyz.dsk
  36. mv bin/ipxe.iso ../../build/ipxe/netboot.xyz.iso
  37. mv bin/ipxe.lkrn ../../build/ipxe/netboot.xyz.lkrn
  38. mv bin/ipxe.usb ../../build/ipxe/netboot.xyz.usb
  39. mv bin/ipxe.kpxe ../../build/ipxe/netboot.xyz.kpxe
  40. mv bin/undionly.kpxe ../../build/ipxe/netboot.xyz-undionly.kpxe
  41. # generate netboot.xyz iPXE disk for Google Compute Engine
  42. make bin/ipxe.usb CONFIG=cloud EMBED=../../ipxe/disks/netboot.xyz-gce \
  43. TRUST=ca-ipxe-org.crt,ca-netboot-xyz.crt
  44. error_check
  45. cp -f bin/ipxe.usb disk.raw
  46. tar Sczvf netboot.xyz-gce.tar.gz disk.raw
  47. mv netboot.xyz-gce.tar.gz ../../build/ipxe/netboot.xyz-gce.tar.gz
  48. # generate netboot.xyz-packet iPXE disk
  49. make bin/undionly.kpxe \
  50. EMBED=../../ipxe/disks/netboot.xyz-packet TRUST=ca-ipxe-org.crt,ca-netboot-xyz.crt
  51. error_check
  52. mv bin/undionly.kpxe ../../build/ipxe/netboot.xyz-packet.kpxe
  53. # generate netboot.xyz-packet-arm64 iPXE disk
  54. cp config/local/general.h.efi config/local/general.h
  55. make clean
  56. make bin-arm64-efi/ipxe.efi \
  57. EMBED=../../ipxe/disks/netboot.xyz-packet TRUST=ca-ipxe-org.crt,ca-netboot-xyz.crt
  58. error_check
  59. mv bin/ipxe.efi ../../build/ipxe/netboot.xyz-packet-arm64.efi
  60. # generate EFI iPXE disks
  61. cp config/local/general.h.efi config/local/general.h
  62. make clean
  63. make bin-x86_64-efi/ipxe.efi \
  64. EMBED=../../ipxe/disks/netboot.xyz TRUST=ca-ipxe-org.crt,ca-netboot-xyz.crt
  65. mkdir -p efi_tmp/EFI/BOOT/
  66. cp bin-x86_64-efi/ipxe.efi efi_tmp/EFI/BOOT/bootx64.efi
  67. genisoimage -o ipxe.eiso efi_tmp
  68. error_check
  69. mv bin-x86_64-efi/ipxe.efi ../../build/ipxe/netboot.xyz.efi
  70. mv ipxe.eiso ../../build/ipxe/netboot.xyz-efi.iso
  71. # return to root
  72. cd ../..
  73. # generate header for sha256-checksums file
  74. cd build/
  75. CURRENT_TIME=`date`
  76. cat > netboot.xyz-sha256-checksums.txt <<EOF
  77. # netboot.xyz bootloaders generated at $CURRENT_TIME
  78. # iPXE Commit: https://github.com/ipxe/ipxe/commit/$IPXE_HASH
  79. # Travis-CI Job: https://travis-ci.org/antonym/netboot.xyz/builds/$TRAVIS_BUILD_ID
  80. EOF
  81. # generate sha256sums for iPXE disks
  82. cd ipxe/
  83. for ipxe_disk in `ls .`
  84. do
  85. sha256sum $ipxe_disk >> ../netboot.xyz-sha256-checksums.txt
  86. done
  87. cat ../netboot.xyz-sha256-checksums.txt
  88. mv ../netboot.xyz-sha256-checksums.txt .
  89. cd ../..
  90. # generate signatures for netboot.xyz source files
  91. mkdir sigs
  92. for src_file in `ls src`
  93. do
  94. openssl cms -sign -binary -noattr -in src/$src_file \
  95. -signer script/codesign.crt -inkey script/codesign.key -certfile script/ca-netboot-xyz.crt -outform DER \
  96. -out sigs/$src_file.sig
  97. echo Generated signature for $src_file...
  98. done
  99. mv sigs src/
  100. # delete index.html so that we don't overwrite existing content type
  101. rm src/index.html
  102. # copy iPXE src code into build directory
  103. cp -R src/* build/
  104. # generate mkdocs
  105. mkdocs build