#
# This file will have to be sourced where needed

# To prevent sourcing this file twice when using scripts to build CD images,
# use the following code at the top of your script:
#    CF=CONF.sh
#    . $CF
#    export DEBIAN_CD_CONF_SOURCED=true

# Allow to prevent double sourcing of this file
if [ "$DEBIAN_CD_CONF_SOURCED" = true ]; then
	return 0
fi

# Unset all optional variables first to start from a clean state
unset NONFREE           || true
unset NONFREE_COMPONENTS|| true
unset CONTRIB           || true
unset EXTRANONFREE      || true
unset LOCAL             || true
unset LOCALDEBS         || true
unset SECURITY          || true
unset PROPOSED_UPDATES  || true
unset UNRELEASED        || true
unset BOOTDIR           || true
unset SYMLINK           || true
unset COPYLINK          || true
unset MKISOFS           || true
unset MKISOFS_OPTS      || true
unset ISOLINUX          || true
unset EXCLUDE           || true
unset NORECOMMENDS      || true
unset NOSUGGESTS        || true
unset IMAGESUMS         || true
unset JIGDOTEMPLATEURL  || true
unset JIGDOFALLBACKURLS || true
unset JIGDOINCLUDEURLS  || true
unset JIGDOSCRIPT       || true
unset JIGDO_OPTS        || true
unset PUBLISH_URL       || true
unset PUBLISH_PATH      || true
unset UDEB_INCLUDE      || true
unset UDEB_EXCLUDE      || true
unset BASE_INCLUDE      || true
unset BASE_EXCLUDE      || true
unset INSTALLER_CD      || true
unset MAXCDS            || true
unset MAXISOS           || true
unset MAXJIGDOS         || true
unset SPLASHPNG         || true
unset OMIT_MANUAL	 || true
unset OMIT_RELEASE_NOTES || true
unset OMIT_DOC_TOOLS     || true
unset MAX_PKG_SIZE       || true
unset DEBOOTSTRAP_OPTS   || true
unset ARCHIVE_KEYRING_PACKAGE || true
unset ARCHIVE_KEYRING_FILE    || true

# The debian-cd dir
# Where I am (hoping I'm in the debian-cd dir)
export BASEDIR=`pwd`

# Name of the distribution for the image filename (Defaults to 'debian')
# export CDNAME=debian

# Building $codename cd set ...
export CODENAME=bookworm

# By default use Debian installer packages from $CODENAME
if [ -z "$DI_CODENAME" ]; then
	export DI_CODENAME=$CODENAME
fi
# If you want backported d-i (e.g. by setting
# DI_CODENAME=bookworm-backports, then you'll almost definitely also
# want to enable BACKPORTS below as well

# Should we include some packages from backports? If so, point at a
# file containing a list of binary packages to include here. Packages
# contained in that list will be chosen by preference from
# ${CODENAME}-backports rather than just ${CODENAME}, along with
# dependencies if they're needed as well
#export BACKPORTS=backports-list

# If set, controls where the d-i components are downloaded from.
# This may be an url, or "default", which will make it use the default url
# for the daily d-i builds. If not set, uses the official d-i images from
# the Debian mirror.
#export DI_WWW_HOME=default

# Version number, "10.11.0", "11.1.0", "testing", etc
export DEBVERSION="12.0.0"

# Official or non-official set.
# NOTE: THE "OFFICIAL" DESIGNATION IS ONLY ALLOWED FOR IMAGES AVAILABLE
# ON THE OFFICIAL DEBIAN CD WEBSITE https://cdimage.debian.org
export OFFICIAL="Unofficial"
#export OFFICIAL="Official"
#export OFFICIAL="Official Beta"

# ... for arch
if [ -z "$ARCHES" ]; then
	CPU=`dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null || true`
	if [ -z "$CPU" ]; then
		CPU=`dpkg-architecture -qDEB_HOST_ARCH`
	fi
	KERNEL=`dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null || true`
	if [ -z "$KERNEL" ]; then
		KERNEL=linux
	fi
	if [ $KERNEL = linux ] ; then
		ARCHES=$CPU
	else
		ARCHES="$KERNEL-$CPU"
	fi
	export ARCHES
fi

# IMPORTANT : The 4 following paths must be on the same partition/device.
#	      If they aren't then you must set COPYLINK below to 1. This
#	      takes a lot of extra room to create the sandbox for the ISO
#	      images, however. Also, if you are using an NFS partition for
#	      some part of this, you must use this option.
# Paths to the mirrors
export MIRROR=/srv/mirror/debian

