Date: Fri, 26 Oct 2007 22:29:04 +0200 From: Ulrich Spoerlein <uspoerlein@gmail.com> To: Clifton Royston <cliftonr@lava.net> Cc: FreeBSD hackers list <freebsd-hackers@freebsd.org> Subject: Re: Creating install CD with custom ports - how to massage INDEX file? Message-ID: <20071026202904.GC1482@roadrunner.spoerlein.net> In-Reply-To: <20071014193813.GA2677@lava.net> References: <20071014193813.GA2677@lava.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 14.10.2007 at 09:38:14 -1000, Clifton Royston wrote: > I've been building my own install CDs for a planned multi-server > upgrade to 6.2Rp8 and ran into one last stumbling block this week. I > understand the process a lot better now than I did a few years back > when I was doing it for 4.8, but I'm still having trouble pieceing > together how I get my own package set onto the CD in a usable form. > > I built the release with NO_PORTS=yes, because I'm building the ports > from my own CVS tree, which is a tightly pared down subset of the > /usr/ports CVS, plus locally written software in ports format. I've > ensured that the tree is closed under the dependency operation (to use > some math jargon) - essentially that means that my ports subset includes > all the dependencies of every port I'm including and all of *its* > run/build dependencies in the tree, even if not being built. That > allows the dependency graph to be calculated and the INDEX-6 file to be > built properly. > > However, copying the INDEX-6 file and my private packages hierarchy > into the CD build area doesn't work; I can read them off the CD > post-install but sysinstall doesn't see them. It's not a disaster > because I can always put the CD back in after booting and install them > then, but it would would be nice to get them all zapped in with the > initial install. I'm doing something similar. I work with a complete ports tree and then build a subset of interesting packages (plus required packages). The problem with sysinstall is, that it requires the number of the CD, where the package resides. Since I make sure, that my ISO never exceeds one volume I decided to drop the volume number from the sysinstall INDEX altogether Here's the Makefile targets creating the packages and ISO packages: # prepare lots of stuff # ... .for pkg in ${PACKAGES} chroot ${TLR} /create_packages.sh ${pkg} .endfor ## Build a stripped down INDEX file, usually done by /usr/ports/Tools/scripts/release/scrubindex.pl, yet it would ## require manual handling. We assume all dependant packages are there (we just built them after all), so we simply ## take all lines where we have a package for it. ## First we grab the name of the indexfile (can be INDEX, INDEX-5, INDEX-6, etc.), then we loop over all entries of ## of the global index and test -f if the package was built, if so, we print the line. (INDEX=`sh -c "chroot ${TLR} /usr/bin/make -f /usr/ports/Makefile -V INDEXFILE"`; \ awk -F"|" '{if (system("test -f ${TLR}/usr/ports/packages/All/" $$1 ".tbz") == 0) print $$0}' \ ${TLR}/usr/ports/$$INDEX > ${TFR}/packages/INDEX) cd ${TFR} && find -d packages | cpio --quiet -dumpl ${TRR}/R/cdrom/disc1 iso: # Remove CD_VOLUME from the cdrom.inf, we only ship 'disc 0' echo "CD_VERSION = ${RELEASE}" > ${TRR}/R/cdrom/disc1/cdrom.inf mkisofs -r -J -V '${RELEASE}' -publisher 'Distribution made for 1822direkt' -o ${TFR}.iso \ -b boot/cdboot -no-emul-boot ${TRR}/R/cdrom/disc1 md5 ${TFR}.iso > ${TFR}.iso.md5 hth, Ulrich Spoerlein -- It is better to remain silent and be thought a fool, than to speak, and remove all doubt.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20071026202904.GC1482>