Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
packaging
univention-pkg-univention-icinga
Commits
364c3c49
Commit
364c3c49
authored
Jan 27, 2014
by
Markus Frosch
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added chroot build scripts
parent
ad1c2021
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
367 additions
and
0 deletions
+367
-0
buildtools/ucs-cowbuilder.sh
buildtools/ucs-cowbuilder.sh
+166
-0
buildtools/ucs3
buildtools/ucs3
+201
-0
No files found.
buildtools/ucs-cowbuilder.sh
0 → 100755
View file @
364c3c49
#!/bin/bash
#
# Cowbuilder for Univention
#
# wrapper script to install a chroot for cowbuilder
#
# Copyright 2014 Icinga Development Team <info@icinga.org>
# 2014 Markus Frosch <markus@lazyfrosch.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# On a Debian system you will find this license at
# /usr/share/common-licenses/GPL-2
##[ CONFIG ]###################################################################
# repository for debootstrap
# this is a path to an extracted installation ISO
#
# please extract the ISOs to that the layout is like this:
#
# $REPO
# |- amd64
# | ` packages
# `- i386
# ` packages
#REPO="http://mirror.mycompany.com/univention/UCS-3.2"
REPO
=
"http://frosch-nb.lazyfrosch.de/~markus/UCS-3.2"
# distribution name
DIST
=
"ucs3"
# root for pbuilder
PBUILDER_ROOT
=
"/var/cache/pbuilder"
# extra repositories, including unmaintained
# NOTE: the unmaintained repos include any -dev package
ONLINEREPOS
=(
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-0/<ARCH>/"
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-0/all/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-0/<ARCH>/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-0/all/"
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-1/<ARCH>/"
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-1/all/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-1/<ARCH>/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-1/all/"
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-2/<ARCH>/"
"deb http://updates.software-univention.de/3.0/maintained/ 3.0-2/all/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-2/<ARCH>/"
"deb http://updates.software-univention.de/3.0/unmaintained/ 3.0-2/all/"
"deb http://updates.software-univention.de/3.1/maintained/ 3.1-0/<ARCH>/"
"deb http://updates.software-univention.de/3.1/maintained/ 3.1-0/all/"
"deb http://updates.software-univention.de/3.1/unmaintained/ 3.1-0/<ARCH>/"
"deb http://updates.software-univention.de/3.1/unmaintained/ 3.1-0/all/"
"deb http://updates.software-univention.de/3.1/maintained/ 3.1-1/<ARCH>/"
"deb http://updates.software-univention.de/3.1/maintained/ 3.1-1/all/"
"deb http://updates.software-univention.de/3.1/unmaintained/ 3.1-1/<ARCH>/"
"deb http://updates.software-univention.de/3.1/unmaintained/ 3.1-1/all/"
"deb http://updates.software-univention.de/3.2/maintained/ 3.2-0/<ARCH>/"
"deb http://updates.software-univention.de/3.2/maintained/ 3.2-0/all/"
"deb http://updates.software-univention.de/3.2/unmaintained/ 3.2-0/<ARCH>/"
"deb http://updates.software-univention.de/3.2/unmaintained/ 3.2-0/all/"
)
##[ FUNCTIONS ]################################################################
# helper for unmounting stuff in the chroot, for leftovers
unmount
()
{
mount
=
"
$BASE$1
"
test
-d
$mount
||
return
0
mount
=
`
readlink
-f
"
$mount
"
`
grep
"
$mount
"
/proc/mounts
||
return
0
echo
"Unmounting
$1
at
$mount
"
umount
"
$mount
"
}
##[ INTERNAL ]#################################################################
if
[
`
id
-u
`
-ne
0
]
;
then
echo
"You are not root, this script must be run as root!"
>
&2
echo
"Trying to sudo myself..."
set
-x
sudo
"
$0
"
"
$@
"
exit
$?
fi
# default architecture
DEFAULT_ARCH
=
`
dpkg
--print-architecture
`
ARCH
=
"
$DEFAULT_ARCH
"
# default arguments
ARGS
=(
"--distribution"
"univention"
)
# parse interesting arguments
MODE
=
"update"
while
[
"
$1
"
!=
""
]
;
do
case
"
$1
"
in
--architecture
)
ARGS
=(
${
ARGS
[@]
}
"
$1
"
)
shift
ARGS
=(
${
ARGS
[@]
}
"
$1
"
)
ARCH
=
"
$1
"
;;
--create
|
--update
|
--build
|
--login
|
--execute
)
MODE
=
"
${
1
#--
}
"
;;
*
)
ARGS
=(
$ARGS
"
$1
"
)
;;
esac
shift
done
# target directory for the chroot
if
[
"
$ARCH
"
!=
"
$DEFAULT_ARCH
"
]
;
then
BASE
=
"
$PBUILDER_ROOT
/base-
${
DIST
}
-
${
ARCH
}
.cow"
else
BASE
=
"
$PBUILDER_ROOT
/base-
${
DIST
}
.cow"
fi
if
[
"
$MODE
"
=
"create"
]
;
then
# make sure mountpoints are gone
unmount /sys
unmount /proc
unmount /run/shm
# remove old base
if
[
-d
"
$BASE
"
]
;
then
echo
"Cleaning up old chroot..."
rm
-rf
"
$BASE
"
fi
# build othermirrors
OTHERMIRRORS
=
""
for
mirror
in
"
${
ONLINEREPOS
[@]
}
"
;
do
mirror
=
"
${
mirror
/<ARCH>/
$ARCH
}
"
OTHERMIRRORS
=
"
$OTHERMIRRORS
|
$mirror
"
done
OTHERMIRRORS
=
"
${
OTHERMIRRORS
#|
}
"
fi
echo
"Creating chroot with cowbuilder..."
if
[
"
$MODE
"
=
"create"
]
;
then
set
-x
/usr/sbin/cowbuilder
--
$MODE
\
--basepath
"
$BASE
"
\
--mirror
"
$REPO
/
$ARCH
/packages"
\
--othermirror
"
$OTHERMIRRORS
"
${
ARGS
[@]
}
else
set
-x
/usr/sbin/cowbuilder
--
$MODE
\
--basepath
"
$BASE
"
${
ARGS
[@]
}
fi
buildtools/ucs3
0 → 100644
View file @
364c3c49
# we will use the functions from the system's debootstrap
#. /usr/share/debootstrap/functions-ucs3
. /usr/share/debootstrap/functions
# set SUITE, because the DVD uses this name
# but we want to use "ucs3" later
SUITE=univention
mirror_style main
download_style apt
finddebs_style from-indices
variants - buildd fakechroot minbase scratchbox
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 () {
required="$(get_debs Priority: required)"
if doing_variant - || doing_variant fakechroot; then
#required="$required $(get_debs Priority: important)"
# ^^ should be getting debconf here somehow maybe
base="$(get_debs Priority: important)"
elif doing_variant buildd || doing_variant scratchbox; then
base="apt $(get_debs Build-Essential: yes)"
elif doing_variant minbase; then
base="apt"
fi
if doing_variant fakechroot; then
# ldd.fake needs binutils
required="$required binutils"
fi
}
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
if doing_variant fakechroot; then
setup_devices_fakechroot
else
setup_devices
fi
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
Status: install ok installed" >> "$TARGET/var/lib/dpkg/status"
touch "$TARGET/var/lib/dpkg/info/${pkg}.list"
}
x_feign_install dpkg
}
second_stage_install () {
x_core_install () {
smallyes '' | in_target dpkg --force-depends --install $(debfor "$@")
}
p () {
baseprog="$(($baseprog + ${1:-1}))"
}
if doing_variant fakechroot; then
setup_proc_fakechroot
elif doing_variant scratchbox; then
true
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-files base-passwd
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..."
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"
progress $bases $bases CONFBASE "Configuring base system"
info BASESUCCESS "Base system installed successfully."
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment