Skip to content

Commit

Permalink
Deprecate Debian 10 (#165)
Browse files Browse the repository at this point in the history
* Deprecate Debian 10

Signed-off-by: Carlos Rodríguez Hernández <carlosrh@vmware.com>

* Change debootstrap

Signed-off-by: Carlos Rodríguez Hernández <carlosrh@vmware.com>

* Remove buster from checks

Signed-off-by: Carlos Rodríguez Hernández <carlosrh@vmware.com>

* Update bullseye

Signed-off-by: Carlos Rodríguez Hernández <carlosrh@vmware.com>

---------

Signed-off-by: Carlos Rodríguez Hernández <carlosrh@vmware.com>
  • Loading branch information
carrodher authored Jul 1, 2024
1 parent 574527a commit a76f97d
Show file tree
Hide file tree
Showing 9 changed files with 233 additions and 239 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
needs: [ shellcheck ]
strategy:
matrix:
dist: [buster, bullseye, bookworm]
dist: [bullseye, bookworm]
arch: [amd64, arm64]

name: Build ${{ matrix.dist }} on ${{ matrix.arch }}
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:
- uses: actions/checkout@v3
- name: Push Manifests
run: |
DISTS="buster bullseye bookworm latest" bash pushmanifest
DISTS="bullseye bookworm latest" bash pushmanifest
# If the CI Pipeline does not succeed we should notify the interested agents
slack-notif:
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ We provide a Makefile to help you build Minideb locally. It should be run on a D
$ sudo make
```

To build an individual release (buster, bullseye, or bookworm)
To build an individual release (bullseye or bookworm)
```
$ sudo make bookworm
```
Expand Down
3 changes: 1 addition & 2 deletions buildall
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@ set -o pipefail

arch=${1:-"amd64 arm64"}

dist="buster
bullseye
dist="bullseye
bookworm
"
for a in $arch; do
Expand Down
2 changes: 1 addition & 1 deletion debootstrap/bookworm
1 change: 0 additions & 1 deletion debootstrap/bullseye

This file was deleted.

226 changes: 226 additions & 0 deletions debootstrap/bullseye
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
mirror_style release
download_style apt
finddebs_style from-indices
variants - container fakechroot
keyring /usr/share/keyrings/debian-archive-keyring.gpg

if doing_variant fakechroot; then
test "$FAKECHROOT" = "true" || error 1 FAKECHROOTREQ "This variant requires fakechroot environment to be started"
fi

case $ARCH in
alpha|ia64) LIBC="libc6.1" ;;
kfreebsd-*) LIBC="libc0.1" ;;
hurd-*) LIBC="libc0.3" ;;
*) LIBC="libc6" ;;
esac

work_out_debs () {
# adduser in case users want to add a user to run as non-root
# base-files as it has many important files
# base-passwd to get user account info
# bash because users will often shell in
# bsdutils because it has some commands used in postinst
# - particularly `logger` for `mysql-server` see
# https://github.com/bitnami/minideb/issues/16
# coreutils for many very common utilities
# dash for a shell for scripts
# debian-archive-keyring to verify apt packages
# diffutils for diff as required for installing the system
# (could maybe be removed after, but diffing is pretty common in debugging)
# dpkg for dpkg
# findutils for find as required for installing the system
# grep as it is a very common debugging tool
# gzip as decompressing zip is super common
# hostname ?
# libc-bin for ldconfig
# login as su maybe used if run as non root (?)
# lsb-base ?
# mawk as it is used by dpkg
# ncurses-base for terminfo files as docker sets TERM=xterm
# see https://github.com/bitnami/minideb/issues/17
# passwd for managing user accounts if run as non-root.
# sed as a very commonly used tool
# sysv-rc for update-rc.d, required when installing initscripts in postinsts
# tar as uncompressing tarballs is super common when installing things.
# tzdata for handling timezones
# util-linux for getopt
# mount is required for mounting /proc during debootstrap
required="adduser base-files base-passwd bash bsdutils coreutils dash debian-archive-keyring diffutils dpkg findutils grep gzip hostname init-system-helpers libc-bin login lsb-base mawk ncurses-base passwd sed sysv-rc tar tzdata util-linux mount"

base="apt"

if doing_variant fakechroot; then
# ldd.fake needs binutils
required="$required binutils"
fi

case $MIRRORS in
https://*)
base="$base apt-transport-https ca-certificates"
;;
esac
}

first_stage_install () {
extract $required

mkdir -p "$TARGET/var/lib/dpkg"
: >"$TARGET/var/lib/dpkg/status"
: >"$TARGET/var/lib/dpkg/available"

setup_etc
if [ ! -e "$TARGET/etc/fstab" ]; then
echo '# UNCONFIGURED FSTAB FOR BASE SYSTEM' > "$TARGET/etc/fstab"
chown 0:0 "$TARGET/etc/fstab"; chmod 644 "$TARGET/etc/fstab"
fi

setup_devices

x_feign_install () {
local pkg="$1"
local deb="$(debfor $pkg)"
local ver="$(extract_deb_field "$TARGET/$deb" Version)"

mkdir -p "$TARGET/var/lib/dpkg/info"

echo \
"Package: $pkg
Version: $ver
Maintainer: unknown
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"

touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
}

x_feign_install dpkg
}

second_stage_install () {
setup_dynamic_devices

x_core_install () {
smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
}

p () {
baseprog="$(($baseprog + ${1:-1}))"
}

if doing_variant fakechroot; then
setup_proc_fakechroot
else
setup_proc
in_target /sbin/ldconfig
fi

DEBIAN_FRONTEND=noninteractive
DEBCONF_NONINTERACTIVE_SEEN=true
export DEBIAN_FRONTEND DEBCONF_NONINTERACTIVE_SEEN

baseprog=0
bases=7

p; progress $baseprog $bases INSTCORE "Installing core packages" #1
info INSTCORE "Installing core packages..."

p; progress $baseprog $bases INSTCORE "Installing core packages" #2
ln -sf mawk "$TARGET/usr/bin/awk"
x_core_install base-passwd
x_core_install base-files
p; progress $baseprog $bases INSTCORE "Installing core packages" #3
x_core_install dpkg

if [ ! -e "$TARGET/etc/localtime" ]; then
ln -sf /usr/share/zoneinfo/UTC "$TARGET/etc/localtime"
fi

if doing_variant fakechroot; then
install_fakechroot_tools
fi

p; progress $baseprog $bases INSTCORE "Installing core packages" #4
x_core_install $LIBC

p; progress $baseprog $bases INSTCORE "Installing core packages" #5
x_core_install perl-base

p; progress $baseprog $bases INSTCORE "Installing core packages" #6
rm "$TARGET/usr/bin/awk"
x_core_install mawk

p; progress $baseprog $bases INSTCORE "Installing core packages" #7
if doing_variant -; then
x_core_install debconf
fi

baseprog=0
bases=$(set -- $required; echo $#)

info UNPACKREQ "Unpacking required packages..."

exec 7>&1

smallyes '' |
(repeatn 5 in_target_failmsg UNPACK_REQ_FAIL_FIVE "Failure while unpacking required packages. This will be attempted up to five times." "" \
dpkg --status-fd 8 --force-depends --unpack $(debfor $required) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKREQ "Unpacking required packages" UNPACKING

info CONFREQ "Configuring required packages..."

echo \
"#!/bin/sh
exit 101" > "$TARGET/usr/sbin/policy-rc.d"
chmod 755 "$TARGET/usr/sbin/policy-rc.d"

mv "$TARGET/sbin/start-stop-daemon" "$TARGET/sbin/start-stop-daemon.REAL"
echo \
"#!/bin/sh
echo
echo \"Warning: Fake start-stop-daemon called, doing nothing\"" > "$TARGET/sbin/start-stop-daemon"
chmod 755 "$TARGET/sbin/start-stop-daemon"

setup_dselect_method apt

smallyes '' |
(in_target_failmsg CONF_REQ_FAIL "Failure while configuring required packages." "" \
dpkg --status-fd 8 --configure --pending --force-configure-any --force-depends 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFREQ "Configuring required packages" CONFIGURING

baseprog=0
bases="$(set -- $base; echo $#)"

info UNPACKBASE "Unpacking the base system..."

setup_available $required $base
done_predeps=
while predep=$(get_next_predep); do
# We have to resolve dependencies of pre-dependencies manually because
# dpkg --predep-package doesn't handle this.
predep=$(without "$(without "$(resolve_deps $predep)" "$required")" "$done_predeps")
# XXX: progress is tricky due to how dpkg_progress works
# -- cjwatson 2009-07-29
p; smallyes '' |
in_target dpkg --force-overwrite --force-confold --skip-same-version --install $(debfor $predep)
base=$(without "$base" "$predep")
done_predeps="$done_predeps $predep"
done

smallyes '' |
(repeatn 5 in_target_failmsg INST_BASE_FAIL_FIVE "Failure while installing base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-overwrite --force-confold --skip-same-version --unpack $(debfor $base) 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases UNPACKBASE "Unpacking base system" UNPACKING

info CONFBASE "Configuring the base system..."

smallyes '' |
(repeatn 5 in_target_failmsg CONF_BASE_FAIL_FIVE "Failure while configuring base packages. This will be re-attempted up to five times." "" \
dpkg --status-fd 8 --force-confold --skip-same-version --configure -a 8>&1 1>&7 || echo EXITCODE $?) |
dpkg_progress $baseprog $bases CONFBASE "Configuring base system" CONFIGURING

mv "$TARGET/sbin/start-stop-daemon.REAL" "$TARGET/sbin/start-stop-daemon"
rm -f "$TARGET/usr/sbin/policy-rc.d"

progress $bases $bases CONFBASE "Configuring base system"
info BASESUCCESS "Base system installed successfully."
}
Loading

0 comments on commit a76f97d

Please sign in to comment.