Add jigdo generation support

This commit is contained in:
Anne Bezemer 2002-01-28 23:00:17 +00:00
parent f3cbca11a0
commit b7582144e3
5 changed files with 229 additions and 14 deletions

26
CONF.sh
View File

@ -18,13 +18,16 @@ unset MKISOFS_OPTS
unset EXCLUDE unset EXCLUDE
unset SRCEXCLUDE unset SRCEXCLUDE
unset NORECOMMENDS unset NORECOMMENDS
unset DOJIGDO
unset JIGDOCMD
unset JIGDOTEMPLATEURL
# The debian-cd dir # The debian-cd dir
# Where I am (hoping I'm in the debian-cd dir) # Where I am (hoping I'm in the debian-cd dir)
export BASEDIR=`pwd` export BASEDIR=`pwd`
# Building potato cd set ... # Building woody cd set ...
export CODENAME=woody export CODENAME=woody
# Version number, "2.2 r0", "2.2 r1" etc. # Version number, "2.2 r0", "2.2 r1" etc.
@ -124,3 +127,24 @@ export APTTMP=/ftp/tmp/apt
# Set this if only the required (and NOT the recommended/suggested) packages # Set this if only the required (and NOT the recommended/suggested) packages
# should be added on CDs when a package is added on the CD. # should be added on CDs when a package is added on the CD.
#export NORECOMMENDS=1 #export NORECOMMENDS=1
# Produce jigdo files:
# 0/unset = Don't do jigdo at all, produce only the full iso image.
# 1 = Produce both the iso image and jigdo stuff.
# 2 = Produce ONLY jigdo stuff by piping mkisofs directly into jigdo-file,
# no temporary iso image is created (saves lots of disk space).
# NOTE: The no-temp-iso will not work for (at least) alpha and powerpc
# since they need the actual .iso to make it bootable. For these archs,
# the temp-iso will be generated, but deleted again immediately after the
# jigdo stuff is made; needs temporary space as big as the biggest image.
#export DOJIGDO=2
#
# jigdo-file command & options
# Note: building the cache takes hours, so keep it around for the next run
#export JIGDOCMD="/usr/local/bin/jigdo-file --cache=$HOME/jigdo-cache.db"
#
# HTTP/FTP URL for directory where you intend to make the templates available.
# %ARCH%, if present, will be replaced by $ARCH (or "source"). This only goes
# in the .jigdo files, which you can edit easily if you want.
# No trailing slash.
#export JIGDOTEMPLATEURL="http://this-guy-didnt-configure-debiancd-correctly.com/debian-cd/templates/3.0BETA/%ARCH%"

163
Makefile
View File