# Path of the temporary directory
export TDIR=/srv/mirror/tmp

# Path where the images will be written
export OUT=/srv/mirror/debian-cd-test

# Where we keep the temporary apt stuff.
# This cannot reside on an NFS mount.
export APTTMP=/srv/mirror/tmp/apt

# Do I want to have NONFREE merged in the CD set?
# export NONFREE=1

# Do I want to have CONTRIB merged in the CD set?
# export CONTRIB=1

# Where should I look for non-free packages?
export NONFREE_COMPONENTS="non-free-firmware"

# Do I want to have NONFREE on separate image(s) at the end set?
# WARNING: Don't use NONFREE and EXTRANONFREE at the same time !
# export EXTRANONFREE=1

# Do I want to force (potentially non-free, depending on the NONFREE_COMPONENTS
# setting) firmware packages to be placed on disc 1? Will make installation
# much easier if systems contain hardware that depends on this firmware
export FORCE_FIRMWARE=1

# If you have a $MIRROR/dists/$CODENAME/local/binary-$ARCH dir with 
# local packages that you want to put on the CD set then
# uncomment the following line 
# export LOCAL=1

# If your local packages are not under $MIRROR, but somewhere else, 
# you can uncomment this line and edit it to point to a directory
# containing:
#  - dists/$CODENAME/local/binary-$ARCH/*.deb
#  - dists/$CODENAME/local/debian-installer/binary-$ARCH/*.udeb
#
# Some metadata must exist for those packages to be considered:
#  - dists/$CODENAME/local/binary-$ARCH/Packages.(gz|xz)
#  - dists/$CODENAME/local/debian-installer/binary-$ARCH/Packages.(gz|xz)
#
# and apt will likely want a top-level Release file as well, and
# possibly uncompressed Packages files as well in each directory:
#  - dists/$CODENAME/Release
#  - dists/$CODENAME/local/binary-$ARCH/Packages
#  - dists/$CODENAME/local/debian-installer/binary-$ARCH/Packages
#
# At least that's what was observed while updating easy-build.sh (which
# has an UPDATE_LOCAL=1 setting, controlling whether to run Packages-gen)
# for year 2023, good luck! -- kibi
#
# export LOCALDEBS=/home/joey/debian/va/debian

# Where to find the security patches.  This directory should be the
# top directory of a security.debian.org mirror.
#export SECURITY="$TOPDIR"/debian/debian-security

# Include proposed updates
# Note that on the CDs it will not be visible where packages came from:
# from the released archive or from proposed updates archive.
# NOTE: intended to be used for pre-release testing, not for publication!
#export PROPOSED_UPDATES=$CODENAME-proposed-updates

# Include packages from Debian Ports unreleased
#export UNRELEASED=1

# Sparc only : bootdir (location of cd.b and second.b)
# export BOOTDIR=/boot

# Symlink farmers should uncomment this line :
# export SYMLINK=1

# Use this to force copying the files instead of symlinking or hardlinking
# them. This is useful if your destination directories are on a different
# partition than your source files.
# export COPYLINK=1

# Choose the checksum algorithm used in jigdo and template
# files. Older jigdo tools can only support md5; but we want to move
# to sha256 as a better checksum. Depends on xorriso 1.5.3+ to support
# sha256
export JIGDO_CHECKSUM="md5"

# Options
# export MKISOFS=mkisofs
# export MKISOFS_OPTS="-r"		#For normal users
# export MKISOFS_OPTS="-r -F ."	#For symlink farmers

# Override for i386 and amd64 to use xorriso instead of
# mkisofs/genisoimage. Allows creation of isohybrid images: ISO images
# that will burn correctly onto a CD and also can be written raw to a
# USB stick. xorriso 0.6.5 and later has working support for this.
#export i386_MKISOFS="xorriso"
#export i386_MKISOFS_OPTS="-as mkisofs -r -checksum_algorithm_iso sha256,sha512"
#export amd64_MKISOFS="xorriso"
#export amd64_MKISOFS_OPTS="-as mkisofs -r -checksum_algorithm_iso sha256,sha512"

export loong64_MKISOFS="xorriso"
export loong64_MKISOFS_OPTS="-as mkisofs -r -checksum_algorithm_iso sha256,sha512"

