Re: Creating install CD with custom ports - how to massage INDEX file?
- From: Ulrich Spoerlein <uspoerlein@xxxxxxxxx>
- Date: Fri, 26 Oct 2007 22:29:04 +0200
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.
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- References:
- Creating install CD with custom ports - how to massage INDEX file?
- From: Clifton Royston
- Creating install CD with custom ports - how to massage INDEX file?
- Prev by Date: Re: boot loader
- Next by Date: Re: A more tenuously package-related question
- Previous by thread: Re: Creating install CD with custom ports - how to massage INDEX file?
- Next by thread: Re: Creating install CD with custom ports - how to massage INDEX file?
- Index(es):
Relevant Pages
|
|