diff --git a/OARiNZ/DIY/LiveCD/Makefile b/OARiNZ/DIY/LiveCD/Makefile index ffa0774..23b8901 100755 --- a/OARiNZ/DIY/LiveCD/Makefile +++ b/OARiNZ/DIY/LiveCD/Makefile @@ -6,7 +6,7 @@ # Version and filename info. VERSION=3.0 -INSTANT_EPRINTS=Instant_EPrints_${VERSION}_i386 +INSTANT_EPRINTS=Instant_EPrints_$(VERSION)_i386 UBUNTU=Ubuntu_6.10_i386 # Directories. @@ -15,8 +15,8 @@ NEW_SQUASH=new-squashfs # Miscellaneous files. -REMOVE_FILES=${NEW_SQUASH}/etc/resolv.conf ${NEW_SQUASH}/etc/apt/apt.conf \ - ${NEW_SQUASH}/Makefile.chroot ${NEW_SQUASH}/usr/sbin/policy-rc.d +REMOVE_FILES=$(NEW_SQUASH)/etc/resolv.conf $(NEW_SQUASH)/etc/apt/apt.conf \ + $(NEW_SQUASH)/Makefile.chroot $(NEW_SQUASH)/usr/sbin/policy-rc.d # Commands locations. ECHO=/bin/echo @@ -36,27 +36,26 @@ # Build ISO image. -iso: ${INSTANT_EPRINTS}.iso +iso: $(INSTANT_EPRINTS).iso -${INSTANT_EPRINTS}.iso: ${LIVECD}/casper/filesystem.squashfs - @${ECHO} - @${ECHO} "=== BUILDING ISO IMAGE ===" +$(INSTANT_EPRINTS).iso: $(LIVECD)/casper/filesystem.squashfs + @$(ECHO) + @$(ECHO) "=== BUILDING ISO IMAGE ===" @# Update live CD MD5 hash. We do a /bin/sh -c to run the find command - @# so that we can use output redirection. Otherwise we'll get pe${RM}ission + @# so that we can use output redirection. Otherwise we'll get permission @# errors. - @${ECHO} - @${ECHO} "=== Updating live CD MD5 hash (takes about 1.5 minutes)." - @cd ${LIVECD} - ${SUDO} ${RM} -f md5sum.txt - @${ECHO} "find . -type f -print0 | xargs -0 md5sum > md5sum.txt" - @${SUDO} /bin/sh -c '/usr/bin/find . -type f -print0 | xargs -0 md5sum > md5sum.txt' - @cd .. + @$(ECHO) + @$(ECHO) "=== Updating live CD MD5 hash (takes about 1.5 minutes)." + $(SUDO) $(RM) -f $(LIVECD)/md5sum.txt + @$(ECHO) "find . -type f -print0 | xargs -0 md5sum > md5sum.txt" + @cd $(LIVECD) && $(SUDO) /bin/sh -c \ + '/usr/bin/find . -type f -print0 | xargs -0 md5sum > md5sum.txt' @# Create live CD ISO. - @${ECHO} - @${ECHO} "=== Building final ISO image (takes about 40 seconds)." - ${SUDO} /usr/bin/mkisofs \ + @$(ECHO) + @$(ECHO) "=== Building final ISO image (takes about 40 seconds)." + $(SUDO) /usr/bin/mkisofs \ -o $@ \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ @@ -69,165 +68,165 @@ -J \ -input-charset iso8859-1 \ -allow-leading-dots \ - ${LIVECD} + $(LIVECD) - @${ECHO} - @${ECHO} "=== Done!" + @$(ECHO) + @$(ECHO) "=== Done!" # Build the new squashfs for the ISO. -squashfs: ${LIVECD}/casper/filesystem.squashfs +squashfs: $(LIVECD)/casper/filesystem.squashfs -${LIVECD}/casper/filesystem.squashfs: ${INSTANT_EPRINTS}_work.ext2 - @${ECHO} - @${ECHO} "=== BUILDING NEW SQUASHFS ===" +$(LIVECD)/casper/filesystem.squashfs: $(INSTANT_EPRINTS)_work.ext2 + @$(ECHO) + @$(ECHO) "=== BUILDING NEW SQUASHFS ===" @# Mount squashfs source filesystem and set up work environment. - @${ECHO} - @${ECHO} "=== Initialising." - @${SUDO} ${MOUNT} -o loop $< ${NEW_SQUASH} - ${SUDO} ${CP} -p /etc/resolv.conf ${NEW_SQUASH}/etc - ${SUDO} ${MOUNT} -t proc --bind /proc ${NEW_SQUASH}/proc + @$(ECHO) + @$(ECHO) "=== Initialising." + @$(SUDO) $(MOUNT) -o loop $< $(NEW_SQUASH) + $(SUDO) $(CP) -p /etc/resolv.conf $(NEW_SQUASH)/etc + $(SUDO) $(MOUNT) -t proc --bind /proc $(NEW_SQUASH)/proc @# Copy in cached .deb files to save on downloads and set up apt @# sources, etc. An appropriate sources.list can be generated @# using the utility at http://www.ubuntu-nl.org/source-o-matic/. - @${ECHO} - @${ECHO} "=== Setting up apt (takes about 10 seconds)." - ${SUDO} ${CP} -a apt-cache/. ${NEW_SQUASH}/var/cache/apt/archives + @$(ECHO) + @$(ECHO) "=== Setting up apt (takes about 10 seconds)." + $(SUDO) $(CP) -a apt-cache/. $(NEW_SQUASH)/var/cache/apt/archives @# HACK: I've been having problems with the update servers. Since it @# takes so long to get back to this point in the process, I've @# cheated and pre-generated the various index files. Just drop 'em @# in! They should be safe to leave there afterwards. - ${SUDO} ${CP} -a apt-lists/. ${NEW_SQUASH}/var/lib/apt/lists - ${SUDO} ${CP} -p /etc/apt/apt.conf ${NEW_SQUASH}/etc/apt - ${SUDO} ${CP} sources.list ${NEW_SQUASH}/etc/apt + $(SUDO) $(CP) -a apt-lists/. $(NEW_SQUASH)/var/lib/apt/lists + $(SUDO) $(CP) -p /etc/apt/apt.conf $(NEW_SQUASH)/etc/apt + $(SUDO) $(CP) sources.list $(NEW_SQUASH)/etc/apt @# The following stops the daemons from attempting to restart, which @# will fail miserably in a chroot environment. Make sure to set the @# permissions correctly, just in case they've been eaten by CVS or @# something. - ${SUDO} ${CP} policy-rc.d ${NEW_SQUASH}/usr/sbin - ${SUDO} ${CHMOD} 755 ${NEW_SQUASH}/usr/sbin/policy-rc.d + $(SUDO) $(CP) policy-rc.d $(NEW_SQUASH)/usr/sbin + $(SUDO) $(CHMOD) 755 $(NEW_SQUASH)/usr/sbin/policy-rc.d @# Finally, preseed the debconf database so that we don't get asked @# any annoying configuration questions during installs. - ${SUDO} ${CP} -a debconf-db/. ${NEW_SQUASH}/var/cache/debconf + $(SUDO) $(CP) -a debconf-db/. $(NEW_SQUASH)/var/cache/debconf @# Chroot to the squashfs source filesystem and reconfigure @# installed packages. Note that we need to stop Webmin for the @# duration, otherwise installing Webmin in the chroot fails ("port @# 10000 is already in use"). - @${ECHO} - @${ECHO} "=== Reconfiguring installed packages (takes about xx minutes)." - @${SUDO} /etc/init.d/webmin stop - @${SUDO} ${CP} Makefile.chroot ${NEW_SQUASH} - time ${SUDO} chroot ${NEW_SQUASH} /usr/bin/env HOME=/root LC_ALL=C \ + @$(ECHO) + @$(ECHO) "=== Reconfiguring installed packages (takes about 2.5 minutes)." + @-$(SUDO) /etc/init.d/webmin stop + @$(SUDO) $(CP) Makefile.chroot $(NEW_SQUASH) + @$(SUDO) chroot $(NEW_SQUASH) /usr/bin/env HOME=/root LC_ALL=C \ DEBIAN_FRONTEND=noninteractive make -f Makefile.chroot - @${SUDO} /etc/init.d/webmin start + @-$(SUDO) /etc/init.d/webmin start @# Clean up. - @${ECHO} - @${ECHO} "=== Cleaning up." - ${SUDO} ${UMOUNT} ${NEW_SQUASH}/proc - ${SUDO} ${RM} -f ${REMOVE_FILES} - ${SUDO} ${RM} -rf ${NEW_SQUASH}/tmp/* + @$(ECHO) + @$(ECHO) "=== Cleaning up." + $(SUDO) $(UMOUNT) $(NEW_SQUASH)/proc + $(SUDO) $(RM) -f $(REMOVE_FILES) + $(SUDO) $(RM) -rf $(NEW_SQUASH)/tmp/* @# Update manifest and disk name. - @${ECHO} - @${ECHO} "=== Updating manifest and disk name." - ${SED} -ie 's/DISKNAME .*/DISKNAME Instant EPrints 3.0 - i386/' \ - ${LIVECD}/README.diskdefines - ${SUDO} chroot ${NEW_SQUASH} \ - dpkg-query -W --showformat='${Package} ${Version}\n' \ - > ${LIVECD}/casper/filesystem.manifest - ${SUDO} ${CP} ${LIVECD}/casper/filesystem.manifest \ - ${LIVECD}/casper/filesystem.manifest-desktop - ${SED} -ie '/ubiquity/d' ${LIVECD}/casper/filesystem.manifest-desktop + @$(ECHO) + @$(ECHO) "=== Updating manifest and disk name." + $(SED) -ie 's/DISKNAME .*/DISKNAME Instant EPrints 3.0 - i386/' \ + $(LIVECD)/README.diskdefines + $(SUDO) chroot $(NEW_SQUASH) \ + dpkg-query -W --showformat='$(Package) $(Version)\n' \ + > $(LIVECD)/casper/filesystem.manifest + $(SUDO) $(CP) $(LIVECD)/casper/filesystem.manifest \ + $(LIVECD)/casper/filesystem.manifest-desktop + $(SED) -ie '/ubiquity/d' $(LIVECD)/casper/filesystem.manifest-desktop @# Clear free space on the squashfs source filesystem. - @${ECHO} - @${ECHO} "=== Clearing free space on new squashfs." - -${SUDO} ${DD} if=/dev/zero of=${NEW_SQUASH}/dummyfile - ${SUDO} ${RM} ${NEW_SQUASH}/dummyfile + @$(ECHO) + @$(ECHO) "=== Clearing free space on new squashfs." + -$(SUDO) $(DD) if=/dev/zero of=$(NEW_SQUASH)/dummyfile + $(SUDO) $(RM) $(NEW_SQUASH)/dummyfile @# Regenerate the live CD squashfs. - @${ECHO} - @${ECHO} "=== Building new squashfs (takes about 10 minutes)." - ${SUDO} ${RM} -f $@ - ${SUDO} mksquashfs ${NEW_SQUASH} $@ + @$(ECHO) + @$(ECHO) "=== Building new squashfs (takes about 10 minutes)." + $(SUDO) $(RM) -f $@ + $(SUDO) mksquashfs $(NEW_SQUASH) $@ @# Unmount the squashfs source filesystem. - @${SUDO} ${UMOUNT} ${NEW_SQUASH} + @$(SUDO) $(UMOUNT) $(NEW_SQUASH) - @${ECHO} - @${ECHO} "=== Done!" + @$(ECHO) + @$(ECHO) "=== Done!" -${INSTANT_EPRINTS}_work.ext2: ${INSTANT_EPRINTS}.ext2 - @${ECHO} - @${ECHO} "=== Making working copy of original filesystem (takes about 2.5 minutes)." - ${SUDO} ${CP} $< $@ +$(INSTANT_EPRINTS)_work.ext2: $(INSTANT_EPRINTS).ext2 + @$(ECHO) + @$(ECHO) "=== Making working copy of original filesystem (takes about 2.5 minutes)." + $(SUDO) $(CP) $< $@ # Build source filesystem. -filesystem: ${INSTANT_EPRINTS}.ext2 +filesystem: $(INSTANT_EPRINTS).ext2 -${INSTANT_EPRINTS}.ext2: ${UBUNTU}.iso - @${ECHO} - @${ECHO} "=== BUILDING SOURCE FILESYSTEM ===" +$(INSTANT_EPRINTS).ext2: $(UBUNTU).iso + @$(ECHO) + @$(ECHO) "=== BUILDING SOURCE FILESYSTEM ===" @# Make a copy of the original ISO. - @${ECHO} - @${ECHO} "=== Copying original ISO (takes about 30 seconds)." - @${SUDO} ${MOUNT} -t iso9660 -o loop $< /cdrom - @${MKDIR} -p ${LIVECD} - ${SUDO} ${RM} -rf ${LIVECD}/* - ${CP} -a /cdrom/. ${LIVECD} - ${CHMOD} -R u+w ${LIVECD} - @${SUDO} ${UMOUNT} /cdrom + @$(ECHO) + @$(ECHO) "=== Copying original ISO (takes about 30 seconds)." + @$(SUDO) $(MOUNT) -t iso9660 -o loop $< /cdrom + @$(MKDIR) -p $(LIVECD) + $(SUDO) $(RM) -rf $(LIVECD)/* + $(CP) -a /cdrom/. $(LIVECD) + $(CHMOD) -R u+w $(LIVECD) + @$(SUDO) $(UMOUNT) /cdrom @# Remove unnecessary Windows cruft. - @${ECHO} - @${ECHO} "=== Removing "`/usr/bin/du -smh ${LIVECD}/programs | /usr/bin/cut -d'M' -f1`"MiB of unnecessary Windows crud." - ${RM} -rf ${LIVECD}/programs + @$(ECHO) + @$(ECHO) "=== Removing "`/usr/bin/du -smh $(LIVECD)/programs | /usr/bin/cut -d'M' -f1`"MiB of unnecessary Windows crud." + $(RM) -rf $(LIVECD)/programs @# Mount original compressed filesystem. - @${MKDIR} -p ${OLD_SQUASH} - @${SUDO} ${MOUNT} -t squashfs -o loop,ro \ - ${LIVECD}/casper/filesystem.squashfs ${OLD_SQUASH} + @$(MKDIR) -p $(OLD_SQUASH) + @$(SUDO) $(MOUNT) -t squashfs -o loop,ro \ + $(LIVECD)/casper/filesystem.squashfs $(OLD_SQUASH) @# Create image for new compressed filesystem. Add on an extra 500MiB @# to allow for the temporary files that we're going to copy in (mostly @# cached .deb files. - @${ECHO} - @${ECHO} "=== Creating new 2.5 GiB blank file system (takes about 1.5 minutes)." - ${SUDO} ${DD} if=/dev/zero \ + @$(ECHO) + @$(ECHO) "=== Creating new 2.5 GiB blank file system (takes about 1.5 minutes)." + $(SUDO) $(DD) if=/dev/zero \ of=$@ bs=1M count=2500 - ${SUDO} mke2fs -F -q $@ + $(SUDO) mke2fs -F -q $@ @# Mount new compressed filesystem. - @${MKDIR} -p ${NEW_SQUASH} - @${SUDO} ${MOUNT} -o loop $@ ${NEW_SQUASH} + @$(MKDIR) -p $(NEW_SQUASH) + @$(SUDO) $(MOUNT) -o loop $@ $(NEW_SQUASH) @# Copy the old compressed filesystem. - @${ECHO} - @${ECHO} "=== Copying original compressed filesystem (takes about 2.5 minutes)." - ${SUDO} ${CP} -a ${OLD_SQUASH}/. ${NEW_SQUASH} + @$(ECHO) + @$(ECHO) "=== Copying original compressed filesystem (takes about 2.5 minutes)." + $(SUDO) $(CP) -a $(OLD_SQUASH)/. $(NEW_SQUASH) @# Unmount all compressed filesystems. - @${SUDO} ${UMOUNT} ${OLD_SQUASH} - @${SUDO} ${UMOUNT} ${NEW_SQUASH} - @${ECHO} - @${ECHO} "=== Done!" + @$(SUDO) $(UMOUNT) $(OLD_SQUASH) + @$(SUDO) $(UMOUNT) $(NEW_SQUASH) + @$(ECHO) + @$(ECHO) "=== Done!" # Unmount everything that might be mounted. Useful if the make dies partway # through. cleanup: - @${ECHO} - @${ECHO} "=== Cleaning up mounted items." - -${SUDO} ${UMOUNT} ${NEW_SQUASH}/proc - -${SUDO} ${UMOUNT} ${NEW_SQUASH} - -${SUDO} ${UMOUNT} ${OLD_SQUASH} - -${SUDO} ${UMOUNT} /cdrom + @$(ECHO) + @$(ECHO) "=== Cleaning up mounted items." + -$(SUDO) $(UMOUNT) $(NEW_SQUASH)/proc + -$(SUDO) $(UMOUNT) $(NEW_SQUASH) + -$(SUDO) $(UMOUNT) $(OLD_SQUASH) + -$(SUDO) $(UMOUNT) /cdrom