# amd64 builds will also include 32-bit UEFI files by default, to
# allow for booting on weird machines with 64-bit CPUs but 32-bit
# firmware like Baytrail or some models of Apple iMac. To disable
# this, uncomment the following:
# export DISABLE_UEFI_32=1

# Keyring (defaults):
#export ARCHIVE_KEYRING_PACKAGE=debian-archive-keyring
# The path to the keyring file relative to $TDIR/archive-keyring/
#export ARCHIVE_KEYRING_FILE=usr/share/keyrings/debian-archive-keyring.gpg

# Extra keys that you might want apt to trust. List their fingerprints
# here and debian-cd will grab them from the user's keyring as needed
# (The example here is the bullseye release key)
#export ARCHIVE_EXTRA_KEYS="1F89983E0081FDE018F3CC9673A4F27B8DD47936"

# By default we use debootstrap --no-check-gpg to find out the minimal set
# of packages because there's no reason to not trust the local mirror. But
# you can be paranoid and then you need to indicate the keyring to use to
# validate the mirror.
#export DEBOOTSTRAP_OPTS="--keyring $TDIR/archive-keyring/$ARCHIVE_KEYRING_FILE"

# ISOLinux support for multiboot on CD1 for i386
export ISOLINUX=1

# uncomment this to if you want to see more of what the Makefile is doing
#export VERBOSE_MAKE=1

# The maximum size allowed for an individual package, in bytes; if
# larger than this, it will be excluded (and all dependents, of
# course). We'll create a README.excluded in the root of CD1 listing
# them too
export MAX_PKG_SIZE=600000000

# Should build_all.sh try to build a simple CD image if the proper official
# CD run does not work?
ATTEMPT_FALLBACK=yes

# Set your disk type here. Known types are:
# BC (businesscard): 650 MiB max (should be limited elsewhere,
#                    should never fill a CD anyway)
# NETINST:           650 MiB max (ditto)
# CD:                standard 74-min CD (650 MiB)
# CD700:             (semi-)standard 80-min CD (700 MiB)
# DVD:               standard 4.7 GB DVD
# DLDVD:             standard 8.5 GB dual-layer DVD
# BD:                standard 25 GB blu-ray
# DLBD:              standard 50 GB dual-layer blu-ray
# STICK<X>GB:        <X>GB USB stick or similar
# CUSTOM:            up to you - specify a size to go with it (in 2K blocks)
export DISKTYPE=CD
#export DISKTYPE=CUSTOM
#export CUSTOMSIZE=XXXX
# If you want to over-ride this choice (e.g. to make a larger version of a given disk),
# you can do the following:
# export FORCE_CD_SIZE=<type> to change all the sizes in a given run
# export FORCE_CD_SIZE1=<type> to change the size of disk 1 (only)

# Extra variants to enable. See docs/README.variants for more information.
export VARIANTS=

# We don't want certain packages to take up space on CD1...
#export EXCLUDE1=exclude
# ...but they are okay for other CDs (UNEXCLUDEx == may be included
# on CD x if not already covered)
#export UNEXCLUDE2=unexclude-CD2
# Any packages listed in EXCLUDEx but not in any UNEXCLUDE will be
# excluded completely. The same goes for packages listed in EXCLUDE.

# Set this if the recommended packages should be skipped when adding 
# package on the CD.  The default is 'true'.
# export NORECOMMENDS=1

# Set this if the suggested packages should be skipped when adding 
# package on the CD.  The default is 'true'.
# export NOSUGGESTS=1

# Set to 1 to generate checksum files for generated images
export IMAGESUMS=1

# And define the set of checksum algorithms you want here. Default is
# sha512 sha256
# export CHECKSUMS="sha512 sha256"

# We may have to extract files from packages to put them onto the CD
# (e.g. bootloader files). If you make those packages (and their
# sources) available somewhere, list it here so that README.source
# can point to it. Note that your mirror must have repositories of
# source packages if you enable this option.
# export ARCHIVE_EXTRACTED_SOURCES="https://cdimage.debian.org/cdimage/cd-sources/"

# Produce iso/jigdo files: specify how many iso/jigdo files should be
# produced in your set. If not set or when the value is "ALL" they will
# be created for all images. One of the variables can be set to zero if
# either iso or jigdo files are not wanted.
# Replaces the old "DOJIGDO" setting with something much more flexible.
#export MAXISOS=0
#export MAXJIGDOS=0

