Compare commits
1 Commits
master
...
tmp-snapsh
Author | SHA1 | Date |
---|---|---|
Richard Nelson | 570a17053c |
|
@ -0,0 +1,138 @@
|
|||
#!/bin/sh
|
||||
|
||||
## live-build(7) - System Build Scripts
|
||||
## Copyright (C) 2006-2012 Daniel Baumann <daniel@debian.org>
|
||||
##
|
||||
## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING.
|
||||
## This is free software, and you are welcome to redistribute it
|
||||
## under certain conditions; see COPYING for details.
|
||||
|
||||
Short_date ()
|
||||
{
|
||||
SHORT_DATE="${1}:-${LB_SNAPSHOT}}"
|
||||
# returns the date as YYYYMMDD
|
||||
echo "${SHORT_DATE}" | cut -c 1-8
|
||||
}
|
||||
|
||||
Last_archive_entry ()
|
||||
{
|
||||
# returns the last date link
|
||||
LAST_ENTRY="$(cat /tmp/index.html | grep "$(date +%Y%m)" | sed 's|.*<a href="\([^"]*\)".*$|\1|' | tail -n 1 )"
|
||||
echo "$( echo ${LAST_ENTRY} | sed 's|./||' | sed 's|/||' )"
|
||||
}
|
||||
|
||||
First_archive_entry ()
|
||||
{
|
||||
# returns the 1st date link (1st line is daily-images in daily installer html)
|
||||
FIRST_ENTRY="$(cat /tmp/index.html | grep DIR | sed 's|.*<a href="\([^"]*\)".*$|\1|' | head -n 2 | tail -n 1 )"
|
||||
echo "$( echo ${FIRST_ENTRY} | sed 's|./||' | sed 's|/||' )"
|
||||
}
|
||||
|
||||
Previous_date ()
|
||||
{
|
||||
INITIAL_DATE="${1}"
|
||||
|
||||
# convert date to seconds
|
||||
UNIX_TIME=$(date -d "$INITIAL_DATE" +%s)
|
||||
# one day is 86400 secs
|
||||
#ONE_DAY=$(( 24 * 3600 ))
|
||||
ONE_DAY=86400
|
||||
|
||||
# subtract one day to date
|
||||
PREVIOUS_DATE=$(date -d "$INITIAL_DATE -$ONE_DAY sec" "+%Y%m%d")
|
||||
|
||||
# return previous date
|
||||
echo "${PREVIOUS_DATE}"
|
||||
}
|
||||
|
||||
Dated_archive_entry ()
|
||||
{
|
||||
# returns the link for a specific date
|
||||
WANTED_DATE="${1}:-${LB_SNAPSHOT}}"
|
||||
DATED_ENTRY="$(cat /tmp/index.html | grep "$(Short_date ${WANTED_DATE})" | sed 's|.*<a href="\([^"]*\)".*$|\1|' | tail -n 1 )"
|
||||
echo "$( echo ${DATED_ENTRY} | sed 's|./||' | sed 's|/||' )"
|
||||
}
|
||||
|
||||
Previous_archive_entry ()
|
||||
{
|
||||
# returns the link for the match or the previous entry before specific date
|
||||
FIRST_DATE="$(Short_date $(First_archive_entry))"
|
||||
|
||||
DATE="$(Short_date ${LB_SNAPSHOT})"
|
||||
|
||||
# if there is no daily installer available for
|
||||
# a very old date, then use the oldest daily installer
|
||||
# available, even with kernel mismatch.
|
||||
if [ ${DATE} -le ${FIRST_DATE} ]
|
||||
then
|
||||
DATE=${FIRST_DATE}
|
||||
fi
|
||||
|
||||
while [ "${DATE}" != "${FIRST_DATE}" ]; do
|
||||
LINK=$(cat /tmp/index.html | grep "${DATE}" | sed 's|.*<a href="\([^"]*\)".*$|\1|' )
|
||||
|
||||
if [ -z "${LINK}" ]
|
||||
then
|
||||
# date was not found
|
||||
# try previous date
|
||||
DATE=$(Previous_date "${DATE}")
|
||||
else
|
||||
# a link was found
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# return link to matched date or previous daily installer date,
|
||||
# the 1st one if no other younger d-i for that date was found
|
||||
Dated_archive_entry "${DATE}"
|
||||
}
|
||||
|
||||
Latest_debian_archive_snapshot_available ()
|
||||
{
|
||||
# returns the complete date/time for the link of the latest (last) available debian archive snapshot date
|
||||
wget 'http://snapshot.debian.org/archive/debian/?year='"$(date +%Y)"';month='"$(date +%m)" -O /tmp/index.html && true
|
||||
LAST_ARCHIVE_SNAPSHOT="$(Last_archive_entry)"
|
||||
echo "${LAST_ARCHIVE_SNAPSHOT}"
|
||||
}
|
||||
|
||||
Dated_debian_archive_snapshot ()
|
||||
{
|
||||
# returns the complete date/time for the link of the latest for a specific date in snapshot.debian.org
|
||||
DATE_YEAR="$(Short_date ${LB_SNAPSHOT} | cut -c 1-4 )"
|
||||
DATE_MONTH="$(Short_date ${LB_SNAPSHOT} | cut -c 5-6 )"
|
||||
wget 'http://snapshot.debian.org/archive/debian/?year='"${DATE_YEAR}"';month='"${DATE_MONTH}" -O /tmp/index.html && true
|
||||
LAST_ARCHIVE_SNAPSHOT="$(Dated_archive_entry)"
|
||||
echo "${LAST_ARCHIVE_SNAPSHOT}"
|
||||
}
|
||||
|
||||
Latest_debian_installer_snapshot_available ()
|
||||
{
|
||||
# returns the date-hour for the latest date of debian-installer daily build available for an arch
|
||||
# d-i archive uses different date links
|
||||
wget 'http://d-i.debian.org/daily-images/'"${LIVE_IMAGE_ARCHITECTURE}" -O /tmp/index.html && true
|
||||
LAST_INSTALLER_SNAPSHOT="$(Last_archive_entry)"
|
||||
echo "${LAST_INSTALLER_SNAPSHOT}"
|
||||
}
|
||||
|
||||
Dated_debian_installer_snapshot ()
|
||||
{
|
||||
# returns the date-hour for the specific date of debian-installer daily build available for an arch
|
||||
# d-i archive uses different date links
|
||||
wget 'http://d-i.debian.org/daily-images/'"${LIVE_IMAGE_ARCHITECTURE}" -O /tmp/index.html && true
|
||||
DATED_INSTALLER_SNAPSHOT="$(Dated_archive_entry)"
|
||||
echo "${DATED_INSTALLER_SNAPSHOT}"
|
||||
}
|
||||
|
||||
Available_daily_installer ()
|
||||
{
|
||||
# returns the desired daily d-i date link or the previous existing daily d-i
|
||||
DAILY_INSTALLER="$(Dated_debian_installer_snapshot)"
|
||||
if [ -z "${DAILY_INSTALLER}" ]
|
||||
then
|
||||
# no wanted date was found, download available dates and search previous
|
||||
wget 'http://d-i.debian.org/daily-images/'"${LIVE_IMAGE_ARCHITECTURE}" -O /tmp/index.html && true
|
||||
DAILY_INSTALLER=$(Previous_archive_entry)
|
||||
fi
|
||||
|
||||
echo "${DAILY_INSTALLER}"
|
||||
}
|
|
@ -370,6 +370,19 @@ Set_defaults ()
|
|||
|
||||
## config/bootstrap
|
||||
|
||||
# Setting snapshot.debian.org
|
||||
if [ -n "${LB_SNAPSHOT}" ]
|
||||
then
|
||||
LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP:-http://snapshot.debian.org/archive/debian/${LB_SNAPSHOT}}"
|
||||
LB_PARENT_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP}"
|
||||
LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY:-http://snapshot.debian.org/archive/debian-security/${LB_SNAPSHOT}}"
|
||||
LB_PARENT_MIRROR_CHROOT_SECURITY="${LB_PARENT_MIRROR_CHROOT_SECURITY:-${LB_MIRROR_CHROOT_SECURITY}}"
|
||||
LB_MIRROR_BINARY="${LB_MIRROR_BINARY:-http://snapshot.debian.org/archive/debian/${LB_SNAPSHOT}}"
|
||||
LB_PARENT_MIRROR_BINARY="${LB_PARENT_MIRROR_BINARY:-${LB_MIRROR_BINARY}}"
|
||||
LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY:-http://snapshot.debian.org/archive/debian-security/${LB_SNAPSHOT}}"
|
||||
LB_PARENT_MIRROR_BINARY_SECURITY="${LB_PARENT_MIRROR_BINARY_SECURITY:-${LB_MIRROR_BINARY_SECURITY}}"
|
||||
fi
|
||||
|
||||
# Setting mirror to fetch packages from
|
||||
case "${LB_MODE}" in
|
||||
debian)
|
||||
|
@ -1059,6 +1072,17 @@ Check_defaults ()
|
|||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${LB_SNAPSHOT}" ] && [ "${LB_DEBIAN_INSTALLER}" = "live" ] && [ "${LB_DEBIAN_INSTALLER_DISTRIBUTION}" = "daily" ]
|
||||
then
|
||||
DAILY_LIVE_INSTALLER="$(Dated_debian_installer_snapshot)"
|
||||
# if there is no available daily installer
|
||||
if [ -z "${DAILY_LIVE_INSTALLER}" ]
|
||||
then
|
||||
Echo_warning "You have selected the debian-snapshot option with daily live-installer, but there is no daily live installer available at that date. The selected date was ${LB_SNAPSHOT}"
|
||||
Echo_warning "The last available daily installer before ${LB_SNAPSHOT} will be used. Please check http://d-i.debian.org/daily-images/ to see the oldest daily installer available."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${LB_BOOTLOADER}" = "syslinux" ]
|
||||
then
|
||||
# syslinux + fat or ntfs, or extlinux + ext[234] or btrfs
|
||||
|
|
|
@ -71,7 +71,12 @@ do
|
|||
rm -f chroot/key.asc chroot/key.asc.sig
|
||||
done
|
||||
|
||||
Chroot chroot "apt-get update"
|
||||
if [ -n "${LB_SNAPSHOT}" ]
|
||||
then
|
||||
Chroot chroot "apt-get update -o Acquire::Check-Valid-Until=false"
|
||||
else
|
||||
Chroot chroot "apt-get update"
|
||||
fi
|
||||
|
||||
# Creating stage file
|
||||
Create_stagefile .build/bootstrap_archive-keys
|
||||
|
|
|
@ -54,6 +54,13 @@ case "${1}" in
|
|||
echo "Acquire::http::Proxy \"${LB_APT_HTTP_PROXY}\";" > chroot/etc/apt/apt.conf.d/00http-proxy
|
||||
fi
|
||||
|
||||
# Configuring snapshot.debian.org
|
||||
if [ -n "${LB_SNAPSHOT}" ]
|
||||
then
|
||||
echo '// see bug #595801' > chroot/etc/apt/apt.conf.d/00debian-snapshot
|
||||
echo 'Acquire::Check-Valid-Until "false";' >> chroot/etc/apt/apt.conf.d/00debian-snapshot
|
||||
fi
|
||||
|
||||
# Configuring apt pipeline
|
||||
if [ -n "${LB_APT_PIPELINE}" ]
|
||||
then
|
||||
|
@ -227,6 +234,9 @@ EOF
|
|||
# Deconfiguring aptitude http proxy
|
||||
rm -f chroot/etc/apt/apt.conf.d/00http-proxy
|
||||
|
||||
# Deconfiguring snapshot.debian.org
|
||||
rm -f chroot/etc/apt/apt.conf.d/00debian-snapshot
|
||||
|
||||
# Deconfiguring aptitude pipeline
|
||||
rm -f chroot/etc/apt/apt.conf.d/00pipeline
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ USAGE="${PROGRAM} [--apt apt|aptitude]\n\
|
|||
\t [--debian-installer-distribution daily|CODENAME]\n\
|
||||
\t [--debian-installer-preseedfile FILE|URL]\n\
|
||||
\t [--debian-installer-gui true|false]\n\
|
||||
\t [--snapshot yyyymmdd|yyyymmddThhmmssZ\n\
|
||||
\t [--debug]\n\
|
||||
\t [-d|--distribution CODENAME]\n\
|
||||
\t [--parent-distribution CODENAME]\n\
|
||||
|
@ -147,7 +148,7 @@ Local_arguments ()
|
|||
net-cow-server:,net-tarball:,firmware-binary:,firmware-chroot:,swap-file-path:,swap-file-size:,
|
||||
loadlin:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force,
|
||||
help,ignore-system-defaults,quiet,usage,verbose,version,bootstrap-qemu-static:,bootstrap-qemu-arch:,
|
||||
bootstrap-qemu-exclude:"
|
||||
bootstrap-qemu-exclude:,snapshot:"
|
||||
# Remove spaces added by indentation
|
||||
LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')"
|
||||
ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:s:c:huv --shell sh -- "${@}")"
|
||||
|
@ -300,6 +301,11 @@ Local_arguments ()
|
|||
shift 2
|
||||
;;
|
||||
|
||||
--snapshot)
|
||||
LB_SNAPSHOT="${2}"
|
||||
shift 2
|
||||
;;
|
||||
|
||||
--initramfs)
|
||||
LB_INITRAMFS="${2}"
|
||||
shift 2
|
||||
|
@ -949,6 +955,10 @@ LB_DEBCONF_FRONTEND="${LB_DEBCONF_FRONTEND}"
|
|||
# (Default: ${LB_DEBCONF_PRIORITY})
|
||||
LB_DEBCONF_PRIORITY="${LB_DEBCONF_PRIORITY}"
|
||||
|
||||
# \$LB_SNAPSHOT: set snapshot.debian.org date to use
|
||||
# (Default: empty or not set to not use archive snapshot, or a valid date in snapshot.debian.org URL format)
|
||||
LB_SNAPSHOT="${LB_SNAPSHOT}"
|
||||
|
||||
# \$LB_INITRAMFS: set initramfs hook
|
||||
# (Default: ${LB_INITRAMFS})
|
||||
LB_INITRAMFS="${LB_INITRAMFS}"
|
||||
|
|
|
@ -256,6 +256,11 @@ case "${LB_DERIVATIVE}" in
|
|||
|
||||
# Debian Installer daily builds
|
||||
URL="http://d-i.debian.org/daily-images/${LIVE_IMAGE_ARCHITECTURE}/daily/"
|
||||
# use snapshot installer too
|
||||
if [ -n "${LB_SNAPSHOT}" ]
|
||||
then
|
||||
URL="http://d-i.debian.org/daily-images/${LIVE_IMAGE_ARCHITECTURE}/$(Available_daily_installer)/"
|
||||
fi
|
||||
else
|
||||
URL="${LB_MIRROR_DEBIAN_INSTALLER}/dists/${LB_DEBIAN_INSTALLER_DISTRIBUTION}/main/installer-${LIVE_IMAGE_ARCHITECTURE}/current/images/"
|
||||
fi
|
||||
|
|
Loading…
Reference in New Issue