@ -61,6 +61,9 @@ endif
ifndef BOOTDISKS ifndef BOOTDISKS
export BOOTDISKS=$(MIRROR)/dists/$(CODENAME)/main/disks-$(ARCH) export BOOTDISKS=$(MIRROR)/dists/$(CODENAME)/main/disks-$(ARCH)
endif endif
ifndef DOJIGDO
export DOJIGDO=0
endif
## Internal variables ## Internal variables
apt=$(BASEDIR)/tools/apt-selection apt=$(BASEDIR)/tools/apt-selection
@ -142,6 +145,17 @@ ifndef NONUS
ok=false ok=false
endif endif
endif endif
# If we do jigdo, we need a command and a URL. If not, make sure we won't.
ifneq "$(DOJIGDO)" "0"
ifndef JIGDOCMD
ok=false
endif
ifndef JIGDOTEMPLATEURL
ok=false
endif
else
export JIGDOCMD=false
endif
default: default:
@echo "Please refer to the README file for more information" @echo "Please refer to the README file for more information"
@ -688,40 +702,151 @@ $(SDIR)/CD1/dists/$(CODENAME)-secured:
$(add_secured); \ $(add_secured); \
done done
# Make file list for jigdo (if DOJIGDO>0)
# "Fake" depend on the unstable Packages.gz to make sure we only regenerate
# this list when really necessary (saves many minutes per run).
# Don't depend on anything else as this will not work as intended, so
# make $(TDIR) ourselves just to be sure.
$(TDIR)/jigdofilelist: $(MIRROR)/dists/unstable/main/binary-i386/Packages.gz
@echo "Generating file list for jigdo (if requested) ..."
$(Q)set -e; \
if [ "$(DOJIGDO)" != 0 ]; then \
mkdir -p $(TDIR); \
find $(MIRROR)//dists $(MIRROR)//doc $(MIRROR)//indices \
$(MIRROR)//pool $(MIRROR)//project $(MIRROR)//tools \
-type f \
| egrep -v '/README|INDEX$$|/Maintainers|/Release$$|/debian-keyring\.tar\.gz$$|/ls-lR|//doc/[^/]+/?[^/]*\.(txt|html)$$' \
> $(TDIR)/jigdofilelist; \
if [ -n "$(NONUS)" ]; then \
find $(NONUS)// -type f \
| egrep -v '/README|INDEX$$|/Maintainers|/Release$$|/debian-keyring\.tar\.gz$$|/ls-lR|//doc/[^/]+/?[^/]*\.(txt|html)$$' \
>> $(TDIR)/jigdofilelist; \
fi; \
fi
# Generates all the images # Generates all the images
images: bin-images src-images images: bin-images src-images
bin-images: ok bin-md5list $(OUT)
# DOJIGDO postboot actions (source has the appropriate subset)
# 0 no isofile
# 0 yes isofile post
# 1 no isofile jigdo jigdoadd
# 1 yes isofile post jigdo jigdoadd
# 2 no isojigdo jigdoadd
# 2 yes isofile post jigdo jigdoadd rmiso
#
bin-images: ok bin-md5list $(OUT) $(TDIR)/jigdofilelist
@echo "Generating the binary iso images ..." @echo "Generating the binary iso images ..."
$(Q)set -e; \ $(Q)set -e; \
for file in $(BDIR)/*.packages; do \ for file in $(BDIR)/*.packages; do \
dir=$${file%%.packages}; \ dir=$${file%%.packages}; \
n=$${dir##$(BDIR)/}; \ n=$${dir##$(BDIR)/}; \
num=$$n; \
dir=$(BDIR)/CD$$n; \ dir=$(BDIR)/CD$$n; \
cd $$dir/..; \ cd $$dir/..; \
opts=`cat $(BDIR)/$$n.mkisofs_opts`; \ opts=`cat $(BDIR)/$$n.mkisofs_opts`; \
volid=`cat $(BDIR)/$$n.volid`; \ volid=`cat $(BDIR)/$$n.volid`; \
rm -f $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw; \ rm -f $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw; \
$(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \ if [ "$(DOJIGDO)" != "2" -o -f $(BASEDIR)/tools/boot/$(CODENAME)/post-boot-$(ARCH) ]; then \
-o $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw $$opts CD$$n ; \ $(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \
if [ -f $(BASEDIR)/tools/boot/$(CODENAME)/post-boot-$(ARCH) ]; then \ -o $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw $$opts CD$$n ; \
$(BASEDIR)/tools/boot/$(CODENAME)/post-boot-$(ARCH) $$n $$dir \ if [ -f $(BASEDIR)/tools/boot/$(CODENAME)/post-boot-$(ARCH) ]; then \
$(OUT)/$(CODENAME)-$(ARCH)-$$n.raw; \ $(BASEDIR)/tools/boot/$(CODENAME)/post-boot-$(ARCH) $$n $$dir \
fi \ $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw; \
fi; \
if [ "$(DOJIGDO)" != "0" ]; then \
$(JIGDOCMD) make-template --force \
--files-from=$(TDIR)/jigdofilelist \
--image=$(OUT)/$(CODENAME)-$(ARCH)-$$n.raw \
--jigdo=$(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo \
--template=$(OUT)/$(CODENAME)-$(ARCH)-$$n.template \
--label Non-US="$(NONUS)" \
--label Debian="$(MIRROR)" \
--no-image-section --no-servers-section \
--report=noprogress; \
fi; \
else \
$(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \
$$opts CD$$n \
| $(JIGDOCMD) make-template --force \
--files-from=$(TDIR)/jigdofilelist \
--image=- \
--jigdo=$(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo \
--template=$(OUT)/$(CODENAME)-$(ARCH)-$$n.template \
--label Non-US="$(NONUS)" \
--label Debian="$(MIRROR)" \
--no-image-section --no-servers-section \
--report=noprogress; \
fi; \
if [ "$(DOJIGDO)" != "0" ]; then \
echo "" >> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
echo "[Image]" \
>> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
echo "Filename=debian-`echo $(DEBVERSION) | sed -e 's/[. ]//g'`-$(ARCH)-binary-$$n.iso" \
>> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
echo "Template=`echo "$(JIGDOTEMPLATEURL)" | sed -e 's|%ARCH%|$(ARCH)|g'`/$(CODENAME)-$(ARCH)-$$n.template" \
>> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
echo "ShortInfo='"$(BINDISKINFOND)" CD'" \
>> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
echo "Info='Generated on `date -R`'" \
>> $(OUT)/$(CODENAME)-$(ARCH)-$$n.jigdo; \
fi; \
if [ "$(DOJIGDO)" = "2" ]; then \
rm -f $(OUT)/$(CODENAME)-$(ARCH)-$$n.raw; \
fi; \
done done
src-images: ok src-md5list $(OUT) src-images: ok src-md5list $(OUT) $(TDIR)/jigdofilelist
@echo "Generating the source iso images ..." @echo "Generating the source iso images ..."
$(Q)set -e; \ $(Q)set -e; \
for file in $(SDIR)/*.sources; do \ for file in $(SDIR)/*.sources; do \
dir=$${file%%.sources}; \ dir=$${file%%.sources}; \
n=$${dir##$(SDIR)/}; \ n=$${dir##$(SDIR)/}; \
num=$$n; \
dir=$(SDIR)/CD$$n; \ dir=$(SDIR)/CD$$n; \
cd $$dir/..; \ cd $$dir/..; \
opts=`cat $(SDIR)/$$n.mkisofs_opts`; \ opts=`cat $(SDIR)/$$n.mkisofs_opts`; \
volid=`cat $(SDIR)/$$n.volid`; \ volid=`cat $(SDIR)/$$n.volid`; \
rm -f $(OUT)/$(CODENAME)-src-$$n.raw; \ rm -f $(OUT)/$(CODENAME)-src-$$n.raw; \
$(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \ if [ "$(DOJIGDO)" != "2" ]; then \
-o $(OUT)/$(CODENAME)-src-$$n.raw $$opts CD$$n ; \ $(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \
-o $(OUT)/$(CODENAME)-src-$$n.raw $$opts CD$$n ; \
if [ "$(DOJIGDO)" != "0" ]; then \
$(JIGDOCMD) make-template --force \
--files-from=$(TDIR)/jigdofilelist \
--image=$(OUT)/$(CODENAME)-src-$$n.raw \
--jigdo=$(OUT)/$(CODENAME)-src-$$n.jigdo \
--template=$(OUT)/$(CODENAME)-src-$$n.template \
--label Non-US="$(NONUS)" \
--label Debian="$(MIRROR)" \
--no-image-section --no-servers-section \
--report=noprogress; \
fi; \
else \
$(MKISOFS) $(MKISOFS_OPTS) -V "$$volid" \
$$opts CD$$n \
| $(JIGDOCMD) make-template --force \
--files-from=$(TDIR)/jigdofilelist \
--image=- \
--jigdo=$(OUT)/$(CODENAME)-src-$$n.jigdo \
--template=$(OUT)/$(CODENAME)-src-$$n.template \
--label Non-US="$(NONUS)" \
--label Debian="$(MIRROR)" \
--no-image-section --no-servers-section \
--report=noprogress; \
fi; \
if [ "$(DOJIGDO)" != "0" ]; then \
echo "" >> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
echo "[Image]" \
>> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
echo "Filename=debian-`echo $(DEBVERSION) | sed -e 's/[. ]//g'`-source-$$n.iso" \
>> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
echo "Template=`echo "$(JIGDOTEMPLATEURL)" | sed -e 's|%ARCH%|source|g'`/$(CODENAME)-src-$$n.template" \
>> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
echo "ShortInfo='"$(SRCDISKINFOND)" CD'" \
>> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
echo "Info='Generated on `date -R`'" \
>> $(OUT)/$(CODENAME)-src-$$n.jigdo; \
fi; \
done done
# Generate the *.list files for the Pseudo Image Kit # Generate the *.list files for the Pseudo Image Kit
@ -754,11 +879,23 @@ src-image: ok src-md5list $(OUT)
-o $(OUT)/$(CODENAME)-src-$(CD).raw $$opts CD$(CD) -o $(OUT)/$(CODENAME)-src-$(CD).raw $$opts CD$(CD)
#Calculate the md5sums for the images #Calculate the md5sums for the images (if available), or get from templates
imagesums: imagesums:
$(Q)cd $(OUT); :> MD5SUMS; for file in `find * -name \*.raw`; do \ $(Q)cd $(OUT); :> MD5SUMS; for file in `find * -name \*.raw`; do \
md5sum $$file >>MD5SUMS; \ md5sum $$file >>MD5SUMS; \
done done; \
for file in `find * -name \*.template`; do \
if [ "`tail --bytes=29 "$$file" | head --bytes=1 | od -tx1 -An | sed -e 's/ //g'`" != 01 ]; then \
echo "Possibly invalid template $$file"; exit 1; \
fi; \
grep -q " $${file%%.template}.raw"'$$' MD5SUMS \
|| echo "`tail --bytes=22 "$$file" | head --bytes=16 | od -tx1 -An | sed -e 's/ //g'` $${file%%.template}.raw" >>MD5SUMS; \
done
# Likewise, the file size can be extracted from the .template with:
# tail --bytes=28 $$file | head --bytes=6 | od -tx1 -An \
# | tr ' abcdef' '\nABCDEF' | tac | tr '\n' ' ' \
# | sed -e 's/ //g; s/^.*$/ibase=16 & /' | tr ' ' '\n' | bc
## MISC TARGETS ## ## MISC TARGETS ##

28
README
View File

@ -26,6 +26,7 @@ Software :
- lynx (for text version of README.html) - lynx (for text version of README.html)
- if you want to generate .list files: tempfile, as included in debianutils - if you want to generate .list files: tempfile, as included in debianutils
>= 1.6 (not absolutely necessary, workaround described in tools/pi-makelist) >= 1.6 (not absolutely necessary, workaround described in tools/pi-makelist)
- if you want to generate jigdo files: jigdo-file (see below)
Other : Other :
- lots of free space on your disks - lots of free space on your disks
- a Debian mirror (on a partition where you can write, if you can't write - a Debian mirror (on a partition where you can write, if you can't write
@ -253,6 +254,33 @@ sources from http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling
Alternatively (and certainly simpler for people using Debian system), the Alternatively (and certainly simpler for people using Debian system), the
isoinfo binary is in the mkisofs package (since Debian potato at least). isoinfo binary is in the mkisofs package (since Debian potato at least).
Jigdo
-----
People wanting to offer the CD images in jigdo format (Jigsaw Download,
the successor to the Pseudo-Image Kit), can indicate so by setting the
DOJIGDO and related variables in CONF.sh. So this is not a target itself,
but a modification of the "images" targets. You can choose only iso
generation (default), only jigdo generation (for highly reduced disk
usage), or both iso and jigdo generation.
Information on jigdo is available at http://www.debian.org/CD/jigdo-cd/
To generate the jigdo files and templates, the "jigdo-file" program is
needed, which is available via that same URL.
Jigdo-file creates and maintains a cache/database file with checksums of
all files on your Debian mirror. The first time, this may take hours to be
generated (use "top" to see what's going on), so it's wise to keep the
cache in your homedir and not delete it ever.
Note that jigdo-file can easily use 60+ MB of working memory, so don't use
this on machines with less than 128 MB RAM.
The MD5SUMS file generated by the "imagesums" target will contain the MD5
checksums of all generated images, regardless of the DOJIGDO setting. If
no full iso image is available, the MD5sum will be extracted from the
.template file. A note in the Makefile shows how the original file size
can be extracted from the .template in a similar way.
About the hook system About the hook system
===================== =====================

25
debian/CONF.sh vendored
View File

@ -14,6 +14,10 @@ unset MKISOFS_OPTS
unset EXCLUDE unset EXCLUDE
unset SRCEXCLUDE unset SRCEXCLUDE
unset NORECOMMENDS unset NORECOMMENDS
unset DOJIGDO
unset JIGDOCMD
unset JIGDOTEMPLATEURL
# The debian-cd dir # The debian-cd dir
export BASEDIR=/usr/share/debian-cd export BASEDIR=/usr/share/debian-cd
@ -118,3 +122,24 @@ export APTTMP=/home/ftp/tmp/apt
# Set this if only the required (and NOT the recommended/suggested) packages # Set this if only the required (and NOT the recommended/suggested) packages
# should be added on CDs when a package is added on the CD. # should be added on CDs when a package is added on the CD.
#export NORECOMMENDS=1 #export NORECOMMENDS=1
# Produce jigdo files:
# 0/unset = Don't do jigdo at all, produce only the full iso image.
# 1 = Produce both the iso image and jigdo stuff.
# 2 = Produce ONLY jigdo stuff by piping mkisofs directly into jigdo-file,
# no temporary iso image is created (saves lots of disk space).
# NOTE: The no-temp-iso will not work for (at least) alpha and powerpc
# since they need the actual .iso to make it bootable. For these archs,
# the temp-iso will be generated, but deleted again immediately after the
# jigdo stuff is made; needs temporary space as big as the biggest image.
#export DOJIGDO=2
#
# jigdo-file command & options
# Note: building the cache takes hours, so keep it around for the next run
#export JIGDOCMD="/usr/local/bin/jigdo-file --cache=$HOME/jigdo-cache.db"
#
# HTTP/FTP URL for directory where you intend to make the templates available.
# %ARCH%, if present, will be replaced by $ARCH (or "source"). This only goes
# in the .jigdo files, which you can edit easily if you want.
# No trailing slash.
#export JIGDOTEMPLATEURL="http://this-guy-didnt-configure-debiancd-correctly.com/debian-cd/templates/3.0BETA/%ARCH%"

1
debian/changelog vendored
View File

@ -1,6 +1,7 @@
debian-cd (2.2.13) unstable; urgency=low debian-cd (2.2.13) unstable; urgency=low
* UNRELEASED. * UNRELEASED.
* Add jigdo generation support (see README).
-- Raphael Hertzog <hertzog@debian.org> Sun, 20 Jan 2002 15:42:29 +0100 -- Raphael Hertzog <hertzog@debian.org> Sun, 20 Jan 2002 15:42:29 +0100