# HTTP/FTP URL for directory where you intend to make the templates
# available. You should not need to change this; the default value ""
# means "template in same dir as the .jigdo file", which is usually
# correct. If it is non-empty, it needs a trailing slash. "%ARCH%"
# will be substituted by the current architecture.
#export JIGDOTEMPLATEURL=""
#
# Name of a directory on disc to create data for a fallback server in. 
# Should later be made available by you at the URL given in
# JIGDOFALLBACKURLS. In the directory, two subdirs named "Debian" and
# "Non-US" will be created, and filled with hard links to the actual
# files in your FTP archive. Because of the hard links, the dir must
# be on the same partition as the FTP archive! If unset, no fallback
# data is created, which may cause problems - see README.
#export JIGDOFALLBACKPATH="$(OUT)/snapshot/"
#
# Space-separated list of label->URL mappings for "jigdo fallback
# server(s)" to add to .jigdo file. If unset, no fallback URL is
# added, which may cause problems - see README.
#export JIGDOFALLBACKURLS="Debian=http://myserver/snapshot/Debian/ Non-US=http://myserver/snapshot/Non-US/"
#
# Space-separated list of "include URLs" to add to the .jigdo file. 
# The included files are used to provide an up-to-date list of Debian
# mirrors to the jigdo _GUI_application_ (_jigdo-lite_ doesn't support
# "[Include ...]").
export JIGDOINCLUDEURLS="https://cdimage.debian.org/debian-cd/debian-servers.jigdo"
#
# $JIGDOTEMPLATEURL and $JIGDOINCLUDEURLS are passed to
# "tools/jigdo_header", which is used by default to generate the
# [Image] and [Servers] sections of the .jigdo file. You can provide
# your own script if you need the .jigdo file to contain different
# data.
#export JIGDOSCRIPT="myscript"

# A couple of things used only by publish_cds, so it can tweak the
# jigdo files, and knows where to put the results.
# You need to run publish_cds manually, it is not run by the Makefile.
export PUBLISH_URL="https://cdimage.debian.org/jigdo-area"
export PUBLISH_PATH="/home/jigdo-area/"

# Specify files and directories to *exclude* from jigdo processing. These
# files on each CD are expected to be different to those on the mirror, or
# are often subject to change. Any files matching entries in this list will
# simply be placed straight into the template file.
export JIGDO_EXCLUDE="'README*' /doc/ /md5sum.txt /.disk/ /pics/ 'Release*' 'Packages*' 'Sources*'"

# Specify files that MUST match entries in the externally-supplied
# md5-list. If they do not, the CD build process will fail; something
# must have been corrupted. Replaces the old mirrorcheck code.
export JIGDO_INCLUDE="/pool/"

# Specify the minimum file size to consider for jigdo processing. Any files
# smaller than this will simply be placed straight into the template file.
export JIGDO_OPTS="-jigdo-min-file-size 1024"

for EXCL in $JIGDO_EXCLUDE; do
	JIGDO_OPTS="$JIGDO_OPTS -jigdo-exclude $EXCL"
done

for INCL in $JIGDO_INCLUDE; do
	JIGDO_OPTS="$JIGDO_OPTS -jigdo-force-md5 $INCL"
done

# Base link for snapshot.debian.org or similar
# "SNAPDATETIME" will be replaced at runtime with the correct data
# Leave this unset to not add this entry
export SNAPURL=Debian=https://snapshot.debian.org/archive/debian/SNAPDATETIME/

# File with list of packages to include when fetching modules for the
# first stage installer (debian-installer). One package per line.
# Lines starting with '#' are comments.  The package order is
# important, as the packages will be installed in the given order.
#export UDEB_INCLUDE="$BASEDIR"/data/$CODENAME/udeb_include

# File with list of packages to exclude as above.
#export UDEB_EXCLUDE="$BASEDIR"/data/$CODENAME/udeb_exclude

# File with list of packages to include when running debootstrap from
# the first stage installer (currently only supported in
# debian-installer). One package per line.  Lines starting with '#'
# are comments.  The package order is important, as the packages will
# be installed in the given order.
#export BASE_INCLUDE="$BASEDIR"/data/$CODENAME/base_include

# File with list of packages to exclude as above.
#export BASE_EXCLUDE="$BASEDIR"/data/$CODENAME/base_exclude

