Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate Debian 10 #165

Merged
merged 4 commits into from
Jul 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading