Re: gzimg hashes
Brook Milligan <[email protected]> Sun, 26 Jul 2026 16:39:36 -0600
| Newsgroups | gmane.os.netbsd.current |
|---|---|
| Message-ID | <[email protected]> |
> On Jul 18, 2026, at 09:10, Brook Milligan <[email protected]> = wrote: >=20 > The basic idea is to add a new target (snap_md_post_images) to the end = of snap_md_post that takes care of the (up to) four steps: (i) create an = uncompressed image, (ii) create compressed bootable images + = corresponding hash fiies from it, (iii) compress and hash the original = image, and (iv) collect all the hashes into a single file. Each step = can be done in parallel, something that itself is an improvement. Also, = all these steps are not necessary for every architecture, so some = changes skip or merge these four into fewer. >=20 > Please look over the patch below and provide comments. Are there any thoughts on this? Shall I go ahead to commit? Cheers, Brook > Index: distrib/utils/embedded/mkimage > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/distrib/utils/embedded/mkimage,v > retrieving revision 1.97 > diff -u -r1.97 mkimage > --- distrib/utils/embedded/mkimage 22 May 2026 14:44:16 -0000 1.97 > +++ distrib/utils/embedded/mkimage 18 Jul 2026 14:39:36 -0000 > @@ -425,8 +425,4 @@ > image=3D"${image}.gz" > fi >=20 > -cd "${IMAGEDIR}" > -${CKSUM} -a MD5 "$(basename "${image}")" > MD5 > -${CKSUM} -a SHA512 "$(basename "${image}")" > SHA512 > - > echo ${bar} Image is ${image} ${bar} > Index: etc/Makefile > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/etc/Makefile,v > retrieving revision 1.476 > diff -u -r1.476 Makefile > --- etc/Makefile 10 May 2026 14:19:10 -0000 1.476 > +++ etc/Makefile 18 Jul 2026 14:39:36 -0000 > @@ -48,6 +48,9 @@ >=20 > GZIP_FLAGS=3D -9 ${GZIP_N_FLAG} >=20 > +HASHES+=3D MD5 > +HASHES+=3D SHA512 > + > # Flags for creating ISO CDROM image for mac68k and macppc that = require > # tools mkhybrid(8) to create hybrid ISO9660/HFS images. > MKISOFS?=3D ${TOOL_MKHYBRID} > @@ -61,7 +64,7 @@ > .if ${MKISOFS_FLAGS:N-v} > MKISOFS_FLAGS+=3D -quiet > .endif > -=20 > + > # Reproducible build parameters > .if ${MKREPRO:Uno} =3D=3D "no" > BUILDER!=3D echo $${USER-root}@$$(hostname) > @@ -697,7 +700,7 @@ > done > . for k in ${ALL_KERNELS} > install-debugkernels: ${DESTDIR}${DEBUGDIR}/netbsd-${k}.debug > -=20 > + > ${DESTDIR}${DEBUGDIR}/netbsd-${k}.debug: > ${_MKTARGET_INSTALL} > touch ${.TARGET} > Index: etc/etc.evbarm/Makefile.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/etc/etc.evbarm/Makefile.inc,v > retrieving revision 1.138 > diff -u -r1.138 Makefile.inc > --- etc/etc.evbarm/Makefile.inc 20 Feb 2026 07:20:28 -0000 1.138 > +++ etc/etc.evbarm/Makefile.inc 18 Jul 2026 14:39:37 -0000 > @@ -96,21 +96,27 @@ > MACHINE=3D${MACHINE} \ > MKDTB=3D${MKDTB} \ > MKPOSTFIX=3D${MKPOSTFIX} \ > - CKSUM=3D${CKSUM} \ > - IMAGEDIR=3D${IMAGE.dir} \ > - ${HOST_SH} ${MKIMAGE} -h ${.TARGET:S/smp_//} -D ${DESTDIR} \ > + ${HOST_SH} ${MKIMAGE} -h ${.TARGET:R:S/smp_//} -D ${DESTDIR} \ > -S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} \ > - ${IMAGE.dir}/${.TARGET:S/smp_//}.img > -.for f in ${INSTALLBOOT_BOARDS} > - @echo "=3D=3D=3D> Making bootable image = ${IMAGE.dir:T}/${.TARGET:S/smp_//}-${f}.img.gz" > - @cp ${IMAGE.dir}/${.TARGET:S/smp_//}.img = ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img > - @${TOOL_INSTALLBOOT} -m ${MACHINE} -o board=3D${f} \ > - ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \ > - && ${TOOL_GZIP} -f ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img \ > - || rm ${IMAGE.dir}/${.TARGET:S/smp_//}-${f}.img > + ${IMAGE.dir}/${.TARGET:S/smp_//} > + > +__mkbootimage: .USE > + @echo "=3D=3D=3D> Making bootable image = ${IMAGE.dir:T}/${.TARGET:S/smp_//}" > + cp ${IMAGE.dir}/${.TARGET:R:S/smp_//:C/-.*//}.img = ${IMAGE.dir}/${.TARGET:R:S/smp_//} > + ${TOOL_INSTALLBOOT} -m ${MACHINE} -o = board=3D${.TARGET:R:R:C/smp_[^-]*-//} \ > + ${IMAGE.dir}/${.TARGET:R:S/smp_//} \ > + && ${TOOL_GZIP} -f ${IMAGE.dir}/${.TARGET:R:S/smp_//} \ > + && for hash in ${HASHES}; do \ > + (cd ${IMAGE.dir} && ${TOOL_CKSUM} -a $${hash} ${.TARGET:S/smp_//} > = ${.TARGET:S/smp_//}.$${hash}) \ > + done \ > + || rm ${IMAGE.dir}/${.TARGET:R:S/smp_//}* > + > +__mkcompressed: .USE > + @echo "=3D=3D=3D> Compressing image = ${IMAGE.dir}/${.TARGET:R:S/smp_//}" > + ${TOOL_GZIP} -f ${GZIP_N_FLAG} -9 ${IMAGE.dir}/${.TARGET:R:S/smp_//} > +.for hash in ${HASHES} > + (cd ${IMAGE.dir} && ${TOOL_CKSUM} -a ${hash} ${.TARGET:S/smp_//} > = ${.TARGET:S/smp_//}.${hash}) > .endfor > - @echo "=3D=3D=3D> Compressing image = ${IMAGE.dir}/${.TARGET:S/smp_//}.img" > - ${TOOL_GZIP} -f ${GZIP_N_FLAG} -9 = ${IMAGE.dir}/${.TARGET:S/smp_//}.img >=20 > ARCHES.earmv4=3D armv4 > ARCHES.earmv4eb=3D armv4 > @@ -149,34 +155,75 @@ > .endif >=20 > .if !empty(MACHINE_ARCH:M*armv7*) && empty(ALL_KERNELS) > -smp_armv7: __mkimage > -MKI_OPTS.smp_armv7=3D -K ${IMAGE.kern} -x > -SNAP_MD_POST_DEPS+=3D smp_armv7 > +smp_armv7.img: __mkimage > +smp_armv7.img.gz: __mkcompressed > +MKI_OPTS.smp_armv7.img=3D -K ${IMAGE.kern} -x > +SNAP_MD_POST_DEPS_IMG+=3D smp_armv7.img > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_armv7.img.gz > +.for board in ${INSTALLBOOT_BOARDS} > +smp_armv7-${board}.img.gz: __mkbootimage > +SNAP_MD_POST_DEPS_BOOTABLE+=3D smp_armv7-${board}.img.gz > +.endfor > .endif >=20 > .if !empty(MACHINE_ARCH:Maarch64*) && empty(ALL_KERNELS) > -smp_arm64: __mkimage > -MKI_OPTS.smp_arm64=3D -K ${IMAGE.kern} -x > -SNAP_MD_POST_DEPS+=3D smp_arm64 > -smp_arm64mbr: __mkimage > -MKI_OPTS.smp_arm64mbr=3D -K ${IMAGE.kern} -x > -SNAP_MD_POST_DEPS+=3D smp_arm64mbr > +smp_arm64.img: __mkimage > +smp_arm64.img.gz: __mkcompressed > +MKI_OPTS.smp_arm64.img=3D -K ${IMAGE.kern} -x > +SNAP_MD_POST_DEPS_IMG+=3D smp_arm64.img > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_arm64.img.gz > +.for board in ${INSTALLBOOT_BOARDS} > +smp_arm64-${board}.img.gz: __mkbootimage > +SNAP_MD_POST_DEPS_BOOTABLE+=3D smp_arm64-${board}.img.gz > +.endfor > +smp_arm64mbr.img: __mkimage > +smp_arm64mbr.img.gz: __mkcompressed > +MKI_OPTS.smp_arm64mbr.img=3D -K ${IMAGE.kern} -x > +SNAP_MD_POST_DEPS_IMG+=3D smp_arm64mbr.img > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_arm64mbr.img.gz > +.for board in ${INSTALLBOOT_BOARDS} > +smp_arm64mbr-${board}.img.gz: __mkbootimage > +SNAP_MD_POST_DEPS_BOOTABLE+=3D smp_arm64mbr-${board}.img.gz > +.endfor > .endif >=20 > .if !empty(KERNEL_SETS:MRPI) > -smp_rpi: __mkimage > +smp_rpi.img: __mkimage > +smp_rpi.img.gz: __mkcompressed > .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI) > -MKI_OPTS.smp_rpi=3D -K ${IMAGE.kern}/netbsd-RPI.img.gz -x > -SNAP_MD_POST_DEPS+=3D smp_rpi > +MKI_OPTS.smp_rpi.img=3D -K ${IMAGE.kern}/netbsd-RPI.img.gz -x > +SNAP_MD_POST_DEPS_IMG+=3D smp_rpi.img > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_rpi.img.gz > +.for board in ${INSTALLBOOT_BOARDS} > +smp_rpi-${board}.img.gz: __mkbootimage > +SNAP_MD_POST_DEPS_BOOTABLE+=3D smp_rpi-${board}.img.gz > +.endfor > .endif > -smp_rpi_inst: ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz __mkimage > +smp_rpi_inst.img: ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz > +smp_rpi_inst.img: __mkimage > +smp_rpi_inst.img.gz: __mkcompressed > .if empty(ALL_KERNELS) || !empty(ALL_KERNELS:MRPI_INSTALL) > -MKI_OPTS.smp_rpi_inst=3D -b -K = ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz -x > -SNAP_MD_POST_DEPS+=3D smp_rpi_inst > +MKI_OPTS.smp_rpi_inst.img=3D -b -K = ${IMAGE.instk}/netbsd-RPI_INSTALL.img.gz -x > +SNAP_MD_POST_DEPS_IMG+=3D smp_rpi_inst.img > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_rpi_inst.img.gz > +.for board in ${INSTALLBOOT_BOARDS} > +smp_rpi_inst-${board}.img.gz: __mkbootimage > +SNAP_MD_POST_DEPS_BOOTABLE+=3D smp_rpi_inst-${board}.img.gz > +.endfor > .endif > .endif >=20 > -snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT = ${SNAP_MD_POST_DEPS} > +smp_hashes: > + @echo "=3D=3D=3D> Making hash files: ${HASHES}" > +.for hash in ${HASHES} > + cat ${IMAGE.dir}/*.${hash} > ${IMAGE.dir}/${hash} \ > + && rm -f ${IMAGE.dir}/*.${hash} > +.endfor > +SNAP_MD_POST_DEPS_HASHES+=3D smp_hashes > + > +snap_md_post_images: ${SNAP_MD_POST_DEPS_IMG} .WAIT = ${SNAP_MD_POST_DEPS_BOOTABLE} .WAIT ${SNAP_MD_POST_DEPS_IMGZ} .WAIT = ${SNAP_MD_POST_DEPS_HASHES} > + > +snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT = ${SNAP_MD_POST_DEPS} snap_md_post_images >=20 > .if !empty(MACHINE_ARCH:Maarch64*) > KERNEL_SUFFIXES=3D img > Index: etc/etc.evbmips/Makefile.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/etc/etc.evbmips/Makefile.inc,v > retrieving revision 1.32 > diff -u -r1.32 Makefile.inc > --- etc/etc.evbmips/Makefile.inc 22 Mar 2025 09:25:14 -0000 1.32 > +++ etc/etc.evbmips/Makefile.inc 18 Jul 2026 14:39:37 -0000 > @@ -70,11 +70,13 @@ > MACHINE=3D${MACHINE} \ > MKDTB=3D${MKDTB} \ > MKPOSTFIX=3D${MKPOSTFIX} \ > - CKSUM=3D${CKSUM} \ > - IMAGEDIR=3D${IMAGE.dir} \ > ${HOST_SH} ${MKIMAGE} -h ${.TARGET:S/smp_//} -D ${DESTDIR} \ > -S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} = \ > ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz > + @echo "=3D=3D=3D> Making hash files: ${HASHES}" > + for hash in ${HASHES}; do \ > + (cd ${IMAGE.dir} && ${TOOL_CKSUM} -a $${hash} = ${.TARGET:S/smp_//}.img.gz > $${hash}); \ > + done >=20 > .if !empty(MACHINE_ARCH:Mmips*64eb) > smp_octeon: __mkimage > Index: etc/etc.evbppc/Makefile.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/etc/etc.evbppc/Makefile.inc,v > retrieving revision 1.22 > diff -u -r1.22 Makefile.inc > --- etc/etc.evbppc/Makefile.inc 10 Jan 2026 06:56:58 -0000 1.22 > +++ etc/etc.evbppc/Makefile.inc 18 Jul 2026 14:39:37 -0000 > @@ -58,11 +58,13 @@ > MACHINE=3D${MACHINE} \ > MKDTB=3D${MKDTB} \ > MKPOSTFIX=3D${MKPOSTFIX} \ > - CKSUM=3D${CKSUM} \ > - IMAGEDIR=3D${IMAGE.dir} \ > ${HOST_SH} -x ${MKIMAGE} -h ${.TARGET:S/smp_//} -D ${DESTDIR} \ > -S ${NETBSDSRCDIR} -B ${IMAGEENDIAN} ${MKI_OPTS.${.TARGET}} = \ > ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz > + @echo "=3D=3D=3D> Making hash files: ${HASHES}" > + for hash in ${HASHES}; do \ > + (cd ${IMAGE.dir} && ${TOOL_CKSUM} -a $${hash} = ${.TARGET:S/smp_//}.img.gz > $${hash}); \ > + done >=20 > smp_nintendo: __mkimage > cd ${KERNSRCDIR}/arch/evbppc/stand/wii && ${MAKE} release > Index: etc/etc.riscv/Makefile.inc > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /cvsroot/src/etc/etc.riscv/Makefile.inc,v > retrieving revision 1.7 > diff -u -r1.7 Makefile.inc > --- etc/etc.riscv/Makefile.inc 22 Mar 2025 09:25:14 -0000 1.7 > +++ etc/etc.riscv/Makefile.inc 18 Jul 2026 14:39:37 -0000 > @@ -15,8 +15,6 @@ > IMAGE.dir=3D ${IMAGE.rel}/binary/gzimg > IMAGE.kern=3D ${IMAGE.rel}/binary/kernel >=20 > -# TOOL_MKUBOOTIMAGE=3D${TOOL_MKUBOOTIMAGE} \ > - > __mkimage: .USE > TOOL_MAKE=3D${MAKE} \ > TOOL_MAKEFS=3D${TOOL_MAKEFS} \ > @@ -34,11 +32,12 @@ > MACHINE=3D${MACHINE} \ > MKDTB=3D${MKDTB} \ > MKPOSTFIX=3D${MKPOSTFIX} \ > - CKSUM=3D${CKSUM} \ > - IMAGEDIR=3D${IMAGE.dir} \ > ${HOST_SH} ${MKIMAGE} -h ${.TARGET:S/smp_//} -D ${DESTDIR} \ > -S ${NETBSDSRCDIR} ${MKI_OPTS.${.TARGET}} \ > ${IMAGE.dir}/${.TARGET:S/smp_//}.img.gz > + for hash in ${HASHES}; do \ > + (cd ${IMAGE.dir} && ${TOOL_CKSUM} -a $${hash} = ${.TARGET:S/smp_//}.img.gz > ${.TARGET:S/smp_//}.img.gz.$${hash}) \ > + done >=20 >=20 > .if ${MACHINE_ARCH} =3D=3D "riscv64" > @@ -51,18 +50,29 @@ > .endif >=20 > smp_riscv64: __mkimage > -MKI_OPTS.smp_riscv64=3D -K ${IMAGE.kern} > -SNAP_MD_POST_DEPS+=3D smp_riscv64 > +MKI_OPTS.smp_riscv64=3D -K ${IMAGE.kern} > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_riscv64 > .endif >=20 >=20 > .if ${MACHINE_ARCH} =3D=3D "riscv32" > smp_riscv32: __mkimage > -MKI_OPTS.smp_riscv32=3D -K ${IMAGE.kern} > -SNAP_MD_POST_DEPS+=3D smp_riscv32 > +MKI_OPTS.smp_riscv32=3D -K ${IMAGE.kern} > +SNAP_MD_POST_DEPS_IMGZ+=3D smp_riscv32 > .endif >=20 > -snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT = ${SNAP_MD_POST_DEPS} > + > +smp_hashes: > + @echo "=3D=3D=3D> Making hash files: ${HASHES}" > +.for hash in ${HASHES} > + cat ${IMAGE.dir}/*.${hash} > ${IMAGE.dir}/${hash} \ > + && rm -f ${IMAGE.dir}/*.${hash} > +.endfor > +SNAP_MD_POST_DEPS_HASHES+=3D smp_hashes > + > +snap_md_post_images: ${SNAP_MD_POST_DEPS_IMGZ} .WAIT = ${SNAP_MD_POST_DEPS_HASHES} > + > +snap_md_post: check_DESTDIR check_RELEASEDIR snap_post .WAIT = ${SNAP_MD_POST_DEPS} snap_md_post_images >=20 > INSTALLATION_DIRS+=3D binary/gzimg \ > installation/instkernel >=20