# Only put the installer onto the cd (set NORECOMMENDS,... as well,
# and if you're not using build.sh then also make sure you set TASK
# appropriately here)
# INSTALLER_CD=0: nothing special (default)
# INSTALLER_CD=1: just add debian-installer (use TASK=debian-installer)
# INSTALLER_CD=2: add d-i and base (use TASK=debian-installer+kernel)
#export INSTALLER_CD=2
#export TASK=debian-installer+kernel

# Parameters to pass to kernel (or d-i) when the CD boots. Not currently
# supported for all architectures.
#export KERNEL_PARAMS="DEBCONF_PRIORITY=critical"

# Default desktop (currently only used by win32-loader)
#export DESKTOP=kde

# If set, limits the number of images to produce. The maximum
# value of MAXISOS and MAXJIGDOS are limited to this setting.
#export MAXCDS=1

# If set, overrides the boot picture used.
#export SPLASHPNG="$BASEDIR/data/$CODENAME/splash-img.png"

# Set to 1 to save space by omitting the installation manual. 
# If so the README will link to the manual on the web site.
#export OMIT_MANUAL=1

# Set to 1 to save space by omitting the release notes
# If so we will link to them on the web site.
export OMIT_RELEASE_NOTES=1

# Set this to override the default location
#export RELEASE_NOTES_LOCATION="https://www.debian.org/releases/$CODENAME"

# Set to 1 to not include the doc/tools directories on CD1
# Useful to save space and avoids failures if you have a mirror
# without those directories.
#export OMIT_DOC_TOOLS=1

case "$OFFICIAL" in
    "Official")
	export OFFICIAL_VAL=2
	;;
    "Official Beta")
	export OFFICIAL_VAL=1
	;;
    *)
	export OFFICIAL_VAL=0
	;;
esac

# Add options to wget to include support for the Debian CA, so
# https://d-i.debian.org et al will work.
if [ -d "/etc/ssl/ca-debian" ]; then
	export WGET_OPTS="--ca-directory /etc/ssl/ca-debian/"
fi
export WGET="wget $WGET_OPTS"

# Run the make_image step in parallel? Specify the number of calls to
# use in parallel here if desired. Don't go too high - this *will*
# thrash your IO!
#export PARALLEL_MAKE_IMAGE=4

# Set this to force the Release file(s) to say "stable". Used in first
# Etch builds to allow us to build before the archive updated
#EARLY_BUILD_HACK=1

##################################
# LOCAL HOOK DEFINITIONS
##################################
#
# Set these to point to scripts/programs to be called at various 
# points in the debian-cd image-making process. This is the ideal place
# to customise what's on the CDs, for example to add extra files or
# modify existing ones. Each will be called with the arguments in order:
#
# $TDIR (the temporary dir containing the build tree)
# $MIRROR (the location of the mirror)
# $DISKNUM (the image number in the set)
# $CDDIR (the root of the temp disc tree)
# $ARCHES (the set of architectures chosen)
#
# BE CAREFUL about what you do at each point: in the first couple of 
# cases, files and directories you're looking to use may not exist yet,
# you may need to worry about adding entries into md5sum.txt yourself
# and (in the last couple of cases) if you add any extra files you may
# end up over-filling the disc. If you *do* need to add files at the end
# of the process, see RESERVED_BLOCKS_HOOK below. It's strongly
# recommended to do this kind of customisation up-front if you can, it's
# much simpler that way!

# The disc_start hook. This will be called near the beginning of the
# start_new_disc script, just after the directory tree has been created
# but before any files have been added
#export DISC_START_HOOK=/bin/true

# The disc_pkg hook. This will be called just after the
# start_new_disc script has finished, just before make_disc_trees.pl
# starts to add package files.
#export DISC_PKG_HOOK=/bin/true

# The reserved_blocks hook; if set, this script should print the
# number of 2K blocks that need to be reserved for data to be added
# *after* a disc tree is filled with packages.
#export RESERVED_BLOCKS_HOOK=/bin/true

# The disc_finish hook. This will be called once a disc image is full,
# just after the last package rollback but before the last bits of
# cleanup are done on the temp disc tree
#export DISC_FINISH_HOOK=/bin/true

# The disc_end hook. This will be called *right* at the end of the
# image-making process in make_disc_trees.pl.
#export DISC_END_HOOK=/bin/true
