diff --git a/Makefile b/Makefile
index fa3327d1..b739ab1f 100644
--- a/Makefile
+++ b/Makefile
@@ -31,9 +31,9 @@ help:
@echo "docs-clean clean documentation"
@echo "clean clean"
-DOCS_SRC_DIR=./docs/src
-SPEECHDIR=./docs/speeches
-TYPEDIR=./cdist/conf/type
+DOCS_SRC_DIR=docs/src
+SPEECHDIR=docs/speeches
+TYPEDIR=cdist/conf/type
SPHINXM=make -C $(DOCS_SRC_DIR) man
SPHINXH=make -C $(DOCS_SRC_DIR) html
diff --git a/bin/build-helper b/bin/build-helper
index 9a776491..00fe4ec7 100755
--- a/bin/build-helper
+++ b/bin/build-helper
@@ -23,8 +23,9 @@
#
usage() {
- printf "usage: %s TARGET [TARGET-ARGS...]
+ printf "usage: %s TARGET RUN-AS
Available targets:
+ print-runas
changelog-changes
changelog-version
check-date
@@ -57,29 +58,64 @@ usage() {
version
target-version
clean
- distclean\n" "$1"
+ distclean
+ Run as:
+ nico
+ darko - default, if empty string specified\n" "$1"
}
basename="${0##*/}"
-if [ $# -lt 1 ]
+if [ $# -lt 2 ]
then
usage "${basename}"
exit 1
fi
option=$1; shift
+run_as="$1"; shift
+
+case "$run_as" in
+ nico)
+ from_a=nico.schottelius
+ from_d=ungleich.ch
+ ml_name="Nico Schottelius"
+ ml_sig_name="Nico"
+ ;;
+ darko|'')
+ from_a=darko.poljak
+ from_d=gmail.com
+ ml_name="Darko Poljak"
+ ml_sig_name="Darko"
+ if [ -z "${run_as}" ]
+ then
+ run_as="darko"
+ fi
+ ;;
+ *)
+ printf "Unsupported RUN-AS value: '%s'.\n" "${run_as}" >&2
+ usage "${basename}"
+ exit 1
+ ;;
+esac
SHELLCHECKCMD="shellcheck -s sh -f gcc -x"
# Skip SC2154 for variables starting with __ since such variables are cdist
# environment variables.
SHELLCHECK_SKIP=': __.*is referenced but not assigned.*\[SC2154\]'
+to_a="cdist-configuration-management"
+to_d="googlegroups.com"
+
# Change to checkout directory
basedir="${0%/*}/../"
cd "$basedir"
case "$option" in
+ print-runas)
+ printf "run_as: '%s'\n" "$run_as"
+ ;;
+
changelog-changes)
if [ "$#" -eq 1 ]; then
start=$1
@@ -123,7 +159,7 @@ case "$option" in
;;
check-unittest)
- "$0" test
+ "$0" test "${run_as}"
;;
ml-release)
@@ -132,10 +168,20 @@ case "$option" in
exit 1
fi
+ # Send mail only once - lock until new changelog things happened.
+ [ ! -f .lock-ml ] && touch .lock-ml
+ x=$(find 'docs' -name changelog -type f -newer .lock-ml)
+ [ -z "${x}" ] && exit 0
+
version=$1; shift
+ to=${to_a}@${to_d}
+ from=${from_a}@${from_d}
+
(
cat << eof
+From: ${ml_name} <$from>
+To: cdist mailing list <$to>
Subject: cdist $version has been released
Hello .*,
@@ -144,11 +190,23 @@ cdist $version has been released with the following changes:
eof
- "$0" changelog-changes "$version"
+ "$0" changelog-changes "${run_as}" "$version"
cat << eof
+Cheers,
+${ml_sig_name}
+
+--
+Automatisation at its best level. With cdist.
eof
) > mailinglist.tmp
+
+ if [ "$run_as" = "nico" ]
+ then
+ /usr/sbin/sendmail -f "$from" "$to" < mailinglist.tmp && rm -f mailinglist.tmp
+ fi
+
+ touch .lock-ml
;;
archlinux-release)
@@ -167,7 +225,7 @@ eof
pypi-release)
# Ensure that pypi release has the right version
- "$0" version
+ "$0" version "${run_as}"
make docs-clean
make docs
@@ -175,7 +233,7 @@ eof
;;
release-git-tag)
- target_version=$($0 changelog-version)
+ target_version=$($0 changelog-version "${run_as}")
if git rev-parse --verify "refs/tags/${target_version}" 2>/dev/null; then
printf "Tag for %s exists, aborting\n" "${target_version}"
exit 1
@@ -229,7 +287,7 @@ eof
git archive --prefix="cdist-${tag}/" -o "${archivename}" "${tag}" \
|| exit 1
# make sure target version is generated
- "$0" target-version
+ "$0" target-version "${run_as}"
tar -x -f "${archivename}" || exit 1
cp cdist/version.py "cdist-${tag}/cdist/version.py" || exit 1
tar -c -f "${archivename}" "cdist-${tag}/" || exit 1
@@ -259,7 +317,7 @@ eof
| sed "${sed_cmd}") || exit 1
# make release
- changelog=$("$0" changelog-changes "$1" | sed 's/^[[:space:]]*//')
+ changelog=$("$0" changelog-changes "${run_as}" "$1" | sed 's/^[[:space:]]*//')
release_notes=$(
printf "%s\n\n%s\n\n**Changelog**\n\n%s\n" \
"${response_archive}" "${response_archive_sig}" "${changelog}"
@@ -280,19 +338,19 @@ eof
release)
set -e
- target_version=$($0 changelog-version)
- target_branch=$($0 version-branch)
+ target_version=$($0 changelog-version "${run_as}")
+ target_branch=$($0 version-branch "${run_as}")
printf "Beginning release process for %s\n" "${target_version}"
# First check everything is sane
- "$0" check-date
- "$0" check-unittest
- "$0" check-pycodestyle
- "$0" check-shellcheck
+ "$0" check-date "${run_as}"
+ "$0" check-unittest "${run_as}"
+ "$0" check-pycodestyle "${run_as}"
+ "$0" check-shellcheck "${run_as}"
# Generate version file to be included in packaging
- "$0" target-version
+ "$0" target-version "${run_as}"
# Ensure the git status is clean, else abort
if ! git diff-index --name-only --exit-code HEAD ; then
@@ -327,8 +385,8 @@ eof
fi
# Verify that after the merge everything works
- "$0" check-date
- "$0" check-unittest
+ "$0" check-date "${run_as}"
+ "$0" check-unittest "${run_as}"
# Generate documentation (man and html)
# First, clean old generated docs
@@ -339,7 +397,7 @@ eof
# Everything green, let's do the release
# Tag the current commit
- "$0" release-git-tag
+ "$0" release-git-tag "${run_as}"
# Also merge back the version branch
if [ "$masterbranch" = yes ]; then
@@ -348,28 +406,37 @@ eof
fi
# Publish git changes
- # if you want to have mirror locally then uncomment this and comment below
+ # if you want to have mirror locally then uncomment this support
+ # if [ "$run_as" = "nico" ]
+ # then
# git push --mirror
+ # else
+ # if we are not Nico :) then just push, no mirror
git push
# push also new branch and set up tracking
git push -u origin "${target_branch}"
# fi
# Create and publish package for pypi
- "$0" pypi-release
+ "$0" pypi-release "${run_as}"
+
+ if [ "$run_as" = "nico" ]
+ then
+ # Archlinux release is based on pypi
+ "$0" archlinux-release "${run_as}"
+ fi
# sign git tag
printf "Enter upstream repository authentication token: "
read -r token
- "$0" sign-git-release "${target_version}" "${token}"
+ "$0" sign-git-release "${run_as}" "${target_version}" "${token}"
# Announce change on ML
- "$0" ml-release "${target_version}"
+ "$0" ml-release "${run_as}" "${target_version}"
cat << eof
Manual steps post release:
- cdist-web
- - send mail body generated in mailinglist.tmp and inform Dmitry for deb
- twitter
eof
;;
@@ -409,7 +476,7 @@ eof
;;
check-pycodestyle)
- "$0" pycodestyle
+ "$0" pycodestyle "${run_as}"
printf "\\nPlease review pycodestyle report.\\n"
while true
do
@@ -451,24 +518,24 @@ eof
;;
shellcheck-scripts)
- ${SHELLCHECKCMD} scripts/cdist-dump scripts/cdist-new-type || exit 0
+ ${SHELLCHECKCMD} scripts/cdist-dump || exit 0
;;
shellcheck-gencodes)
- "$0" shellcheck-local-gencodes
- "$0" shellcheck-remote-gencodes
+ "$0" shellcheck-local-gencodes "${run_as}"
+ "$0" shellcheck-remote-gencodes "${run_as}"
;;
shellcheck-types)
- "$0" shellcheck-type-explorers
- "$0" shellcheck-manifests
- "$0" shellcheck-gencodes
+ "$0" shellcheck-type-explorers "${run_as}"
+ "$0" shellcheck-manifests "${run_as}"
+ "$0" shellcheck-gencodes "${run_as}"
;;
shellcheck)
- "$0" shellcheck-global-explorers
- "$0" shellcheck-types
- "$0" shellcheck-scripts
+ "$0" shellcheck-global-explorers "${run_as}"
+ "$0" shellcheck-types "${run_as}"
+ "$0" shellcheck-scripts "${run_as}"
;;
shellcheck-type-files)
@@ -476,8 +543,8 @@ eof
;;
shellcheck-with-files)
- "$0" shellcheck
- "$0" shellcheck-type-files
+ "$0" shellcheck "${run_as}"
+ "$0" shellcheck-type-files "${run_as}"
;;
shellcheck-build-helper)
@@ -485,7 +552,7 @@ eof
;;
check-shellcheck)
- "$0" shellcheck
+ "$0" shellcheck "${run_as}"
printf "\\nPlease review shellcheck report.\\n"
while true
do
@@ -507,7 +574,7 @@ eof
;;
version-branch)
- "$0" changelog-version | cut -d. -f '1,2'
+ "$0" changelog-version "${run_as}" | cut -d. -f '1,2'
;;
version)
@@ -515,7 +582,7 @@ eof
;;
target-version)
- target_version=$($0 changelog-version)
+ target_version=$($0 changelog-version "${run_as}")
printf "VERSION = \"%s\"\n" "${target_version}" > cdist/version.py
;;
@@ -538,7 +605,7 @@ eof
;;
distclean)
- "$0" clean
+ "$0" clean "${run_as}"
rm -f cdist/version.py
;;
*)
diff --git a/cdist/argparse.py b/cdist/argparse.py
index 421d1b54..6c1ee02a 100644
--- a/cdist/argparse.py
+++ b/cdist/argparse.py
@@ -5,10 +5,12 @@ import logging
import collections
import functools
import cdist.configuration
+import cdist.trigger
+import cdist.preos
# set of beta sub-commands
-BETA_COMMANDS = set(('install', 'inventory', ))
+BETA_COMMANDS = set(('install', 'inventory', 'preos', 'trigger', ))
# set of beta arguments for sub-commands
BETA_ARGS = {
'config': set(('tag', 'all_tagged_hosts', 'use_archiving', )),
@@ -422,6 +424,9 @@ def get_parsers():
parser['inventory'].set_defaults(
func=cdist.inventory.Inventory.commandline)
+ # PreOs
+ parser['preos'] = parser['sub'].add_parser('preos', add_help=False)
+
# Shell
parser['shell'] = parser['sub'].add_parser(
'shell', parents=[parser['loglevel']])
@@ -431,6 +436,28 @@ def get_parsers():
' should be POSIX compatible shell.'))
parser['shell'].set_defaults(func=cdist.shell.Shell.commandline)
+ # Trigger
+ parser['trigger'] = parser['sub'].add_parser(
+ 'trigger', parents=[parser['loglevel'],
+ parser['beta'],
+ parser['common'],
+ parser['config_main']])
+ parser['trigger'].add_argument(
+ '-D', '--directory', action='store', required=False,
+ help=('Where to create local files'))
+ parser['trigger'].add_argument(
+ '-H', '--http-port', action='store', default=3000, required=False,
+ help=('Create trigger listener via http on specified port'))
+ parser['trigger'].add_argument(
+ '--ipv6', default=False,
+ help=('Listen to both IPv4 and IPv6 (instead of only IPv4)'),
+ action='store_true')
+ parser['trigger'].add_argument(
+ '-O', '--source', action='store', required=False,
+ help=('Which file to copy for creation'))
+
+ parser['trigger'].set_defaults(func=cdist.trigger.Trigger.commandline)
+
for p in parser:
parser[p].epilog = EPILOG
diff --git a/cdist/conf/type/__acl/explorer/checks b/cdist/conf/type/__acl/explorer/missing_users_groups
similarity index 58%
rename from cdist/conf/type/__acl/explorer/checks
rename to cdist/conf/type/__acl/explorer/missing_users_groups
index 70bb0412..b4af614c 100755
--- a/cdist/conf/type/__acl/explorer/checks
+++ b/cdist/conf/type/__acl/explorer/missing_users_groups
@@ -18,22 +18,30 @@
# along with cdist. If not, see .
#
-# TODO check if filesystem has ACL turned on etc
+[ ! -e "/$__object_id" ] && exit 0
-if [ -f "$__object/parameter/acl" ]
-then
- grep -E '^(default:)?(user|group):' "$__object/parameter/acl" \
- | while read -r acl
+for parameter in user group
+do
+ if [ ! -f "$__object/parameter/$parameter" ]
+ then
+ continue
+ fi
+
+ while read -r acl
do
- param="$( echo "$acl" | awk -F: '{print $(NF-2)}' )"
- check="$( echo "$acl" | awk -F: '{print $(NF-1)}' )"
+ check="$( echo "$acl" | awk -F: '{print $1}' )"
- [ "$param" = 'user' ] && db=passwd || db="$param"
-
- if ! getent "$db" "$check" > /dev/null
+ if [ "$parameter" = 'user' ]
then
- echo "missing $param '$check'" >&2
- exit 1
+ getent_db=passwd
+ else
+ getent_db="$parameter"
fi
- done
-fi
+
+ if ! getent "$getent_db" "$check" > /dev/null
+ then
+ echo "missing $parameter '$check'"
+ fi
+ done \
+ < "$__object/parameter/$parameter"
+done
diff --git a/cdist/conf/type/__acl/gencode-remote b/cdist/conf/type/__acl/gencode-remote
index 6dab4d09..a0f25a15 100755
--- a/cdist/conf/type/__acl/gencode-remote
+++ b/cdist/conf/type/__acl/gencode-remote
@@ -20,65 +20,59 @@
file_is="$( cat "$__object/explorer/file_is" )"
-[ "$file_is" = 'missing' ] && [ -z "$__cdist_dry_run" ] && exit 0
+[ "$file_is" = 'missing' ] && exit 0
-os="$( cat "$__global/explorer/os" )"
+missing_users_groups="$( cat "$__object/explorer/missing_users_groups" )"
-acl_path="/$__object_id"
-
-acl_is="$( cat "$__object/explorer/acl_is" )"
-
-if [ -f "$__object/parameter/acl" ]
+if [ -n "$missing_users_groups" ]
then
- acl_should="$( cat "$__object/parameter/acl" )"
-elif
- [ -f "$__object/parameter/user" ] \
- || [ -f "$__object/parameter/group" ] \
- || [ -f "$__object/parameter/mask" ] \
- || [ -f "$__object/parameter/other" ]
-then
- acl_should="$( for param in user group mask other
- do
- [ ! -f "$__object/parameter/$param" ] && continue
-
- echo "$param" | grep -Eq 'mask|other' && sep=:: || sep=:
-
- echo "$param$sep$( cat "$__object/parameter/$param" )"
- done )"
-else
- echo 'no parameters set' >&2
+ echo "$missing_users_groups" >&2
exit 1
fi
-if [ -f "$__object/parameter/default" ]
+os="$( cat "$__global/explorer/os" )"
+
+acl_is="$( cat "$__object/explorer/acl_is" )"
+
+acl_path="/$__object_id"
+
+if [ -f "$__object/parameter/default" ] && [ "$file_is" = 'directory' ]
then
- acl_should="$( echo "$acl_should" \
- | sed 's/^default://' \
- | sort -u \
- | sed 's/\(.*\)/default:\1\n\1/' )"
+ set_default=1
+else
+ set_default=0
fi
-if [ "$file_is" = 'regular' ] \
- && echo "$acl_should" | grep -Eq '^default:'
-then
- # only directories can have default ACLs,
- # but instead of error,
- # let's just remove default entries
- acl_should="$( echo "$acl_should" | grep -Ev '^default:' )"
-fi
+acl_should="$( for parameter in user group mask other
+do
+ if [ ! -f "$__object/parameter/$parameter" ]
+ then
+ continue
+ fi
-if echo "$acl_should" | awk -F: '{ print $NF }' | grep -Fq 'X'
-then
- [ "$file_is" = 'directory' ] && rep=x || rep=-
+ while read -r acl
+ do
+ if echo "$acl" | awk -F: '{ print $NF }' | grep -Fq 'X'
+ then
+ [ "$file_is" = 'directory' ] && rep=x || rep=-
- acl_should="$( echo "$acl_should" | sed "s/\\(.*\\)X/\\1$rep/" )"
-fi
+ acl="$( echo "$acl" | sed "s/\(.*\)X/\1$rep/" )"
+ fi
+
+ echo "$parameter" | grep -Eq '(mask|other)' && sep=:: || sep=:
+
+ echo "$parameter$sep$acl"
+
+ [ "$set_default" = '1' ] && echo "default:$parameter$sep$acl"
+ done \
+ < "$__object/parameter/$parameter"
+done )"
setfacl_exec='setfacl'
if [ -f "$__object/parameter/recursive" ]
then
- if echo "$os" | grep -Fq 'freebsd'
+ if echo "$os" | grep -Eq 'macosx|freebsd'
then
echo "$os setfacl do not support recursive operations" >&2
else
@@ -88,36 +82,44 @@ fi
if [ -f "$__object/parameter/remove" ]
then
- echo "$acl_is" | while read -r acl
- do
- # skip wanted ACL entries which already exist
- # and skip mask and other entries, because we
- # can't actually remove them, but only change.
- if echo "$acl_should" | grep -Eq "^$acl" \
- || echo "$acl" | grep -Eq '^(default:)?(mask|other)'
- then continue
- fi
+ if echo "$os" | grep -Fq 'solaris'
+ then
+ # Solaris setfacl behaves differently.
+ # We will not support Solaris for now, because no way to test it.
+ # But adding support should be easy (use -s instead of -m on modify).
+ echo "$os setfacl do not support -x flag for ACL remove" >&2
+ else
+ echo "$acl_is" | while read -r acl
+ do
+ # Skip wanted ACL entries which already exist
+ # and skip mask and other entries, because we
+ # can't actually remove them, but only change.
+ if echo "$acl_should" | grep -Eq "^$acl" \
+ || echo "$acl" | grep -Eq '^(default:)?(mask|other)'
+ then continue
+ fi
- if echo "$os" | grep -Fq 'freebsd'
- then
- remove="$acl"
- else
- remove="$( echo "$acl" | sed 's/:...$//' )"
- fi
+ if echo "$os" | grep -Eq 'macosx|freebsd'
+ then
+ remove="$acl"
+ else
+ remove="$( echo "$acl" | sed 's/:...$//' )"
+ fi
- echo "$setfacl_exec -x \"$remove\" \"$acl_path\""
- echo "removed '$remove'" >> "$__messages_out"
- done
+ echo "$setfacl_exec -x \"$remove\" \"$acl_path\""
+ echo "removed '$remove'" >> "$__messages_out"
+ done
+ fi
fi
for acl in $acl_should
do
if ! echo "$acl_is" | grep -Eq "^$acl"
then
- if echo "$os" | grep -Fq 'freebsd' \
+ if echo "$os" | grep -Eq 'macosx|freebsd' \
&& echo "$acl" | grep -Eq '^default:'
then
- echo "setting default ACL in $os is currently not supported" >&2
+ echo "setting default ACL in $os is currently not supported. sorry :(" >&2
else
echo "$setfacl_exec -m \"$acl\" \"$acl_path\""
echo "added '$acl'" >> "$__messages_out"
diff --git a/cdist/conf/type/__acl/man.rst b/cdist/conf/type/__acl/man.rst
index 85e946ce..092eb555 100644
--- a/cdist/conf/type/__acl/man.rst
+++ b/cdist/conf/type/__acl/man.rst
@@ -8,36 +8,46 @@ cdist-type__acl - Set ACL entries
DESCRIPTION
-----------
-Fully supported and tested on Linux (ext4 filesystem), partial support for FreeBSD.
+ACL must be defined as 3-symbol combination, using ``r``, ``w``, ``x`` and ``-``.
+
+Fully supported on Linux (tested on Debian and CentOS).
+
+Partial support for FreeBSD, OSX and Solaris.
+
+OpenBSD and NetBSD support is not possible.
See ``setfacl`` and ``acl`` manpages for more details.
-REQUIRED MULTIPLE PARAMETERS
+OPTIONAL MULTIPLE PARAMETERS
----------------------------
-acl
- Set ACL entry following ``getfacl`` output syntax.
+user
+ Add user ACL entry.
+
+group
+ Add group ACL entry.
+
+
+OPTIONAL PARAMETERS
+-------------------
+mask
+ Add mask ACL entry.
+
+other
+ Add other ACL entry.
BOOLEAN PARAMETERS
------------------
-default
- Set all ACL entries as default too.
- Only directories can have default ACLs.
- Setting default ACL in FreeBSD is currently not supported.
-
recursive
Make ``setfacl`` recursive (Linux only), but not ``getfacl`` in explorer.
+default
+ Add default ACL entries (FreeBSD not supported).
+
remove
- Remove undefined ACL entries.
- ``mask`` and ``other`` entries can't be removed, but only changed.
-
-
-DEPRECATED PARAMETERS
----------------------
-Parameters ``user``, ``group``, ``mask`` and ``other`` are deprecated and they
-will be removed in future versions. Please use ``acl`` parameter instead.
+ Remove undefined ACL entries (Solaris not supported).
+ ACL entries for ``mask`` and ``other`` can't be removed.
EXAMPLES
@@ -46,30 +56,15 @@ EXAMPLES
.. code-block:: sh
__acl /srv/project \
- --default \
--recursive \
- --remove \
- --acl user:alice:rwx \
- --acl user:bob:r-x \
- --acl group:project-group:rwx \
- --acl group:some-other-group:r-x \
- --acl mask::r-x \
- --acl other::r-x
-
- # give Alice read-only access to subdir,
- # but don't allow her to see parent content.
-
- __acl /srv/project2 \
- --remove \
- --acl default:group:secret-project:rwx \
- --acl group:secret-project:rwx \
- --acl user:alice:--x
-
- __acl /srv/project2/subdir \
--default \
--remove \
- --acl group:secret-project:rwx \
- --acl user:alice:r-x
+ --user alice:rwx \
+ --user bob:r-x \
+ --group project-group:rwx \
+ --group some-other-group:r-x \
+ --mask r-x \
+ --other r-x
AUTHORS
diff --git a/cdist/conf/type/__acl/parameter/deprecated/group b/cdist/conf/type/__acl/parameter/deprecated/group
deleted file mode 100644
index 94e14159..00000000
--- a/cdist/conf/type/__acl/parameter/deprecated/group
+++ /dev/null
@@ -1 +0,0 @@
-see manual for details
diff --git a/cdist/conf/type/__acl/parameter/deprecated/mask b/cdist/conf/type/__acl/parameter/deprecated/mask
deleted file mode 100644
index 94e14159..00000000
--- a/cdist/conf/type/__acl/parameter/deprecated/mask
+++ /dev/null
@@ -1 +0,0 @@
-see manual for details
diff --git a/cdist/conf/type/__acl/parameter/deprecated/other b/cdist/conf/type/__acl/parameter/deprecated/other
deleted file mode 100644
index 94e14159..00000000
--- a/cdist/conf/type/__acl/parameter/deprecated/other
+++ /dev/null
@@ -1 +0,0 @@
-see manual for details
diff --git a/cdist/conf/type/__acl/parameter/deprecated/user b/cdist/conf/type/__acl/parameter/deprecated/user
deleted file mode 100644
index 94e14159..00000000
--- a/cdist/conf/type/__acl/parameter/deprecated/user
+++ /dev/null
@@ -1 +0,0 @@
-see manual for details
diff --git a/cdist/conf/type/__acl/parameter/optional_multiple b/cdist/conf/type/__acl/parameter/optional_multiple
index 95c25d55..22f5a52c 100644
--- a/cdist/conf/type/__acl/parameter/optional_multiple
+++ b/cdist/conf/type/__acl/parameter/optional_multiple
@@ -1,3 +1,2 @@
-acl
user
group
diff --git a/cdist/conf/type/__apt_key/explorer/state b/cdist/conf/type/__apt_key/explorer/state
index 38f1bd3c..f7940741 100755
--- a/cdist/conf/type/__apt_key/explorer/state
+++ b/cdist/conf/type/__apt_key/explorer/state
@@ -27,18 +27,6 @@ else
keyid="$__object_id"
fi
-keydir="$(cat "$__object/parameter/keydir")"
-keyfile="$keydir/$__object_id.gpg"
-
-if [ -d "$keydir" ]
-then
- if [ -f "$keyfile" ]
- then echo present
- else echo absent
- fi
-else
- # fallback to deprecated apt-key
- apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \
- && echo present \
- || echo absent
-fi
+apt-key export "$keyid" | head -n 1 | grep -Fqe "BEGIN PGP PUBLIC KEY BLOCK" \
+ && echo present \
+ || echo absent
diff --git a/cdist/conf/type/__apt_key/gencode-remote b/cdist/conf/type/__apt_key/gencode-remote
index 47c8bb49..9c4fa00c 100755
--- a/cdist/conf/type/__apt_key/gencode-remote
+++ b/cdist/conf/type/__apt_key/gencode-remote
@@ -31,84 +31,12 @@ if [ "$state_should" = "$state_is" ]; then
exit 0
fi
-keydir="$(cat "$__object/parameter/keydir")"
-keyfile="$keydir/$__object_id.gpg"
-
case "$state_should" in
present)
keyserver="$(cat "$__object/parameter/keyserver")"
-
- if [ -f "$__object/parameter/uri" ]; then
- uri="$(cat "$__object/parameter/uri")"
-
- if [ -d "$keydir" ]; then
- cat << EOF
-
-curl -s -L \\
- -o "$keyfile" \\
- "$uri"
-
-if grep -Fq 'BEGIN PGP PUBLIC KEY BLOCK' \\
- "$keyfile"
-then
- cat "$keyfile" \\
- | gpg --export > "$keyfile"
-fi
-
-EOF
- else
- # fallback to deprecated apt-key
- echo "curl -s -L '$uri' | apt-key add -"
- fi
- elif [ -d "$keydir" ]; then
- tmp='/tmp/cdist_apt_key_tmp'
-
- # we need to kill gpg after 30 seconds, because gpg
- # can get stuck if keyserver is not responding.
- # exporting env var and not exit 1,
- # because we need to clean up and kill dirmngr.
- cat << EOF
-
-mkdir -m 700 -p "$tmp"
-
-if timeout 30s \\
- gpg --homedir "$tmp" \\
- --keyserver "$keyserver" \\
- --recv-keys "$keyid"
-then
- gpg --homedir "$tmp" \\
- --export "$keyid" \\
- > "$keyfile"
-else
- export GPG_GOT_STUCK=1
-fi
-
-GNUPGHOME="$tmp" gpgconf --kill dirmngr
-
-rm -rf "$tmp"
-
-if [ -n "\$GPG_GOT_STUCK" ]
-then
- echo "GPG GOT STUCK - no response from keyserver after 30 seconds" >&2
- exit 1
-fi
-
-EOF
- else
- # fallback to deprecated apt-key
- echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\""
- fi
-
- echo "added '$keyid'" >> "$__messages_out"
+ echo "apt-key adv --keyserver \"$keyserver\" --recv-keys \"$keyid\""
;;
absent)
- if [ -f "$keyfile" ]; then
- echo "rm '$keyfile'"
- else
- # fallback to deprecated apt-key
- echo "apt-key del \"$keyid\""
- fi
-
- echo "removed '$keyid'" >> "$__messages_out"
+ echo "apt-key del \"$keyid\""
;;
esac
diff --git a/cdist/conf/type/__apt_key/man.rst b/cdist/conf/type/__apt_key/man.rst
index 234bc715..9009877e 100644
--- a/cdist/conf/type/__apt_key/man.rst
+++ b/cdist/conf/type/__apt_key/man.rst
@@ -28,12 +28,6 @@ keyserver
the keyserver from which to fetch the key. If omitted the default set
in ./parameter/default/keyserver is used.
-keydir
- key save location, defaults to ``/etc/apt/trusted.pgp.d``
-
-uri
- the URI from which to download the key
-
EXAMPLES
--------
@@ -53,20 +47,15 @@ EXAMPLES
# same thing with other keyserver
__apt_key UbuntuArchiveKey --keyid 437D05B5 --keyserver keyserver.ubuntu.com
- # download key from the internet
- __apt_key rabbitmq \
- --uri http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
-
AUTHORS
-------
Steven Armstrong
-Ander Punnar
COPYING
-------
-Copyright \(C) 2011-2019 Steven Armstrong and Ander Punnar. 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 3 of the
+Copyright \(C) 2011-2014 Steven Armstrong. 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 3 of the
License, or (at your option) any later version.
diff --git a/cdist/conf/type/__apt_key/manifest b/cdist/conf/type/__apt_key/manifest
deleted file mode 100755
index 010357cd..00000000
--- a/cdist/conf/type/__apt_key/manifest
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/sh -e
-
-__package gnupg
-
-if [ -f "$__object/parameter/uri" ]
-then __package curl
-else __package dirmngr
-fi
diff --git a/cdist/conf/type/__apt_key/parameter/default/keydir b/cdist/conf/type/__apt_key/parameter/default/keydir
deleted file mode 100644
index 190eb2de..00000000
--- a/cdist/conf/type/__apt_key/parameter/default/keydir
+++ /dev/null
@@ -1 +0,0 @@
-/etc/apt/trusted.gpg.d
diff --git a/cdist/conf/type/__apt_key/parameter/optional b/cdist/conf/type/__apt_key/parameter/optional
index de647375..18cf2586 100644
--- a/cdist/conf/type/__apt_key/parameter/optional
+++ b/cdist/conf/type/__apt_key/parameter/optional
@@ -1,5 +1,3 @@
state
keyid
keyserver
-keydir
-uri
diff --git a/cdist/conf/type/__cdist_preos_trigger/gencode-remote b/cdist/conf/type/__cdist_preos_trigger/gencode-remote
new file mode 100644
index 00000000..d5e9fe5c
--- /dev/null
+++ b/cdist/conf/type/__cdist_preos_trigger/gencode-remote
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+os=$(cat "$__global/explorer/os")
+
+case "$os" in
+ devuan)
+ echo "update-rc.d cdist-preos-trigger defaults > /dev/null"
+ ;;
+ *)
+ ;;
+esac
+
diff --git a/cdist/conf/type/__cdist_preos_trigger/man.rst b/cdist/conf/type/__cdist_preos_trigger/man.rst
new file mode 100644
index 00000000..abbd553b
--- /dev/null
+++ b/cdist/conf/type/__cdist_preos_trigger/man.rst
@@ -0,0 +1,45 @@
+cdist-type__cdist_preos_trigger(7)
+==================================
+
+NAME
+----
+cdist-type__cdist_preos_trigger - configure cdist preos trigger
+
+
+DESCRIPTION
+-----------
+Create cdist PreOS trigger by creating systemd unit file that will be started
+at boot and will execute trigger command - connect to specified host and port.
+
+
+REQUIRED PARAMETERS
+-------------------
+trigger-command
+ Command that will be executed as a PreOS cdist trigger.
+
+
+OPTIONAL PARAMETERS
+-------------------
+None
+
+
+EXAMPLES
+--------
+
+.. code-block:: sh
+
+ # Configure default curl trigger for host cdist.ungleich.ch at port 80.
+ __cdist_preos_trigger http --trigger-command '/usr/bin/curl cdist.ungleich.ch:80'
+
+
+AUTHORS
+-------
+Darko Poljak
+
+
+COPYING
+-------
+Copyright \(C) 2016 Darko Poljak. 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 3 of the
+License, or (at your option) any later version.
diff --git a/cdist/conf/type/__cdist_preos_trigger/manifest b/cdist/conf/type/__cdist_preos_trigger/manifest
new file mode 100644
index 00000000..750a0548
--- /dev/null
+++ b/cdist/conf/type/__cdist_preos_trigger/manifest
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+os="$(cat "$__global/explorer/os")"
+trigger_command=$(cat "$__object/parameter/trigger-command")
+
+case "$os" in
+ devuan)
+ __file /etc/init.d/cdist-preos-trigger --owner root \
+ --group root \
+ --mode 755 \
+ --source - << EOF
+#!/bin/sh
+# /etc/init.d/cdist-preos-trigger
+
+### BEGIN INIT INFO
+# Provides: cdist-preos-trigger
+# Required-Start: \$all
+# Required-Stop:
+# Default-Start: 2 3 4 5 S
+# Default-Stop: 0 1 6
+# Short-Description: Execute cdist preos trigger command
+# Description: Execute cdist preos trigger commnad.
+### END INIT INFO
+
+case "\$1" in
+ start)
+ echo "Starting cdist-preos-trigger command"
+ ${trigger_command} &
+ ;;
+ stop)
+ # no-op
+ ;;
+ *)
+ echo "Usage: /etc/init.d/cdist-preos-trigger {start|stop}"
+ exit 1
+ ;;
+esac
+
+exit 0
+EOF
+ ;;
+ *)
+ __file /etc/systemd/system/cdist-preos-trigger.service --owner root \
+ --group root \
+ --mode 644 \
+ --source - << EOF
+[Unit]
+Description=preos trigger
+Wants=network-online.target
+After=network.target network-online.target
+
+[Service]
+Type=simple
+Restart=no
+# Broken systemd
+ExecStartPre=/bin/sleep 5
+ExecStart=${trigger_command}
+
+[Install]
+WantedBy=multi-user.target
+EOF
+
+ require="__file/etc/systemd/system/cdist-preos-trigger.service" \
+ __start_on_boot cdist-preos-trigger
+ ;;
+esac
+
diff --git a/cdist/conf/type/__cdist_preos_trigger/parameter/required b/cdist/conf/type/__cdist_preos_trigger/parameter/required
new file mode 100644
index 00000000..3407a482
--- /dev/null
+++ b/cdist/conf/type/__cdist_preos_trigger/parameter/required
@@ -0,0 +1 @@
+trigger-command
diff --git a/cdist/conf/type/__consul/files/versions/1.5.0/cksum b/cdist/conf/type/__consul/files/versions/1.5.0/cksum
deleted file mode 100644
index efca9caa..00000000
--- a/cdist/conf/type/__consul/files/versions/1.5.0/cksum
+++ /dev/null
@@ -1 +0,0 @@
-886614099 103959898 consul
diff --git a/cdist/conf/type/__consul/files/versions/1.5.0/source b/cdist/conf/type/__consul/files/versions/1.5.0/source
deleted file mode 100644
index cafa9248..00000000
--- a/cdist/conf/type/__consul/files/versions/1.5.0/source
+++ /dev/null
@@ -1 +0,0 @@
-https://releases.hashicorp.com/consul/1.5.0/consul_1.5.0_linux_amd64.zip
diff --git a/cdist/conf/type/__consul/gencode-remote b/cdist/conf/type/__consul/gencode-remote
index 2a21054f..1d2244ea 100755
--- a/cdist/conf/type/__consul/gencode-remote
+++ b/cdist/conf/type/__consul/gencode-remote
@@ -42,7 +42,7 @@ source_file_name="${source##*/}"
cksum_should=$(cut -d' ' -f1,2 "$version_dir/cksum")
cat << eof
- tmpdir=\$(mktemp -d -p /tmp "${__type##*/}.XXXXXXXXXX")
+ tmpdir=\$(mktemp -d --tmpdir="/tmp" "${__type##*/}.XXXXXXXXXX")
curl -s -L "$source" > "\$tmpdir/$source_file_name"
unzip -p "\$tmpdir/$source_file_name" > "${destination}.tmp"
rm -rf "\$tmpdir"
diff --git a/cdist/conf/type/__consul/manifest b/cdist/conf/type/__consul/manifest
index 156eb667..0dd50f53 100755
--- a/cdist/conf/type/__consul/manifest
+++ b/cdist/conf/type/__consul/manifest
@@ -24,7 +24,7 @@
os=$(cat "$__global/explorer/os")
case "$os" in
- alpine|scientific|centos|redhat|ubuntu|debian|devuan|archlinux|gentoo)
+ scientific|centos|redhat|ubuntu|debian|devuan|archlinux|gentoo)
# any linux should work
:
;;
@@ -47,7 +47,6 @@ fi
if [ -f "$__object/parameter/direct" ]; then
__package unzip
- __package curl
else
__staged_file /usr/local/bin/consul \
--source "$(cat "$version_dir/source")" \
diff --git a/cdist/conf/type/__consul_agent/files/consul.sys-openrc b/cdist/conf/type/__consul_agent/files/consul.sys-openrc
deleted file mode 100644
index 1dbe9375..00000000
--- a/cdist/conf/type/__consul_agent/files/consul.sys-openrc
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/sbin/openrc-run
-# 2019 Nico Schottelius (nico-cdist at schottelius.org)
-
-description="consul agent"
-
-pidfile="${CONSUL_PIDFILE:-"/var/run/$RC_SVCNAME/pidfile"}"
-command="${CONSUL_BINARY:-"/usr/local/bin/consul"}"
-
-
-checkconfig() {
- if [ ! -d /var/run/consul ] ; then
- mkdir -p /var/run/consul || return 1
- chown consul:consul /var/run/$NAME || return 1
- chmod 2770 /var/run/$NAME || return 1
- fi
-}
-
-start() {
- need net
-
- start-stop-daemon --start --quiet --oknodo \
- --pidfile "$pidfile" --background \
- --exec $command -- agent -pid-file="$pidfile" -config-dir /etc/consul/conf.d
-}
-start_pre() {
- checkconfig
-}
-
-stop() {
- if [ "${RC_CMD}" = "restart" ] ; then
- checkconfig || return 1
- fi
-
- ebegin "Stopping $RC_SVCNAME"
- start-stop-daemon --stop --exec "$command" \
- --pidfile "$pidfile" --quiet
- eend $?
-}
diff --git a/cdist/conf/type/__consul_agent/manifest b/cdist/conf/type/__consul_agent/manifest
index a88d26ed..c48bfe85 100755
--- a/cdist/conf/type/__consul_agent/manifest
+++ b/cdist/conf/type/__consul_agent/manifest
@@ -1,7 +1,7 @@
#!/bin/sh -e
#
# 2015 Steven Armstrong (steven-cdist at armstrong.cc)
-# 2015-2019 Nico Schottelius (nico-cdist at schottelius.org)
+# 2015 Nico Schottelius (nico-cdist at schottelius.org)
#
# This file is part of cdist.
#
@@ -23,7 +23,7 @@
os=$(cat "$__global/explorer/os")
case "$os" in
- alpine|scientific|centos|debian|devuan|redhat|ubuntu)
+ scientific|centos|debian|devuan|redhat|ubuntu)
# whitelist safeguard
:
;;
@@ -181,25 +181,22 @@ init_upstart()
# Install init script to start on boot
case "$os" in
- alpine|devuan)
- init_sysvinit debian
- ;;
- centos|redhat)
- os_version="$(sed 's/[^0-9.]//g' "$__global/explorer/os_version")"
- major_version="${os_version%%.*}"
- case "$major_version" in
- [456])
- init_sysvinit redhat
- ;;
- 7)
- init_systemd
- ;;
- *)
- echo "Unsupported CentOS/Redhat version: $os_version" >&2
- exit 1
- ;;
- esac
- ;;
+ centos|redhat)
+ os_version="$(sed 's/[^0-9.]//g' "$__global/explorer/os_version")"
+ major_version="${os_version%%.*}"
+ case "$major_version" in
+ [456])
+ init_sysvinit redhat
+ ;;
+ 7)
+ init_systemd
+ ;;
+ *)
+ echo "Unsupported CentOS/Redhat version: $os_version" >&2
+ exit 1
+ ;;
+ esac
+ ;;
debian)
os_version=$(cat "$__global/explorer/os_version")
@@ -217,9 +214,13 @@ case "$os" in
exit 1
;;
esac
- ;;
+ ;;
+
+ devuan)
+ init_sysvinit debian
+ ;;
ubuntu)
init_upstart
- ;;
+ ;;
esac
diff --git a/cdist/conf/type/__docker/manifest b/cdist/conf/type/__docker/manifest
index 6a57d85a..04a9ff27 100755
--- a/cdist/conf/type/__docker/manifest
+++ b/cdist/conf/type/__docker/manifest
@@ -64,43 +64,6 @@ case "$os" in
require="__apt_source/docker" __package docker-ce --state "${state}"
fi
;;
- devuan)
- os_version="$(cat "$__global/explorer/os_version")"
-
- case "$os_version" in
- ascii)
- distribution="stretch"
- ;;
- jessie)
- distribution="jessie"
- ;;
- *)
- echo "Your devuan release ($os_version) is currently not supported by this type (${__type##*/}).">&2
- echo "Please contribute an implementation for it if you can." >&2
- exit 1
- ;;
- esac
-
- if [ "${state}" = "present" ]; then
- __package apt-transport-https
- __package ca-certificates
- __package gnupg2
- fi
- __apt_key_uri docker --name "Docker Release (CE deb) " \
- --uri "https://download.docker.com/linux/${os}/gpg" --state "${state}"
-
- require="__apt_key_uri/docker" __apt_source docker \
- --uri "https://download.docker.com/linux/${os}" \
- --distribution "${distribution}" \
- --state "${state}" \
- --component "stable"
- if [ "$version" != "latest" ]; then
- require="__apt_source/docker" __package docker-ce --version "${version}" --state "${state}"
- else
- require="__apt_source/docker" __package docker-ce --state "${state}"
- fi
-
- ;;
*)
echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
echo "Please contribute an implementation for it if you can." >&2
diff --git a/cdist/conf/type/__docker_swarm/explorer/swarm-state b/cdist/conf/type/__docker_swarm/explorer/swarm-state
index 2c9fd598..9c1bc32d 100755
--- a/cdist/conf/type/__docker_swarm/explorer/swarm-state
+++ b/cdist/conf/type/__docker_swarm/explorer/swarm-state
@@ -18,4 +18,4 @@
# along with cdist. If not, see .
#
-docker info 2>/dev/null | grep '^ *Swarm: ' | awk '{print $2}'
+docker info 2>/dev/null | grep "^Swarm: " | cut -d " " -f 2-
diff --git a/cdist/conf/type/__file_py/__init__.py b/cdist/conf/type/__file_py/__init__.py
new file mode 100644
index 00000000..06e3abf2
--- /dev/null
+++ b/cdist/conf/type/__file_py/__init__.py
@@ -0,0 +1,103 @@
+import os
+import re
+import sys
+from cdist.core import PythonType
+
+
+class FileType(PythonType):
+ def get_attribute(self, stat_file, attribute, value_should):
+ if os.path.exists(stat_file):
+ if re.match('[0-9]', value_should):
+ index = 1
+ else:
+ index = 2
+ with open(stat_file, 'r') as f:
+ for line in f:
+ if re.match(attribute + ":", line):
+ fields = line.split()
+ return fields[index]
+ return None
+
+ def set_attribute(self, attribute, value_should, destination):
+ cmd = {
+ 'group': 'chgrp',
+ 'owner': 'chown',
+ 'mode': 'chmod',
+ }
+ self.send_message("{} '{}'".format(cmd[attribute], value_should))
+ return "{} '{}' '{}'".format(cmd[attribute], value_should, destination)
+
+ def type_manifest(self):
+ yield from ()
+
+ def type_gencode(self):
+ typeis = self.get_explorer('type')
+ state_should = self.get_parameter('state')
+
+ if state_should == 'exists' and typeis == 'file':
+ return
+
+ source = self.get_parameter('source')
+ if source == '-':
+ source = self.stdin_path
+ destination = '/' + self.object_id
+ if state_should == 'pre-exists':
+ if source is not None:
+ self.die('--source cannot be used with --state pre-exists')
+ if typeis == 'file':
+ return None
+ else:
+ self.die('File {} does not exist'.format(destination))
+
+ create_file = False
+ upload_file = False
+ set_attributes = False
+ code = []
+ if state_should == 'present' or state_should == 'exists':
+ if source is None:
+ remote_stat = self.get_explorer('stat')
+ if not remote_stat:
+ create_file = True
+ else:
+ if os.path.exists(source):
+ if typeis == 'file':
+ local_cksum = self.run_local(['cksum', source, ])
+ local_cksum = local_cksum.split()[0]
+ remote_cksum = self.get_explorer('cksum')
+ remote_cksum = remote_cksum.split()[0]
+ upload_file = local_cksum != remote_cksum
+ else:
+ upload_file = True
+ else:
+ self.die('Source {} does not exist'.format(source))
+ if create_file or upload_file:
+ set_attributes = True
+ tempfile_template = '{}.cdist.XXXXXXXXXX'.format(destination)
+ destination_upload = self.run_remote(
+ ["mktemp", tempfile_template, ])
+ if upload_file:
+ self.transfer(source, destination_upload)
+ code.append('rm -rf {}'.format(destination))
+ code.append('mv {} {}'.format(destination_upload, destination))
+
+ if state_should in ('present', 'exists', 'pre-exists', ):
+ for attribute in ('group', 'owner', 'mode', ):
+ if attribute in self.parameters:
+ value_should = self.get_parameter(attribute)
+ if attribute == 'mode':
+ value_should = re.sub('^0', '', value_should)
+ stat_file = self.get_explorer_file('stat')
+ value_is = self.get_attribute(stat_file, attribute,
+ value_should)
+ if set_attributes or value_should != value_is:
+ code.append(self.set_attribute(attribute,
+ value_should,
+ destination))
+ elif state_should == 'absent':
+ if typeis == 'file':
+ code.append('rm -f {}'.format(destination))
+ self.send_message('remove')
+ else:
+ self.die('Unknown state {}'.format(state_should))
+
+ return "\n".join(code)
diff --git a/cdist/conf/type/__file_py/explorer/cksum b/cdist/conf/type/__file_py/explorer/cksum
new file mode 100755
index 00000000..335e4e7a
--- /dev/null
+++ b/cdist/conf/type/__file_py/explorer/cksum
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# 2011-2012 Nico Schottelius (nico-cdist at schottelius.org)
+#
+# This file is part of cdist.
+#
+# cdist 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 3 of the License, or
+# (at your option) any later version.
+#
+# cdist 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 cdist. If not, see .
+#
+#
+# Retrieve the md5sum of a file to be created, if it is already existing.
+#
+
+destination="/$__object_id"
+
+if [ -e "$destination" ]; then
+ if [ -f "$destination" ]; then
+ cksum < "$destination"
+ else
+ echo "NO REGULAR FILE"
+ fi
+else
+ echo "NO FILE FOUND, NO CHECKSUM CALCULATED."
+fi
diff --git a/cdist/conf/type/__file_py/explorer/stat b/cdist/conf/type/__file_py/explorer/stat
new file mode 100755
index 00000000..8a917556
--- /dev/null
+++ b/cdist/conf/type/__file_py/explorer/stat
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# 2013 Steven Armstrong (steven-cdist armstrong.cc)
+#
+# This file is part of cdist.
+#
+# cdist 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 3 of the License, or
+# (at your option) any later version.
+#
+# cdist 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 cdist. If not, see .
+#
+
+destination="/$__object_id"
+
+# nothing to work with, nothing we could do
+[ -e "$destination" ] || exit 0
+
+os=$("$__explorer/os")
+case "$os" in
+ "freebsd"|"netbsd"|"openbsd")
+ # FIXME: should be something like this based on man page, but can not test
+ stat -f "type: %ST
+owner: %Du %Su
+group: %Dg %Sg
+mode: %Op %Sp
+size: %Dz
+links: %Dl
+" "$destination"
+ ;;
+ "macosx")
+ stat -f "type: %HT
+owner: %Du %Su
+group: %Dg %Sg
+mode: %Lp %Sp
+size: %Dz
+links: %Dl
+" "$destination"
+ ;;
+ *)
+ stat --printf="type: %F
+owner: %u %U
+group: %g %G
+mode: %a %A
+size: %s
+links: %h
+" "$destination"
+ ;;
+esac
diff --git a/cdist/conf/type/__user/manifest b/cdist/conf/type/__file_py/explorer/type
old mode 100644
new mode 100755
similarity index 68%
rename from cdist/conf/type/__user/manifest
rename to cdist/conf/type/__file_py/explorer/type
index 8f10b38c..e723047c
--- a/cdist/conf/type/__user/manifest
+++ b/cdist/conf/type/__file_py/explorer/type
@@ -1,6 +1,6 @@
-#!/bin/sh -e
+#!/bin/sh
#
-# 2019 Nico Schottelius (nico-cdist at schottelius.org)
+# 2013 Steven Armstrong (steven-cdist armstrong.cc)
#
# This file is part of cdist.
#
@@ -17,16 +17,17 @@
# You should have received a copy of the GNU General Public License
# along with cdist. If not, see .
#
-#
-# Manage users.
-os=$(cat "$__global/explorer/os")
+destination="/$__object_id"
-case "$os" in
- alpine)
- __package shadow
- ;;
- *)
- :
- ;;
-esac
+if [ ! -e "$destination" ]; then
+ echo none
+elif [ -h "$destination" ]; then
+ echo symlink
+elif [ -f "$destination" ]; then
+ echo file
+elif [ -d "$destination" ]; then
+ echo directory
+else
+ echo unknown
+fi
diff --git a/cdist/conf/type/__file_py/parameter/default/state b/cdist/conf/type/__file_py/parameter/default/state
new file mode 100644
index 00000000..e7f6134f
--- /dev/null
+++ b/cdist/conf/type/__file_py/parameter/default/state
@@ -0,0 +1 @@
+present
diff --git a/cdist/conf/type/__file_py/parameter/optional b/cdist/conf/type/__file_py/parameter/optional
new file mode 100644
index 00000000..c696d592
--- /dev/null
+++ b/cdist/conf/type/__file_py/parameter/optional
@@ -0,0 +1,5 @@
+state
+group
+mode
+owner
+source
diff --git a/cdist/conf/type/__grafana_dashboard/manifest b/cdist/conf/type/__grafana_dashboard/manifest
index e652202b..9cd1465d 100755
--- a/cdist/conf/type/__grafana_dashboard/manifest
+++ b/cdist/conf/type/__grafana_dashboard/manifest
@@ -8,12 +8,10 @@ case $os in
debian|devuan)
case $os_version in
8*|jessie)
- # Differntation not needed anymore
- apt_source_distribution=stable
+ apt_source_distribution=jessie
;;
9*|ascii/ceres|ascii)
- # Differntation not needed anymore
- apt_source_distribution=stable
+ apt_source_distribution=stretch
;;
*)
echo "Don't know how to install Grafana on $os $os_version. Send us a pull request!" >&2
@@ -23,10 +21,10 @@ case $os in
__apt_key_uri grafana \
--name 'Grafana Release Signing Key' \
- --uri https://packages.grafana.com/gpg.key
+ --uri https://packagecloud.io/gpg.key
require="$require __apt_key_uri/grafana" __apt_source grafana \
- --uri https://packages.grafana.com/oss/deb \
+ --uri https://packagecloud.io/grafana/stable/debian/ \
--distribution $apt_source_distribution \
--component main
diff --git a/cdist/conf/type/__letsencrypt_cert/manifest b/cdist/conf/type/__letsencrypt_cert/manifest
index d598949e..d6892c9b 100755
--- a/cdist/conf/type/__letsencrypt_cert/manifest
+++ b/cdist/conf/type/__letsencrypt_cert/manifest
@@ -62,12 +62,11 @@ if [ -z "${certbot_fullpath}" ]; then
--distribution ascii-backports \
--component main
+ require="__apt_source/ascii-backports" __package_apt python-certbot \
+ --target-release ascii-backports
require="__apt_source/ascii-backports" __package_apt certbot \
--target-release ascii-backports
;;
- bewoulf*)
- __package_apt certbot
- ;;
*)
echo "Unsupported OS version: $os_version" >&2
exit 1
diff --git a/cdist/conf/type/__package_apk/explorer/state b/cdist/conf/type/__package_apk/explorer/state
index b477ca7c..29ccf3a5 100755
--- a/cdist/conf/type/__package_apk/explorer/state
+++ b/cdist/conf/type/__package_apk/explorer/state
@@ -27,10 +27,6 @@ else
name="$__object_id"
fi
-# Remove the @.. repo tag for finding out whether it is installed
-# f.i. pass@testing => pass
-name="$(echo "$name" | sed 's/@.*//')"
-
if [ "$(apk list -I "$name")" ]; then
echo present
else
diff --git a/cdist/conf/type/__postfix/manifest b/cdist/conf/type/__postfix/manifest
index f3616979..1aea53a1 100755
--- a/cdist/conf/type/__postfix/manifest
+++ b/cdist/conf/type/__postfix/manifest
@@ -1,7 +1,6 @@
#!/bin/sh -e
#
# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
-# 2019 Nico Schottelius (nico-cdist at schottelius.org)
#
# This file is part of cdist.
#
@@ -23,7 +22,7 @@
os=$(cat "$__global/explorer/os")
case "$os" in
- alpine|ubuntu|debian|archlinux|suse|scientific|centos|devuan)
+ ubuntu|debian|archlinux|suse|scientific|centos|devuan)
__package postfix --state present
;;
*)
diff --git a/cdist/conf/type/__postfix_postconf/explorer/value b/cdist/conf/type/__postfix_postconf/explorer/value
index 67dacad8..17126c94 100755
--- a/cdist/conf/type/__postfix_postconf/explorer/value
+++ b/cdist/conf/type/__postfix_postconf/explorer/value
@@ -22,7 +22,7 @@
os=$("$__explorer/os")
case "$os" in
- alpine|ubuntu|debian|archlinux|suse|scientific|centos|devuan)
+ ubuntu|debian|archlinux|suse|scientific|centos|devuan)
:
;;
*)
diff --git a/cdist/conf/type/__postfix_postconf/gencode-remote b/cdist/conf/type/__postfix_postconf/gencode-remote
index 279dddd4..6df0da7f 100755
--- a/cdist/conf/type/__postfix_postconf/gencode-remote
+++ b/cdist/conf/type/__postfix_postconf/gencode-remote
@@ -1,7 +1,6 @@
#!/bin/sh -e
#
# 2012-2014 Steven Armstrong (steven-cdist at armstrong.cc)
-# 2019 Nico Schottelius (nico-cdist at schottelius.org)
#
# This file is part of cdist.
#
@@ -22,7 +21,7 @@
os=$(cat "$__global/explorer/os")
case "$os" in
- alpine|archlinux|centos|debian|devuan|suse|scientific|ubuntu)
+ ubuntu|debian|archlinux|suse|scientific|centos|devuan)
:
;;
*)
diff --git a/cdist/config.py b/cdist/config.py
index 26d07fc4..98bfbe55 100644
--- a/cdist/config.py
+++ b/cdist/config.py
@@ -90,13 +90,15 @@ class Config(object):
shutil.rmtree(path)
def __init__(self, local, remote, dry_run=False, jobs=None,
- cleanup_cmds=None, remove_remote_files_dirs=False):
+ cleanup_cmds=None, remove_remote_files_dirs=False,
+ timestamp=False):
self.local = local
self.remote = remote
self._open_logger()
self.dry_run = dry_run
self.jobs = jobs
+ self.timestamp = timestamp
if cleanup_cmds:
self.cleanup_cmds = cleanup_cmds
else:
@@ -104,12 +106,9 @@ class Config(object):
self.remove_remote_files_dirs = remove_remote_files_dirs
self.explorer = core.Explorer(self.local.target_host, self.local,
- self.remote, jobs=self.jobs,
- dry_run=self.dry_run)
- self.manifest = core.Manifest(self.local.target_host, self.local,
- dry_run=self.dry_run)
- self.code = core.Code(self.local.target_host, self.local, self.remote,
- dry_run=self.dry_run)
+ self.remote, jobs=self.jobs)
+ self.manifest = core.Manifest(self.local.target_host, self.local)
+ self.code = core.Code(self.local.target_host, self.local, self.remote)
def _init_files_dirs(self):
"""Prepare files and directories for the run"""
@@ -427,7 +426,8 @@ class Config(object):
cleanup_cmds.append(cleanup_cmd)
c = cls(local, remote, dry_run=args.dry_run, jobs=args.jobs,
cleanup_cmds=cleanup_cmds,
- remove_remote_files_dirs=remove_remote_files_dirs)
+ remove_remote_files_dirs=remove_remote_files_dirs,
+ timestamp=args.timestamp)
c.run()
cls._remove_paths()
@@ -758,39 +758,50 @@ class Config(object):
("The requirements of the following objects could not be "
"resolved:\n%s") % ("\n".join(info_string)))
- def _handle_deprecation(self, cdist_object):
- cdist_type = cdist_object.cdist_type
- deprecated = cdist_type.deprecated
- if deprecated is not None:
- if deprecated:
- self.log.warning("Type %s is deprecated: %s", cdist_type.name,
- deprecated)
+ def _timeit(self, func, msg_prefix):
+ def wrapper_func(*args, **kwargs):
+ loglevel = self.log.getEffectiveLevel()
+ if loglevel >= logging.VERBOSE and self.timestamp:
+ start_time = time.time()
+ rv = func(*args, **kwargs)
+ end_time = time.time()
+ duration = end_time - start_time
+ self.log.verbose("%s duration: %.6f seconds",
+ msg_prefix, duration)
else:
- self.log.warning("Type %s is deprecated.", cdist_type.name)
- for param in cdist_object.parameters:
- if param in cdist_type.deprecated_parameters:
- msg = cdist_type.deprecated_parameters[param]
- if msg:
- format = "%s parameter of type %s is deprecated: %s"
- args = [param, cdist_type.name, msg]
- else:
- format = "%s parameter of type %s is deprecated."
- args = [param, cdist_type.name]
- self.log.warning(format, *args)
+ rv = func(*args, **kwargs)
+ return rv
+ return wrapper_func
def object_prepare(self, cdist_object, transfer_type_explorers=True):
"""Prepare object: Run type explorer + manifest"""
- self._handle_deprecation(cdist_object)
self.log.verbose("Preparing object {}".format(cdist_object.name))
self.log.verbose(
"Running manifest and explorers for " + cdist_object.name)
self.explorer.run_type_explorers(cdist_object, transfer_type_explorers)
try:
- self.manifest.run_type_manifest(cdist_object)
+ self.log.verbose("Preparing object {}".format(cdist_object.name))
+ self.log.verbose(
+ "Running manifest and explorers for " + cdist_object.name)
+ self.explorer.run_type_explorers(cdist_object,
+ transfer_type_explorers)
+ if self.is_py_type(cdist_object):
+ self._timeit(self.manifest.run_py_type_manifest,
+ "Python type manifest for {}".format(
+ cdist_object.name))(cdist_object)
+ else:
+ self._timeit(self.manifest.run_type_manifest,
+ "Type manifest for {}".format(
+ cdist_object.name))(cdist_object)
cdist_object.state = core.CdistObject.STATE_PREPARED
except cdist.Error as e:
raise cdist.CdistObjectError(cdist_object, e)
+ def is_py_type(self, cdist_object):
+ cdist_type = cdist_object.cdist_type
+ init_path = os.path.join(cdist_type.absolute_path, '__init__.py')
+ return os.path.exists(init_path)
+
def object_run(self, cdist_object):
"""Run gencode and code for an object"""
try:
@@ -801,9 +812,20 @@ class Config(object):
# Generate
self.log.debug("Generating code for %s" % (cdist_object.name))
- cdist_object.code_local = self.code.run_gencode_local(cdist_object)
- cdist_object.code_remote = self.code.run_gencode_remote(
- cdist_object)
+ if self.is_py_type(cdist_object):
+ cdist_object.code_local = ''
+ cdist_object.code_remote = self._timeit(self.code.run_py,
+ "Python type generate code for {}".format(
+ cdist_object.name))(cdist_object)
+ else:
+ cdist_object.code_local = self._timeit(
+ self.code.run_gencode_local,
+ "Type generate code local for {}".format(
+ cdist_object.name))(cdist_object)
+ cdist_object.code_remote = self._timeit(
+ self.code.run_gencode_remote,
+ "Type generate code remote for {}".format(
+ cdist_object.name))(cdist_object)
if cdist_object.code_local or cdist_object.code_remote:
cdist_object.changed = True
@@ -814,12 +836,16 @@ class Config(object):
if cdist_object.code_local:
self.log.trace("Executing local code for %s"
% (cdist_object.name))
- self.code.run_code_local(cdist_object)
+ self._timeit(self.code.run_code_local,
+ "Type run code local for {}".format(
+ cdist_object.name))(cdist_object)
if cdist_object.code_remote:
self.log.trace("Executing remote code for %s"
% (cdist_object.name))
self.code.transfer_code_remote(cdist_object)
- self.code.run_code_remote(cdist_object)
+ self._timeit(self.code.run_code_remote,
+ "Type run code remote for {}".format(
+ cdist_object.name))(cdist_object)
# Mark this object as done
self.log.trace("Finishing run of " + cdist_object.name)
diff --git a/cdist/core/__init__.py b/cdist/core/__init__.py
index b79cdb21..f44b7167 100644
--- a/cdist/core/__init__.py
+++ b/cdist/core/__init__.py
@@ -21,6 +21,7 @@
#
from cdist.core.cdist_type import CdistType
+from cdist.core.python_type import PythonType, ManifestEntry
from cdist.core.cdist_type import InvalidTypeError
from cdist.core.cdist_object import CdistObject
from cdist.core.cdist_object import IllegalObjectIdError
diff --git a/cdist/core/cdist_type.py b/cdist/core/cdist_type.py
index 4500f50d..99e40e70 100644
--- a/cdist/core/cdist_type.py
+++ b/cdist/core/cdist_type.py
@@ -69,7 +69,6 @@ class CdistType(object):
self.__optional_multiple_parameters = None
self.__boolean_parameters = None
self.__parameter_defaults = None
- self.__deprecated_parameters = None
def __hash__(self):
return hash(self.name)
@@ -134,17 +133,6 @@ class CdistType(object):
cannot run in parallel."""
return os.path.isfile(os.path.join(self.absolute_path, "nonparallel"))
- @property
- def deprecated(self):
- """Get type deprecation message. If message is None then type
- is not deprecated."""
- deprecated_path = os.path.join(self.absolute_path, "deprecated")
- try:
- with open(deprecated_path, 'r') as f:
- return f.read()
- except FileNotFoundError:
- return None
-
@property
def explorers(self):
"""Return a list of available explorers"""
@@ -276,23 +264,3 @@ class CdistType(object):
finally:
self.__parameter_defaults = defaults
return self.__parameter_defaults
-
- @property
- def deprecated_parameters(self):
- if not self.__deprecated_parameters:
- deprecated = {}
- try:
- deprecated_dir = os.path.join(self.absolute_path,
- "parameter",
- "deprecated")
- for name in cdist.core.listdir(deprecated_dir):
- try:
- with open(os.path.join(deprecated_dir, name)) as fd:
- deprecated[name] = fd.read().strip()
- except EnvironmentError:
- pass # Swallow errors raised by open() or read()
- except EnvironmentError:
- pass # Swallow error raised by os.listdir()
- finally:
- self.__deprecated_parameters = deprecated
- return self.__deprecated_parameters
diff --git a/cdist/core/code.py b/cdist/core/code.py
index 1550880a..11568b04 100644
--- a/cdist/core/code.py
+++ b/cdist/core/code.py
@@ -22,6 +22,10 @@
#
import os
+import importlib.util
+import inspect
+import cdist
+from cdist.core import PythonType
from . import util
@@ -97,7 +101,7 @@ class Code(object):
"""
# target_host is tuple (target_host, target_hostname, target_fqdn)
- def __init__(self, target_host, local, remote, dry_run=False):
+ def __init__(self, target_host, local, remote):
self.target_host = target_host
self.local = local
self.remote = remote
@@ -113,8 +117,43 @@ class Code(object):
local.log),
}
- if dry_run:
- self.env['__cdist_dry_run'] = '1'
+ def run_py(self, cdist_object):
+ cdist_type = cdist_object.cdist_type
+ module_name = cdist_type.name
+ file_path = os.path.join(cdist_type.absolute_path, '__init__.py')
+
+ if os.path.isfile(file_path):
+ spec = importlib.util.spec_from_file_location(module_name,
+ file_path)
+ m = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(m)
+ classes = inspect.getmembers(m, inspect.isclass)
+ type_class = None
+ for _, cl in classes:
+ if cl != PythonType and issubclass(cl, PythonType):
+ if type_class:
+ raise cdist.Error("Only one python type class is "
+ "supported, but at least two "
+ "found: {}".format((type_class,
+ cl, )))
+ else:
+ type_class = cl
+ env = os.environ.copy()
+ env.update(self.env)
+ message_prefix = cdist_object.name
+ type_obj = type_class(env=env, cdist_object=cdist_object,
+ local=self.local, remote=self.remote,
+ message_prefix=message_prefix)
+ if hasattr(type_obj, 'run') and inspect.ismethod(type_obj.run):
+ if self.local.save_output_streams:
+ which = 'gencode-py'
+ stderr_path = os.path.join(cdist_object.stderr_path, which)
+ stdout_path = os.path.join(cdist_object.stdout_path, which)
+ with open(stderr_path, 'a+') as stderr, \
+ open(stdout_path, 'a+') as stdout:
+ return type_obj.run(stdout=stdout, stderr=stderr)
+ else:
+ return type_obj.run()
def _run_gencode(self, cdist_object, which):
cdist_type = cdist_object.cdist_type
diff --git a/cdist/core/explorer.py b/cdist/core/explorer.py
index 353d7681..acceacac 100644
--- a/cdist/core/explorer.py
+++ b/cdist/core/explorer.py
@@ -67,7 +67,7 @@ class Explorer(object):
"""Executes cdist explorers.
"""
- def __init__(self, target_host, local, remote, jobs=None, dry_run=False):
+ def __init__(self, target_host, local, remote, jobs=None):
self.target_host = target_host
self._open_logger()
@@ -84,10 +84,6 @@ class Explorer(object):
'__cdist_log_level_name': util.log_level_name_env_var_val(
self.log),
}
-
- if dry_run:
- self.env['__cdist_dry_run'] = '1'
-
self._type_explorers_transferred = []
self.jobs = jobs
diff --git a/cdist/core/manifest.py b/cdist/core/manifest.py
index 07af0ef8..ec78d5b9 100644
--- a/cdist/core/manifest.py
+++ b/cdist/core/manifest.py
@@ -22,9 +22,13 @@
import logging
import os
-
+import importlib.util
+import inspect
import cdist
+import cdist.emulator
from . import util
+from cdist.core import PythonType, ManifestEntry
+
'''
common:
@@ -96,7 +100,7 @@ class Manifest(object):
"""Executes cdist manifests.
"""
- def __init__(self, target_host, local, dry_run=False):
+ def __init__(self, target_host, local):
self.target_host = target_host
self.local = local
@@ -117,9 +121,6 @@ class Manifest(object):
self.log),
}
- if dry_run:
- self.env['__cdist_dry_run'] = '1'
-
def _open_logger(self):
self.log = logging.getLogger(self.target_host[0])
@@ -212,3 +213,73 @@ class Manifest(object):
type_manifest,
env=self.env_type_manifest(cdist_object),
message_prefix=message_prefix)
+
+ def env_py_type_manifest(self, cdist_object):
+ env = os.environ.copy()
+ env.update(self.env)
+ env.update({
+ '__cdist_object_marker': self.local.object_marker_name,
+ '__cdist_manifest': cdist_object.cdist_type,
+ '__manifest': self.local.manifest_path,
+ '__object': cdist_object.absolute_path,
+ '__object_id': cdist_object.object_id,
+ '__object_name': cdist_object.name,
+ '__type': cdist_object.cdist_type.absolute_path,
+ })
+
+ return env
+
+ def run_py_type_manifest(self, cdist_object):
+ cdist_type = cdist_object.cdist_type
+ module_name = cdist_type.name
+ file_path = os.path.join(cdist_type.absolute_path, '__init__.py')
+ message_prefix = cdist_object.name
+ if os.path.isfile(file_path):
+ self.log.verbose("Running python type manifest for object %s",
+ cdist_object.name)
+ spec = importlib.util.spec_from_file_location(module_name,
+ file_path)
+ m = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(m)
+ classes = inspect.getmembers(m, inspect.isclass)
+ type_class = None
+ for _, cl in classes:
+ if cl != PythonType and issubclass(cl, PythonType):
+ if type_class:
+ raise cdist.Error("Only one python type class is "
+ "supported, but at least two "
+ "found: {}".format((type_class,
+ cl, )))
+ else:
+ type_class = cl
+ env = self.env_py_type_manifest(cdist_object)
+ type_obj = type_class(env=env, cdist_object=cdist_object,
+ local=self.local, remote=None,
+ message_prefix=message_prefix)
+ if self.local.save_output_streams:
+ which = 'manifest'
+ stderr_path = os.path.join(cdist_object.stderr_path, which)
+ stdout_path = os.path.join(cdist_object.stdout_path, which)
+ with open(stderr_path, 'a+') as stderr, \
+ open(stdout_path, 'a+') as stdout:
+ self._process_py_type_manifest_entries(
+ type_obj, env, stdout=stdout, stderr=stderr)
+ else:
+ self._process_py_type_manifest_entries(type_obj, env)
+
+ def _process_py_type_manifest_entries(self, type_obj, env, stdout=None,
+ stderr=None):
+ if hasattr(type_obj, 'manifest') and \
+ inspect.ismethod(type_obj.manifest):
+ for entry in type_obj.manifest(stdout=stdout, stderr=stderr):
+ if not isinstance(entry, ManifestEntry):
+ raise TypeError("Manifest entry must be of "
+ "type ManifestEntry")
+ kwargs = {
+ 'argv': entry.cmd_line(),
+ 'env': env,
+ }
+ if entry.stdin:
+ kwargs['stdin'] = entry.stdin
+ emulator = cdist.emulator.Emulator(**kwargs)
+ emulator.run()
diff --git a/cdist/core/python_type.py b/cdist/core/python_type.py
new file mode 100644
index 00000000..85d4ad2e
--- /dev/null
+++ b/cdist/core/python_type.py
@@ -0,0 +1,160 @@
+import logging
+import os
+import io
+import sys
+import re
+from cdist import message, Error
+
+
+class PythonType:
+ def __init__(self, env, cdist_object, local, remote, message_prefix=None):
+ self.env = env
+ self.cdist_object = cdist_object
+ self.object_id = cdist_object.object_id
+ self.object_name = cdist_object.name
+ self.cdist_type = cdist_object.cdist_type
+ self.local = local
+ self.remote = remote
+ self.object_path = cdist_object.absolute_path
+ self.type_path = cdist_object.cdist_type.absolute_path
+ self.explorer_path = os.path.join(self.object_path, 'explorer')
+ self.parameters = cdist_object.parameters
+ self.stdin_path = os.path.join(self.object_path, 'stdin')
+ self.log = logging.getLogger(
+ self.local.target_host[0] + ':' + self.object_name)
+
+ self.message_prefix = message_prefix
+ self.message = None
+
+ def get_parameter(self, name):
+ return self.parameters.get(name)
+
+ def get_explorer_file(self, name):
+ path = os.path.join(self.explorer_path, name)
+ return path
+
+ def get_explorer(self, name):
+ path = self.get_explorer_file(name)
+ with open(path, 'r') as f:
+ value = f.read()
+ if value:
+ value = value.strip()
+ return value
+
+ def run_local(self, command, env=None):
+ rv = self.local.run(command, env=env, return_output=True)
+ if rv:
+ rv = rv.rstrip('\n')
+ return rv
+
+ def run_remote(self, command, env=None):
+ rv = self.remote.run(command, env=env, return_output=True)
+ if rv:
+ rv = rv.rstrip('\n')
+ return rv
+
+ def transfer(self, source, destination):
+ self.remote.transfer(source, destination)
+
+ def die(self, msg):
+ raise Error("{}: {}".format(self.cdist_object, msg))
+
+ def type_manifest(self):
+ pass
+
+ def type_gencode(self):
+ pass
+
+ def manifest(self, stdout=None, stderr=None):
+ try:
+ if self.message_prefix:
+ self.message = message.Message(self.message_prefix,
+ self.local.messages_path)
+ self.env.update(self.message.env)
+ if stdout is not None:
+ stdout_save = sys.stdout
+ sys.stdout = stdout
+ if stderr is not None:
+ stderr_save = sys.stderr
+ sys.stderr = stderr
+ yield from self.type_manifest()
+ finally:
+ if self.message:
+ self.message.merge_messages()
+ if stdout is not None:
+ sys.stdout = stdout_save
+ if stderr is not None:
+ sys.stderr = stderr_save
+
+ def run(self, stdout=None, stderr=None):
+ try:
+ if self.message_prefix:
+ self.message = message.Message(self.message_prefix,
+ self.local.messages_path)
+ if stdout is not None:
+ stdout_save = sys.stdout
+ sys.stdout = stdout
+ if stderr is not None:
+ stderr_save = sys.stderr
+ sys.stderr = stderr
+ return self.type_gencode()
+ finally:
+ if self.message:
+ self.message.merge_messages()
+ if stdout is not None:
+ sys.stdout = stdout_save
+ if stderr is not None:
+ sys.stderr = stderr_save
+
+ def send_message(self, msg):
+ if self.message:
+ with open(self.message.messages_out, 'a') as f:
+ print(msg, file=f)
+
+ def receive_message(self, pattern):
+ if self.message:
+ with open(self.message.messages_in, 'r') as f:
+ for line in f:
+ match = re.search(pattern, line)
+ if match:
+ return match
+ return None
+
+
+class ManifestEntry:
+ def __init__(self, name, stdin=None, parameters=None):
+ self.name = name
+ if parameters is None:
+ self.parameters = {}
+ else:
+ self.parameters = parameters
+ self.set_stdin(stdin)
+
+ def set_stdin(self, value):
+ # If file-like object then read its value.
+ if value is not None and isinstance(value, io.IOBase):
+ value = value.read()
+
+ # Convert to bytes file-like object.
+ if value is None:
+ self.stdin = None
+ elif isinstance(value, str):
+ self.stdin = io.BytesIO(value.encode('utf-8'))
+ elif isinstance(value, bytes) or isinstance(value, bytearray):
+ self.stdin = io.BytesIO(value)
+ else:
+ raise TypeError("value must be str, bytes, bytearray, file-like "
+ "object or None")
+
+ def cmd_line(self):
+ argv = [self.name, ]
+ for param in self.parameters:
+ argv.append(param)
+ val = self.parameters[param]
+ if val:
+ argv.append(val)
+ return argv
+
+ def __repr__(self):
+ return ''.format(
+ self.name, self.parameters, self.stdin)
diff --git a/cdist/inventory.py b/cdist/inventory.py
index 138a2034..7da306fa 100644
--- a/cdist/inventory.py
+++ b/cdist/inventory.py
@@ -315,7 +315,7 @@ class InventoryHost(Inventory):
hostpath = self._host_path(host)
self.log.trace("hostpath: {}".format(hostpath))
if self.action == "add" and not os.path.exists(hostpath):
- self._new_hostpath(hostpath)
+ self._new_hostpath(hostpath)
else:
if not os.path.isfile(hostpath):
raise cdist.Error(("Host path \'{}\' is"
diff --git a/cdist/preos.py b/cdist/preos.py
new file mode 100644
index 00000000..46b45554
--- /dev/null
+++ b/cdist/preos.py
@@ -0,0 +1,101 @@
+import os
+import os.path
+import sys
+import inspect
+import argparse
+import cdist
+import logging
+
+
+_PREOS_CALL = "commandline"
+_PREOS_NAME = "_preos_name"
+_PREOS_MARKER = "_cdist_preos"
+_PLUGINS_DIR = "preos"
+_PLUGINS_PATH = [os.path.join(os.path.dirname(__file__), _PLUGINS_DIR), ]
+cdist_home = cdist.home_dir()
+if cdist_home:
+ cdist_home_preos = os.path.join(cdist_home, "preos")
+ if os.path.isdir(cdist_home_preos):
+ _PLUGINS_PATH.append(cdist_home_preos)
+sys.path.extend(_PLUGINS_PATH)
+
+
+log = logging.getLogger("PreOS")
+
+
+def preos_plugin(obj):
+ """It is preos if _PREOS_MARKER is True and has _PREOS_CALL."""
+ if hasattr(obj, _PREOS_MARKER):
+ is_preos = getattr(obj, _PREOS_MARKER)
+ else:
+ is_preos = False
+
+ if is_preos and hasattr(obj, _PREOS_CALL):
+ yield obj
+
+
+def scan_preos_dir_plugins(dir):
+ for fname in os.listdir(dir):
+ if os.path.isfile(os.path.join(dir, fname)):
+ fname = os.path.splitext(fname)[0]
+ module_name = fname
+ try:
+ module = __import__(module_name)
+ yield from preos_plugin(module)
+ clsmembers = inspect.getmembers(module, inspect.isclass)
+ for cm in clsmembers:
+ c = cm[1]
+ yield from preos_plugin(c)
+ except ImportError as e:
+ log.warning("Cannot import '{}': {}".format(module_name, e))
+
+
+def find_preos_plugins():
+ for dir in _PLUGINS_PATH:
+ yield from scan_preos_dir_plugins(dir)
+
+
+def find_preoses():
+ preoses = {}
+ for preos in find_preos_plugins():
+ if hasattr(preos, _PREOS_NAME):
+ preos_name = getattr(preos, _PREOS_NAME)
+ else:
+ preos_name = preos.__name__.lower()
+ preoses[preos_name] = preos
+ return preoses
+
+
+def check_root():
+ if os.geteuid() != 0:
+ raise cdist.Error("Must be run with root privileges")
+
+
+class PreOS(object):
+ preoses = None
+
+ @classmethod
+ def commandline(cls, argv):
+
+ if not cls.preoses:
+ cls.preoses = find_preoses()
+
+ parser = argparse.ArgumentParser(
+ description="Create PreOS", prog="cdist preos")
+ parser.add_argument('preos', help='PreOS to create, one of: {}'.format(
+ set(cls.preoses)))
+ args = parser.parse_args(argv[1:2])
+
+ preos_name = args.preos
+ if preos_name in cls.preoses:
+ preos = cls.preoses[preos_name]
+ func = getattr(preos, _PREOS_CALL)
+ if inspect.ismodule(preos):
+ func_args = [preos, argv[2:], ]
+ else:
+ func_args = [argv[2:], ]
+ log.info("Running preos : {}".format(preos_name))
+ func(*func_args)
+ else:
+ log.error("Unknown preos: {}, available preoses: {}".format(
+ preos_name, set(cls.preoses.keys())))
diff --git a/cdist/preos/debootstrap/__init__.py b/cdist/preos/debootstrap/__init__.py
new file mode 100644
index 00000000..6d340b4a
--- /dev/null
+++ b/cdist/preos/debootstrap/__init__.py
@@ -0,0 +1 @@
+from debootstrap.debootstrap import Debian, Ubuntu, Devuan
diff --git a/cdist/preos/debootstrap/debootstrap.py b/cdist/preos/debootstrap/debootstrap.py
new file mode 100644
index 00000000..90f94111
--- /dev/null
+++ b/cdist/preos/debootstrap/debootstrap.py
@@ -0,0 +1,246 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+#
+# 2016 Darko Poljak (darko.poljak at ungleich.ch)
+#
+# This file is part of cdist.
+#
+# cdist 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 3 of the License, or
+# (at your option) any later version.
+#
+# cdist 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 cdist. If not, see .
+#
+#
+
+import cdist
+import cdist.config
+import cdist.core
+import cdist.preos
+import argparse
+import cdist.argparse
+import logging
+import os
+import subprocess
+
+
+class Debian(object):
+ _preos_name = 'debian'
+ _cdist_preos = True
+
+ _files_dir = os.path.join(os.path.dirname(__file__), "files")
+
+ @classmethod
+ def default_args(cls):
+ default_remote_exec = os.path.join(cls._files_dir, "remote-exec.sh")
+ default_remote_copy = os.path.join(cls._files_dir, "remote-copy.sh")
+ default_init_manifest = os.path.join(
+ cls._files_dir, "init-manifest-{}".format(cls._preos_name))
+
+ defargs = argparse.Namespace()
+ defargs.arch = 'amd64'
+ defargs.bootstrap = False
+ defargs.configure = False
+ defargs.cdist_params = '-v'
+ defargs.rm_bootstrap_dir = False
+ defargs.suite = 'stable'
+ defargs.remote_exec = default_remote_exec
+ defargs.remote_copy = default_remote_copy
+ defargs.manifest = default_init_manifest
+
+ return defargs
+
+ @classmethod
+ def get_parser(cls):
+ defargs = cls.default_args()
+ cdist_parser = cdist.argparse.get_parsers()
+ parser = argparse.ArgumentParser(
+ prog='cdist preos {}'.format(cls._preos_name),
+ parents=[cdist_parser['loglevel'], cdist_parser['beta']])
+ parser.add_argument('target_dir', nargs=1,
+ help=("target directory where PreOS will be "
+ "bootstrapped"))
+ parser.add_argument(
+ '-a', '--arch',
+ help="target debootstrap architecture, by default '{}'".format(
+ defargs.arch), dest='arch', default=defargs.arch)
+ parser.add_argument(
+ '-B', '--bootstrap',
+ help='do bootstrap step',
+ dest='bootstrap', action='store_true', default=defargs.bootstrap)
+ parser.add_argument(
+ '-C', '--configure',
+ help='do configure step',
+ dest='configure', action='store_true', default=defargs.configure)
+ parser.add_argument(
+ '-c', '--cdist-params',
+ help=("parameters that will be passed to cdist config, by default"
+ " '{}' is used".format(defargs.cdist_params)),
+ dest='cdist_params', default=defargs.cdist_params)
+ parser.add_argument(
+ '-D', '--drive-boot',
+ help='create bootable PreOS on specified drive',
+ dest='drive')
+ parser.add_argument(
+ '-e', '--remote-exec',
+ help=("remote exec that cdist config will use, by default "
+ "internal script is used"),
+ dest='remote_exec', default=defargs.remote_exec)
+ parser.add_argument(
+ '-i', '--init-manifest',
+ help=("init manifest that cdist config will use, by default "
+ "internal init manifest is used"),
+ dest='manifest', default=defargs.manifest)
+ parser.add_argument(
+ '-k', '--keyfile', action="append",
+ help=("ssh key files that will be added to cdist config; "
+ "'__ssh_authorized_keys root ...' type is appended to "
+ "initial manifest"),
+ dest='keyfile')
+ parser.add_argument(
+ '-m', '--mirror',
+ help='use specified mirror for debootstrap',
+ dest='mirror')
+ parser.add_argument(
+ '-P', '--root-password',
+ help='Set specified password for root, generated by default',
+ dest='root_password')
+ parser.add_argument('-p', '--pxe-boot-dir', help='PXE boot directory',
+ dest='pxe_boot_dir')
+ parser.add_argument(
+ '-r', '--rm-bootstrap-dir',
+ help='remove target directory after finishing',
+ dest='rm_bootstrap_dir', action='store_true',
+ default=defargs.rm_bootstrap_dir)
+ parser.add_argument(
+ '-S', '--script',
+ help='use specified script for debootstrap',
+ dest='script')
+ parser.add_argument('-s', '--suite',
+ help="suite used for debootstrap, "
+ "by default '{}'".format(defargs.suite),
+ dest='suite', default=defargs.suite)
+ parser.add_argument(
+ '-t', '--trigger-command',
+ help=("trigger command that will be added to cdist config; "
+ "'__cdist_preos_trigger http ...' type is appended to "
+ "initial manifest"),
+ dest='trigger_command')
+ parser.add_argument(
+ '-y', '--remote-copy',
+ help=("remote copy that cdist config will use, by default "
+ "internal script is used"),
+ dest='remote_copy', default=defargs.remote_copy)
+ parser.epilog = cdist.argparse.EPILOG
+
+ return parser
+
+ @classmethod
+ def update_env(cls, env):
+ pass
+
+ @classmethod
+ def commandline(cls, argv):
+ log = logging.getLogger(cls.__name__)
+
+ parser = cls.get_parser()
+ cdist.argparse.add_beta_command(cls._preos_name)
+ args = parser.parse_args(argv)
+ if args.script and not args.mirror:
+ raise cdist.Error("script option cannot be used without "
+ "mirror option")
+
+ args.command = cls._preos_name
+ cdist.argparse.check_beta(vars(args))
+
+ cdist.preos.check_root()
+
+ args.target_dir = os.path.realpath(args.target_dir[0])
+ args.os = cls._preos_name
+ args.remote_exec = os.path.realpath(args.remote_exec)
+ args.remote_copy = os.path.realpath(args.remote_copy)
+ args.manifest = os.path.realpath(args.manifest)
+ if args.keyfile:
+ new_keyfile = [os.path.realpath(x) for x in args.keyfile]
+ args.keyfile = new_keyfile
+ if args.pxe_boot_dir:
+ args.pxe_boot_dir = os.path.realpath(args.pxe_boot_dir)
+
+ cdist.argparse.handle_loglevel(args)
+ log.debug("preos: {}, args: {}".format(cls._preos_name, args))
+ try:
+ env = vars(args)
+ new_env = {}
+ for key in env:
+ if key == 'verbose':
+ if env[key] >= 3:
+ new_env['debug'] = "yes"
+ elif env[key] == 2:
+ new_env['verbose'] = "yes"
+ elif not env[key]:
+ new_env[key] = ''
+ elif isinstance(env[key], bool) and env[key]:
+ new_env[key] = "yes"
+ elif isinstance(env[key], list):
+ val = env[key]
+ new_env[key + "_cnt"] = str(len(val))
+ for i, v in enumerate(val):
+ new_env[key + "_" + str(i)] = v
+ else:
+ new_env[key] = str(env[key])
+ env = new_env
+ env.update(os.environ)
+ cls.update_env(env)
+ log.debug("preos: {} env: {}".format(cls._preos_name, env))
+ cmd = os.path.join(cls._files_dir, "code")
+ info_msg = ["Running preos: {}, suite: {}, arch: {}".format(
+ cls._preos_name, args.suite, args.arch), ]
+ if args.mirror:
+ info_msg.append("mirror: {}".format(args.mirror))
+ if args.script:
+ info_msg.append("script: {}".format(args.script))
+ if args.bootstrap:
+ info_msg.append("bootstrapping")
+ if args.configure:
+ info_msg.append("configuring")
+ if args.pxe_boot_dir:
+ info_msg.append("creating PXE")
+ if args.drive:
+ info_msg.append("creating bootable drive")
+ log.info(info_msg)
+ log.debug("cmd={}".format(cmd))
+ subprocess.check_call(cmd, env=env, shell=True)
+ except subprocess.CalledProcessError as e:
+ log.error("preos {} failed: {}".format(cls._preos_name, e))
+
+
+class Ubuntu(Debian):
+ _preos_name = "ubuntu"
+
+ @classmethod
+ def default_args(cls):
+ defargs = super().default_args()
+ defargs.suite = 'xenial'
+ return defargs
+
+
+class Devuan(Debian):
+ _preos_name = "devuan"
+
+ @classmethod
+ def default_args(cls):
+ defargs = super().default_args()
+ defargs.suite = 'jessie'
+ return defargs
+
+ @classmethod
+ def update_env(cls, env):
+ env['DEBOOTSTRAP_DIR'] = os.path.join(cls._files_dir,
+ 'devuan-debootstrap')
diff --git a/cdist/preos/debootstrap/files/code b/cdist/preos/debootstrap/files/code
new file mode 100755
index 00000000..50e73972
--- /dev/null
+++ b/cdist/preos/debootstrap/files/code
@@ -0,0 +1,281 @@
+#!/bin/sh
+##
+## 2016 Darko Poljak (darko.poljak at ungleich.ch)
+##
+## This file is part of cdist.
+##
+## cdist 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 3 of the License, or
+## (at your option) any later version.
+##
+## cdist 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 cdist. If not, see .
+
+set -e
+
+if [ "${debug}" ]
+then
+ set -x
+ cdist_params="${cdist_params} -d"
+fi
+
+bootstrap_dir="${target_dir}"
+
+case "${os}" in
+ ubuntu|debian|devuan)
+ # nothing, those are valid values
+ ;;
+ *)
+ echo "ERROR: invalid os value: ${os}" >&2
+ exit 1
+ ;;
+esac
+
+check_bootstrap_dir() {
+ if [ ! -e "$1" ]
+ then
+ echo "ERROR: bootstrap directory $1 does not exist" >&2
+ exit 1
+ fi
+}
+
+# bootstrap
+if [ "${bootstrap}" ]
+then
+ if [ "${DEBOOTSTRAP_DIR}" ]
+ then
+ debootstrap_cmd="${DEBOOTSTRAP_DIR}/debootstrap"
+ else
+ command -v debootstrap 2>&1 > /dev/null || {
+ echo "ERROR: debootstrap not found" >&2
+ exit 1
+ }
+ debootstrap_cmd="debootstrap"
+ fi
+
+ # If PreOS on drive then do not check for directory emptiness.
+ # Partition can at least contain 'lost+found' directory.
+ if [ ! "${drive}" ]
+ then
+ if [ -e "${bootstrap_dir}" ]
+ then
+ dir_content=$(ls -A "${bootstrap_dir}" | wc -l)
+ else
+ dir_content=0
+ fi
+ if [ "${dir_content}" -ne 0 ]
+ then
+ echo "ERROR: "${bootstrap_dir}" not empty " >&2
+ exit 1
+ fi
+ fi
+
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "bootstrapping..."
+ fi
+ mkdir -p "${bootstrap_dir}"
+ "${debootstrap_cmd}" --include=openssh-server --arch=${arch} ${suite} ${bootstrap_dir} \
+ ${mirror} ${script}
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "bootstrap finished"
+ fi
+fi
+
+chroot_mount() {
+ mount -t proc none "${bootstrap_dir}/proc" || true
+ mount -t sysfs none "${bootstrap_dir}/sys" || true
+ mount -o bind /dev "${bootstrap_dir}/dev" || true
+ mount -t devpts none "${bootstrap_dir}/dev/pts" || true
+}
+
+chroot_umount() {
+ umount "${bootstrap_dir}/dev/pts" || true
+ umount "${bootstrap_dir}/dev" || true
+ umount "${bootstrap_dir}/sys" || true
+ umount "${bootstrap_dir}/proc" || true
+}
+
+TRAPFUNC="umount \"${bootstrap_dir}/dev/pts\" || true; \
+umount \"${bootstrap_dir}/dev\" || true; \
+umount \"${bootstrap_dir}/sys\" || true; \
+umount \"${bootstrap_dir}/proc\" || true;"
+
+# config
+if [ "${configure}" ]
+then
+ if [ ! -f "${manifest}" ]
+ then
+ echo "ERROR: ${manifest} does not exist" >&2
+ exit 1
+ fi
+ if [ ! -f "${remote_exec}" ]
+ then
+ echo "ERROR: ${remote_exec} does not exist" >&2
+ exit 1
+ fi
+ if [ ! -f "${remote_copy}" ]
+ then
+ echo "ERROR: ${remote_copy} does not exist" >&2
+ exit 1
+ fi
+
+ if [ "${trigger_command}" ]
+ then
+ trigger_line="__cdist_preos_trigger http --trigger-command '${trigger_command}'\n"
+ else
+ trigger_line=""
+ fi
+
+ if [ "${keyfile_cnt}" -a "${keyfile_cnt}" -gt 0 ]
+ then
+ i="$((keyfile_cnt - 1))"
+ keyfiles=""
+ while [ "${i}" -ge 0 ]
+ do
+ kf_var="keyfile_${i}"
+ eval kf='$'"${kf_var}"
+ if [ ! -f "${kf}" ]
+ then
+ echo "ERROR: ${kf} does not exist" >&2
+ exit 1
+ fi
+ key=$(cat "${kf}")
+ keyfiles="${keyfiles} --key '${key}'"
+ i=$((i - 1))
+ done
+ ssh_auth_keys_line="__ssh_authorized_keys root ${keyfiles}\n"
+ else
+ ssh_auth_keys_line=""
+ fi
+
+ check_bootstrap_dir "${bootstrap_dir}"
+
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "configuring..."
+ fi
+
+ trap "${TRAPFUNC}" 0 1 2 3 15
+
+ chroot_mount
+
+ chroot "${bootstrap_dir}" /usr/bin/apt-get update
+
+ if [ "${drive}" ]
+ then
+ grub_manifest_line="__package grub-pc --state present\n"
+ grub_kern_params_line="__line linux_kernel_params \
+--file /etc/default/grub \
+--line 'GRUB_CMDLINE_LINUX_DEFAULT=\"quiet splash net.ifnames=0\"'\n"
+ else
+ grub_manifest_line=""
+ grub_kern_params_line=""
+ fi
+ grub_lines="${grub_manifest_line}${grub_kern_params_line}"
+
+ printf "${trigger_line}${ssh_auth_keys_line}${grub_lines}" \
+ | cat "${manifest}" - |\
+ cdist config \
+ ${cdist_params} -i - \
+ --remote-exec "${remote_exec}" \
+ --remote-copy "${remote_copy}" \
+ "${bootstrap_dir}"
+
+ # __hostname with systmed uses hostnamectl which needs dbus running
+ # set hostname explicitly here instead
+ printf "preos\n" > "${bootstrap_dir}/etc/hostname"
+
+ chroot "${bootstrap_dir}" /usr/bin/apt-get autoclean
+ chroot "${bootstrap_dir}" /usr/bin/apt-get clean
+ chroot "${bootstrap_dir}" /usr/bin/apt-get autoremove
+
+ chroot_umount
+
+ trap - 0 1 2 3 15
+
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "configuring finished"
+ fi
+fi
+
+if [ "${pxe_boot_dir}" ]
+then
+ check_bootstrap_dir "${bootstrap_dir}"
+
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "creating pxe..."
+ fi
+
+ mkdir -p "${pxe_boot_dir}"
+ cp "${bootstrap_dir}"/boot/vmlinuz-* "${pxe_boot_dir}/kernel"
+ cd "${bootstrap_dir}"
+ find . -print0 | cpio --null -o --format=newc | gzip -9 > "${pxe_boot_dir}/initramfs"
+
+ mkdir -p "${pxe_boot_dir}/pxelinux.cfg"
+ cat < "${pxe_boot_dir}/pxelinux.cfg/default"
+ DEFAULT preos
+ LABEL preos
+ KERNEL kernel
+ APPEND utf8 load_ramdisk=1 root=/dev/ram nofb initrd=initramfs console=ttyS1,115200 net.ifnames=0
+EOPXEF
+
+ cp "${bootstrap_dir}/usr/lib/PXELINUX/pxelinux.0" "${pxe_boot_dir}/pxelinux.0"
+ cp "${bootstrap_dir}/usr/lib/syslinux/modules/bios/ldlinux.c32" \
+ "${pxe_boot_dir}/ldlinux.c32"
+ # network boot need all files world readable
+ chmod -R 644 "${pxe_boot_dir}"/*
+
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "pxe creation finished"
+ fi
+fi
+
+if [ "${drive}" ]
+then
+ trap "${TRAPFUNC}" 0 1 2 3 15
+ chroot_mount
+ chroot "${bootstrap_dir}" grub-install ${drive}
+ chroot "${bootstrap_dir}" /bin/sh -c "GRUB_DISABLE_OS_PROBER=true update-grub"
+ # set root password
+ if [ ! "${root_password}" ]
+ then
+ if ! which strings >/dev/null 2>&1
+ then
+ printf "strings is missing\n" >&2
+ exit 1
+ fi
+ root_password="$(head -n 1000 /dev/urandom | strings | \
+ grep -o '[[:alnum:]]' | head -n 30 | tr -d '\n')"
+ printf "Generated root password (without quotes):'${root_password}'\n"
+ fi
+ chroot "${bootstrap_dir}" /bin/sh -c "echo \"root:${root_password}\" | \
+ chpasswd"
+ # /etc/securetty must not be world writeable.
+ chmod 644 "${bootstrap_dir}"/etc/securetty
+ chroot_umount
+ trap - 0 1 2 3 15
+fi
+
+if [ "${rm_bootstrap_dir}" ]
+then
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "removing bootstrap dir..."
+ fi
+ rm -r -f "${bootstrap_dir}"
+ if [ "${verbose}" -o "${debug}" ]
+ then
+ echo "removing bootstrap dir finished"
+ fi
+fi
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile b/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile
new file mode 100644
index 00000000..85168031
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/Makefile
@@ -0,0 +1,18 @@
+# avoid dpkg-dev dependency; fish out the version with sed
+VERSION := $(shell sed 's/.*(\(.*\)).*/\1/; q' debian/changelog)
+
+all:
+
+clean:
+
+DSDIR=$(DESTDIR)/usr/share/debootstrap
+install:
+ mkdir -p $(DSDIR)/scripts
+ mkdir -p $(DESTDIR)/usr/sbin
+
+ cp -a scripts/* $(DSDIR)/scripts/
+ install -o root -g root -m 0644 functions $(DSDIR)/
+
+ sed 's/@VERSION@/$(VERSION)/g' debootstrap >$(DESTDIR)/usr/sbin/debootstrap
+ chown root:root $(DESTDIR)/usr/sbin/debootstrap
+ chmod 0755 $(DESTDIR)/usr/sbin/debootstrap
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/README b/cdist/preos/debootstrap/files/devuan-debootstrap/README
new file mode 100644
index 00000000..4d8c3049
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/README
@@ -0,0 +1,65 @@
+README for debootstrap
+======================
+
+See the manpage for (some) documentation.
+
+Running debootstrap from source
+-------------------------------
+
+You can run debootstrap from its source tree without installing it. This
+can be useful if you want a quick way to make a Debian chroot on another
+system, or if you are testing modifications to debootstrap.
+
+First, get the source.
+
+* Either by using git
+ git clone https://anonscm.debian.org/git/d-i/debootstrap.git
+
+* Or by visiting
+ and downloading the tar.gz file
+
+Then in the debootstrap source directory:
+
+ export DEBOOTSTRAP_DIR=`pwd`
+ sudo ./debootstrap stable my-stable-dir
+
+If you are running a multi-stage boot strap (for example for a QEMU
+rootfs) you don't even need root:
+
+ export DEBOOTSTRAP_DIR=`pwd`
+ fakeroot ./debootstrap --foreign --arch=armhf testing my-testing-dir http://deb.debian.org/debian
+
+Of course you will need to execute the second stage as root to finish the bootstrap:
+
+ (on foreign hardware)
+ /debootstrap/debootstrap --second-stage
+
+
+Future
+------
+
+ * Cross-strap support - so you can bootstrap a filesystem to the
+ point where it will successfully boot, and finish installing itself
+ without having to be running the target architecture or OS yourself.
+
+ debootstrap --arch powerpc sarge ./sarge-ppc-chroot ...
+
+ on an i386 system, boot a powerpc box with sarge-ppc-chroot as its
+ root files system, and have it "work". The cross-hurd package does
+ something similar, and should be replaced by this feature.
+
+ * There should be some (better) way of telling debootstrap what "base"
+ packages you want to install -- this varies between making a chroot,
+ doing an install, and doing a buildd. Also, some installs want
+ different base packages (to setup networking, or kernels, eg)
+
+
+NMUing
+------
+
+If there's a problem with debootstrap that you need fixed, feel free to do
+an NMU to fix it. Usual rules: try not to break anything, and mail the
+patch to the BTS. Don't worry about asking first though.
+
+However, note that debootstrap is now team maintained. Anyone in d-i can do
+a release without the bother of a NMU.
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/TODO b/cdist/preos/debootstrap/files/devuan-debootstrap/TODO
new file mode 100644
index 00000000..e5fde0e4
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/TODO
@@ -0,0 +1,11 @@
+
+Features:
+ ++ second stage via chroot debootstrap/debootstrap
+ ++ debootstrap/deb file to record deb destinations/information
+
+ -- configuration file
+ -- versus command line
+ -- support for sources (vs mirrors)
+ -- faux-pinning for packages
+
+ ++ makedev in second stage
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore
new file mode 100644
index 00000000..39638d97
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/.gitignore
@@ -0,0 +1,6 @@
+debootstrap
+debootstrap-udeb
+files
+*.debhelper.log
+*.substvars
+
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource
new file mode 100644
index 00000000..6446a088
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/README.DevuanSource
@@ -0,0 +1,15 @@
+To sync up with debians source for inspiration you should run the following:
+
+ `git remote add alioth-git git://anonscm.debian.org/d-i/debootstrap.git`
+ `git fetch alioth-git`
+
+After that you can either cherry-pick or merge releases from debian. To
+merge a release, it's do:
+ `git tag` to list the release tags
+and
+ `git merge `
+followed by all the fixups and then commit with an appropriate message like
+ "Merging Release from debian"
+
+Copyright 2016 Daniel Reurich
+
diff --git a/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog
new file mode 100644
index 00000000..8688197d
--- /dev/null
+++ b/cdist/preos/debootstrap/files/devuan-debootstrap/debian/changelog
@@ -0,0 +1,2655 @@
+debootstrap (1.0.87+devuan1.1) unstable; urgency=medium
+
+ * add git to builddeps
+
+ -- Daniel Reurich Fri, 13 Jan 2017 23:12:50 +1300
+
+debootstrap (1.0.87+devuan1.0) unstable; urgency=high
+
+ [ Julien Cristau ]
+ * Default to split /usr again, as merged-/usr breaks dpkg-shlibdeps
+ (closes: #844221).
+
+ [ Riku Voipio ]
+ * remove scratchbox2 support (closes: #796189)
+
+ -- Christian Perrier Wed, 16 Nov 2016 06:47:27 +0100
+
+debootstrap (1.0.86+devuan1.0) unstable; urgency=high
+
+ [ Daniel Reurich ]
+ * Restore Devuan Jessie version
+ * switch to 3.0 (git) source format
+ * set git-depth
+ * Add directions for inspiration from debians source
+ * removed file so we can build using git source format
+ * merge 1.0.86 for jessie
+
+ -- Daniel Reurich Fri, 13 Jan 2017 15:58:19 +1300
+
+debootstrap (1.0.86) unstable; urgency=high
+
+ * Rework split_inline_sig by using shell built-ins instead of trying to
+ mix sed and tr together, which might work on regular systems but not
+ from inside the Debian Installer (Closes: #842591). Thanks to Ansgar
+ Burchardt for the proof of concept!
+
+ -- Cyril Brulebois Sun, 30 Oct 2016 23:35:45 +0100
+
+debootstrap (1.0.85-1+devuan1) unstable; urgency=medium
+
+ * sync with debian upstream package
+ * add right keyrings with the new schema on devuan-keyring package
+
+ -- Franco (nextime) Lanza Sat, 29 Oct 2016 23:21:57 +0200
+
+
+debootstrap (1.0.85) unstable; urgency=medium
+
+ [ Julien Cristau ]
+ * Add support for downloading and validating InRelease files, by splitting
+ up detached signature from signed data.
+ * Switch default mirror to deb.debian.org.
+
+ [ Colin Watson ]
+ * Add (Ubuntu) zesty as a symlink to gutsy.
+
+ [ Ansgar Burchardt ]
+ * Add jessie-kfreebsd to merged-/usr blacklist.
+ * No longer Build-Depend on makedev. The code using it was already
+ removed in debootstrap 1.0.82.
+ * Do not use `tar -k` for older releases which might have file
+ conflicts between the packages to be installed. (Closes: #838388)
+ * Error out when seeing short options. (Closes: #548880)
+ * Add oldoldstable -> sid script symlink. (Closes: #792734)
+ * Add buster -> sid and bullseye -> sid script symlinks.
+ * Only unpack and configure the base system when there are actually
+ packages to install. (Closes: #825034)
+ * debootstrap.8: Use stretch instead of wheezy in examples.
+
+ [ Marco d'Itri ]
+ * Enable merged-/usr by default. (Closes: #839046)
+
+ -- Julien Cristau Fri, 21 Oct 2016 20:22:49 +0200
+
+debootstrap (1.0.84) unstable; urgency=medium
+
+ [ Ansgar Burchardt ]
+ * Add support for xz-compressed Packages indices. (Closes: #837649)
+
+ -- Christian Perrier Thu, 06 Oct 2016 06:59:38 +0200
+
+debootstrap (1.0.83) unstable; urgency=medium
+
+ [ Ansgar Burchardt ]
+ * functions: Validate that the requested suite is listed in the
+ Release file's Suite or Codename field. (Closes: #837075)
+ * Add support for merged-/usr, enabled by a new --merged-usr option.
+ (Closes: #810301)
+ * Feign install of dpkg in second stage. This avoids problems when
+ using dpkg-deb together with busybox' tar. (Closes: #837185)
+ * README: Use https://.
+
+ [ Steve McIntyre ]
+ * Update Standards-Version to 3.9.8 (no changes needed)
+
+ -- Steve McIntyre <93sam@debian.org> Tue, 13 Sep 2016 13:16:41 +0100
+
+debootstrap (1.0.82) unstable; urgency=medium
+
+ [ Alex Bennée ]
+ * Excise all devices.tar.gz code. Closes: #830869
+
+ -- Christian Perrier Thu, 08 Sep 2016 07:09:56 +0200
+
+debootstrap (1.0.81) unstable; urgency=medium
+
+ [ Luca Falavigna ]
+ * Add (Ubuntu) yakkety as a symlink to gutsy.
+
+ -- Christian Perrier Tue, 03 May 2016 06:51:57 +0200
+
+debootstrap (1.0.80-1+devuan1) unstable; urgency=medium
+
+ * sync with debian upstream package.
+
+ -- Franco (nextime) Lanza Sun, 24 Apr 2016 06:16:29 +0200
+
+debootstrap (1.0.80) unstable; urgency=medium
+
+ [ Jon Boden ]
+ * scripts/gutsy: Support kfreebsd & hurd arches on Ubuntu targets
+ (closes: #818748)
+
+ -- Christian Perrier Tue, 22 Mar 2016 19:27:45 +0100
+
+debootstrap (1.0.79) unstable; urgency=medium
+
+ [ Samuel Thibault ]
+ * hurd: move setting up dev and servers firmlink to setup_proc stage. Also
+ firmlink proc there. Thanks Gabriele Giacone for all the investigation!
+ (Closes: #768102)
+
+ -- Christian Perrier Fri, 19 Feb 2016 07:23:59 +0100
+
+debootstrap (1.0.78+nmu1) unstable; urgency=medium
+
+ * Non-maintainer upload.
+ * Split setup_devices in setup_devices (which now only deals with static
+ device nodes) and setup_dynamic_devices, and move the calls to
+ setup_devices from the beginning of the second stage to the end of the
+ first stage.
+ setup_dynamic_devices mounts the appropriate filesystems which provide
+ dynamic device nodes for the architectures which need one in
+ debootstrap (kfreebsd and hurd).
+ This fixes a bug in --second-stage introduced in 1.0.34 and exposed
+ by the devices-related changes of 1.0.76: the second stage debootstrap
+ runs "dpkg --print-architecture >/dev/null" at the very beginning of
+ the program when /dev is still empty, so it creates an empty regular
+ file in place of /dev/null and this will cause mknod to fail later.
+ (Closes: #813232)
+
+ -- Marco d'Itri Wed, 17 Feb 2016 01:23:23 +0100
+
+debootstrap (1.0.78) unstable; urgency=high
+
+ * Use HTTPS for Vcs-* URLs, and link to cgit rather than gitweb.
+ * Don't call mknod with the --mode option, it's not supported in
+ busybox. Use -m instead - fixes the broken fix for #812811.
+ Closes: #813124. Urgency high to get this fix propagated quickly -
+ it's breaking d-i installs right now. Adding myself to uploaders and
+ uploading.
+
+ -- Steve McIntyre <93sam@debian.org> Fri, 29 Jan 2016 16:36:00 +0000
+
+debootstrap (1.0.77) unstable; urgency=medium
+
+ [ Marco d'Itri ]
+ * Fix permissions on device nodes (Closes: #812811).
+
+ -- Cyril Brulebois Wed, 27 Jan 2016 20:22:05 +0100
+
+debootstrap (1.0.76) unstable; urgency=medium
+
+ [ Marco d'Itri ]
+ * Stop creating useless device nodes (Closes: #571136).
+
+ -- Cyril Brulebois Sun, 24 Jan 2016 08:55:18 +0100
+
+debootstrap (1.0.75-1+devuan1) unstable; urgency=medium
+
+ * sync with debian upstream package
+
+ -- Franco (nextime) Lanza Wed, 02 Dec 2015 04:05:36 +0100
+
+debootstrap (1.0.75) unstable; urgency=medium
+
+ * Stop cleaning KEEP_DEBOOTSTRAP_DIR twice, as spotted by Chris Lamb
+ (Closes: #804415).
+ * Add Tanglu support (Closes: #771687), thanks to Matthias Klumpp. At
+ the moment, the following extra suites are recognized:
+ - aequorea
+ - bartholomea
+ - chromodoris
+ - dasyatis
+
+ -- Cyril Brulebois Wed, 11 Nov 2015 18:49:28 +0100
+
+debootstrap (1.0.74) unstable; urgency=medium
+
+ [ Colin Watson ]
+ * Add (Ubuntu) xenial as a symlink to gutsy.
+
+ -- Christian Perrier Tue, 03 Nov 2015 07:09:23 +0100
+
+debootstrap (1.0.73) unstable; urgency=medium
+
+ * Generate a deburis file with (package, version, uri) tuples, similar
+ to the existing debpaths.
+
+ -- Cyril Brulebois Thu, 22 Oct 2015 12:43:35 +0200
+
+debootstrap (1.0.72-1+devuan1) unstable; urgency=medium
+
+ * Rebase on debian 1.0.70 debootstrap version
+ * Added Daniel Reurich in Uploaders
+ * Integrating Daniel Reurich patches for d-i
+ * Updated manpage with Daniel Reurich changes
+
+ -- Franco (nextime) Lanza Thu, 21 May 2015 05:45:36 +0200
+
+debootstrap (1.0.72) unstable; urgency=medium
+
+ [ Iain Lane ]
+ * Add (Ubuntu) wily as a symlink to gutsy (closes: #787117).
+
+ [ Colin Watson ]
+ * Fix resolve_deps and setup_available to work in the --foreign case
+ (closes: #757819, LP: #1450980).
+
+ -- Colin Watson Tue, 28 Jul 2015 14:32:19 +0100
+
+debootstrap (1.0.71-1+devuan1) unstable; urgency=medium
+
+ * make devuan-baseconf and devuan-keyring requireds packages
+ * make sure we have sysvinit-core and not systemd in the chroot
+
+ -- Franco (nextime) Lanza Fri, 01 May 2015 02:13:04 +0200
+
+debootstrap (1.0.71) unstable; urgency=medium
+
+ * Adjust sed call to render it more portable (missing ';'), making it
+ work with FreeBSD sed. Thanks to Nikolai Lifanov for the report and
+ the patch (Closes: #791802).
+
+ -- Cyril Brulebois Fri, 10 Jul 2015 01:29:52 +0200
+
+debootstrap (1.0.70-1+devuan1) unstable; urgency=medium
+
+ * Debianization of debootstrap.
+ * added ceres script and link jessie and ascii to it
+
+ -- Franco (nextime) Lanza Sat, 11 Apr 2015 08:03:36 +0200
+
+debootstrap (1.0.70) unstable; urgency=medium
+
+ * Use tr instead of (missing in d-i) xargs (Closes: #785693). Thanks,
+ Julian Schauder!
+
+ -- Cyril Brulebois Tue, 19 May 2015 11:38:27 +0200
+
+debootstrap (1.0.69-1+devuan1) unstable; urgency=medium
+
+ * Fix package description.
+
+ -- Franco (nextime) Lanza Sat, 07 Mar 2015 21:31:07 +0100
+
+debootstrap (1.0.69) unstable; urgency=medium
+
+ [ Cyril Brulebois ]
+ * Make sure to deduplicate package list in download_release to avoid
+ issues while counting downloaded packages. The failure path could lead
+ to printing some strange integer (Closes: #709751, #768445, #785276,
+ #774752).
+ This was reported to mostly happen whenever --no-resolve-deps is used.
+ * Add support for --force-check-gpg so that one can programmatically
+ make sure keyring checks are used and that no fallback to an https
+ mirror happens (Closes: #661501, #733179, #775454).
+ * Switch default mirror from ftp.us.debian.org to the new, official
+ http redirector service: httpredir.debian.org
+ * Make it possible to override the MAKEDEV variable (Closes: #734743).
+ Thanks, Wookey!
+
+ [ Christian Perrier ]
+ * Update Standards to 3.9.6 (checked)
+
+ -- Christian Perrier Mon, 18 May 2015 14:07:43 +0200
+
+debootstrap (1.0.68-2+devuan1) unstable; urgency=medium
+
+ * Added missing symlink.
+
+ -- Franco (nextime) Lanza Sat, 07 Mar 2015 21:18:26 +0100
+
+debootstrap (1.0.68-1+devuan1) unstable; urgency=medium
+
+ * Added script for ascii.
+
+ -- Franco (nextime) Lanza Sat, 07 Mar 2015 11:47:02 +0100
+debootstrap (1.0.68) unstable; urgency=medium
+
+ [ Steven Chamberlain ]
+ * Support the jessie-kfreebsd suite, by using the same script as
+ jessie (a symlink to sid) (Closes: #784927).
+
+ -- Christian Perrier Mon, 11 May 2015 07:46:19 +0200
+
+debootstrap (1.0.67-1+devuan2) unstable; urgency=medium
+
+ * Switch to quilt format
+
+ -- Franco (nextime) Lanza Tue, 03 Mar 2015 07:44:11 +0100
+
+debootstrap (1.0.67+devuan1) unstable; urgency=medium
+
+ * Applied init freedom patch (debian bug 668001)
+ * moved to devuan
+
+ -- Franco (nextime) Lanza Tue, 03 Mar 2015 07:09:36 +0100
+
+debootstrap (1.0.67) unstable; urgency=medium
+
+ [ Cyril Brulebois ]
+ * Apply patch by Jérémy Bobbio to support reproducible builds: specify
+ a modification time on the tar side, and add the -n option to gzip
+ (Closes: #774069). Thanks, Jérémy!
+ * Update setup_apt_sources to look at USE_COMPONENTS if COMPONENTS is
+ empty, fixing the empty sources.list bug with foreign architectures
+ (Closes: #732255, #773867).
+
+ -- Christian Perrier Wed, 14 Jan 2015 07:03:17 +0100
+
+debootstrap (1.0.66) unstable; urgency=low
+
+ [ Cyril Brulebois ]
+ * Specify gzip compression in debian/source/options to allow for better
+ portability on other platforms (Closes: #770214). Thanks, Joey Hess!
+ * Specify gzip compression for debootstrap, and xz for debootstrap-udeb,
+ to mitigate the need for xz on non-Debian platforms (see: #770217).
+
+ -- Christian Perrier Mon, 24 Nov 2014 09:15:50 +0100
+
+debootstrap (1.0.65) unstable; urgency=medium
+
+ [ Julien Cristau ]
+ * Add support for stretch.
+
+ -- Christian Perrier Mon, 10 Nov 2014 09:24:56 +0100
+
+debootstrap (1.0.64) unstable; urgency=medium
+
+ * Add (Ubuntu) vivid as a symlink to gutsy.
+
+ -- Colin Watson Mon, 20 Oct 2014 16:48:49 +0100
+
+debootstrap (1.0.63) unstable; urgency=medium
+
+ [ Joey Hess ]
+ * Move set -e out of shebang line. Closes: #762713
+
+ -- Christian Perrier Thu, 25 Sep 2014 06:44:16 +0200
+
+debootstrap (1.0.62) unstable; urgency=medium
+
+ [ Cyril Brulebois ]
+ * Fix reporting of package version in retrieval and validation steps
+ to cope with epochs.
+
+ -- Christian Perrier Mon, 15 Sep 2014 11:40:54 +0200
+
+debootstrap (1.0.61) unstable; urgency=medium
+
+ * Fix "possibly the package $pkg is at fault" warnings to account for
+ changed error output in dpkg 1.17.2.
+
+ -- Colin Watson Sun, 31 Aug 2014 22:07:49 +0100
+
+debootstrap (1.0.60) unstable; urgency=medium
+
+ [ Adam Conrad ]
+ * Add (Ubuntu) utopic as a symlink to gutsy.
+
+ [ Guillem Jover ]
+ * Sync deb support with latest dpkg-deb (closes: #739136):
+ - Add uncompressed data.tar deb member support.
+ - Add uncompressed and xz control.tar deb member support.
+
+ -- Colin Watson Tue, 06 May 2014 09:37:34 +0100
+
+debootstrap (1.0.59) unstable; urgency=medium
+
+ * Install ca-certificates as well as apt-transport-https for HTTPS
+ installations. This makes it possible to copy certificates that were
+ built into the installer to /usr/local/share/ca-certificates/ and thus
+ have them continue to be trusted after installation.
+
+ -- Colin Watson Thu, 13 Feb 2014 13:42:54 +0000
+
+debootstrap (1.0.58) unstable; urgency=medium
+
+ * Policy version 3.9.5: no changes required.
+ * Install apt-transport-https if installing from an HTTPS mirror
+ (LP: #1135163). It may still be necessary to copy certificates into
+ place, but there's at least a reasonable chance that somebody installing
+ from HTTPS may want to keep using it, and we have to install
+ apt-transport-https at this point otherwise they won't be able to do
+ that end-to-end.
+
+ -- Colin Watson Tue, 11 Feb 2014 17:46:41 +0000
+
+debootstrap (1.0.57) unstable; urgency=medium
+
+ * pkgdetails_perl: Only interpret percentages following whitespace, to
+ cope with GNU wget outputting the local file name (which may contain "%"
+ due to URL-encoding) after it finishes the download (LP: #1172101).
+
+ -- Colin Watson Fri, 07 Feb 2014 16:12:23 +0000
+
+debootstrap (1.0.56) unstable; urgency=low
+
+ [ Tollef Fog Heen ]
+ * Install base-passwd and base-files in two calls rather than one to
+ avoid problems with home-built media with different ordering in
+ Packages. Thanks to Jo Shields for pointing this out and providing
+ the workaround. Closes: #601670. LP: #1001131.
+
+ [ Joey Hess ]
+ * When deboostrapping Debian, and the debian-archive-keyring is not
+ available, switch the default mirror to a https url. This way at
+ least the CA level of security is available even for users who
+ have no way to check gpg keys in the WoT. The https mirror is
+ currently https://mirrors.kernel.org/debian.
+ * Avoid writing https urls into sources.list, as apt does not support https.
+
+ -- Christian Perrier Mon, 30 Dec 2013 08:00:41 +0100
+
+debootstrap (1.0.55) unstable; urgency=low
+
+ [ Matthias Klose ]
+ * Add (Ubuntu) trusty as a symlink to gutsy.
+
+ -- Christian Perrier Tue, 22 Oct 2013 13:43:23 +0200
+
+debootstrap (1.0.53) unstable; urgency=low
+
+ [ Dmitrijs Ledkovs ]
+ * Set debian source format to '3.0 (native)'.
+ * Bump debhelper compat level to 9.
+ * Set Vcs-* to canonical format.
+
+ [ Christian Perrier ]
+ * Update Standards to 3.9.4 (checked)
+
+ -- Christian Perrier Sun, 14 Jul 2013 13:06:33 +0200
+
+debootstrap (1.0.52) unstable; urgency=low
+
+ * scripts/gutsy: Make the fake initctl pass through "initctl version"
+ calls, used by such things as invoke-rc.d to figure out whether it's
+ running under Upstart (LP: #1182540).
+ * scripts/sid, scripts/gutsy: Add a policy-rc.d, matching that in
+ debian-installer-utils. This is the primary way to disable daemon
+ startup.
+
+ -- Colin Watson Wed, 22 May 2013 16:55:59 +0100
+
+debootstrap (1.0.51) unstable; urgency=low
+
+ [ Scott Kitterman ]
+ * Add (Ubuntu) saucy as a symlink to gutsy (closes: #706989).
+
+ [ Colin Watson ]
+ * Clarify location of pkgdetails.c in error message (closes: #708771).
+ * Resolve mount point symlinks relative to the target chroot before
+ unmounting them (closes: #702861, #703037, #704744).
+
+ -- Colin Watson Sat, 18 May 2013 23:18:08 +0100
+
+debootstrap (1.0.50) unstable; urgency=low
+
+ [ Hector Oron ]
+ * Report package version information on package retrieve and validation.
+ Closes: #697675
+
+ -- Christian Perrier Fri, 17 May 2013 13:34:34 +0200
+
+debootstrap (1.0.49) unstable; urgency=medium
+
+ * Add support for jessie. Closes: #706788
+
+ -- Joey Hess Sat, 04 May 2013 23:37:52 -0400
+
+debootstrap (1.0.48) unstable; urgency=low
+
+ * Team upload
+
+ [ Julien Cristau ]
+ * Disable InRelease support. gpgv won't give us back the signed data, and
+ full gpg is not available inside d-i (closes: #703889).
+ * Move extract_release_components to after signature verification.
+ Suggested by Ansgar Burchardt.
+
+ -- Didier Raboud Thu, 04 Apr 2013 16:17:57 +0200
+
+debootstrap (1.0.47) unstable; urgency=low
+
+ * Team upload
+ * Properly decrypt the InRelease file when downloading from an archive
+ where InRelease is used. This longstanding bug was masked by former
+ APT behaviour and was revealed only with recent APT versions
+ Closes: #703146
+ Thanks to Michael Vogt for the analysis and patch
+ * Add a dependency on gpg because of the above change.
+
+ -- Christian Perrier Wed, 20 Mar 2013 21:34:29 +0100
+
+debootstrap (1.0.46) unstable; urgency=low
+
+ * Team upload.
+ * Use `which` to find out sh only if /bin/sh does not exist.
+
+ -- Samuel Thibault Thu, 27 Dec 2012 15:47:16 +0100
+
+debootstrap (1.0.45) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Better support use on Android by not hardcoding /bin/sh
+ in a test file that's created, and instead putting in the
+ actual path to sh. Closes: #694310 Thanks, Shawn Landden
+
+ -- Christian Perrier Sat, 22 Dec 2012 12:56:32 +0100
+
+debootstrap (1.0.44) unstable; urgency=low
+
+ * Remove double quotes to fix for loop on GNU/kFreeBSD, thanks to
+ Oleg Ginzburg (Closes: #693718).
+
+ -- Cyril Brulebois Tue, 20 Nov 2012 23:55:53 +0100
+
+debootstrap (1.0.43) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Fix "arc" typo. Closes: #686680
+
+ [ Colin Watson ]
+ * Add (Ubuntu) raring as a symlink to gutsy.
+
+ [ Christian Perrier ]
+ * Add myself to Uploaders and drop Anthony Towns who is no
+ longer active in debootstrap maintenance for a few years. Thanks
+ for your work, Anthony.
+ * Bump Standards to 3.9.3 (checked)
+ * Replace XC-Package-Type by Package-Type in debian/control
+
+ -- Christian Perrier Sat, 27 Oct 2012 12:46:46 +0200
+
+debootstrap (1.0.42) unstable; urgency=low
+
+ * Downgrade the absence of an InRelease file from a warning to an info
+ message. For now, debootstrap can cope fine without, and it's possible
+ there are Debian mirrors that don't have InRelease; Ubuntu doesn't quite
+ have InRelease support yet either (LP: #1017398).
+
+ -- Colin Watson Tue, 03 Jul 2012 15:34:57 +0100
+
+debootstrap (1.0.41) unstable; urgency=low
+
+ [ Mehdi Dogguy ]
+ * Add support for InRelease files (Closes: #638682)
+
+ -- Joey Hess Thu, 21 Jun 2012 13:16:22 -0400
+
+debootstrap (1.0.40) unstable; urgency=low
+
+ [ Joey Hess ]
+ * When installation or configuration of a package fails, output a message
+ that points the user to the log file. Attempt to grep out the first
+ package that dpkg failed on and show its name too. Closes: #472704
+
+ [ Colin Watson ]
+ * Add (Ubuntu) quantal as a symlink to gutsy.
+
+ -- Colin Watson Thu, 26 Apr 2012 17:44:44 +0100
+
+debootstrap (1.0.39) unstable; urgency=low
+
+ * Retry corrupted downloads rather than carrying on almost regardless.
+ Patch mostly due to Michael Gilbert, rearranged somewhat by me (closes:
+ #618920).
+ * Stop at the end of the retrieval phase if any packages failed to
+ download.
+
+ -- Colin Watson Tue, 13 Mar 2012 17:21:13 +0000
+
+debootstrap (1.0.38) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Improve error message when a decompressor is not available,
+ to indicate which package has been built with bzip today.
+ Closes: #644719
+
+ [ Otavio Salvador ]
+ * Fix --print-debs support when using --foreign param. Closes:
+ #551837.
+
+ [ Colin Watson ]
+ * pkgdetails_perl: Use the last of a sequence of stanzas for the same
+ package name, rather than the first (closes: #649319).
+
+ -- Colin Watson Mon, 21 Nov 2011 13:20:53 +0000
+
+debootstrap (1.0.37) unstable; urgency=low
+
+ * Add (Ubuntu) precise as a symlink to gutsy.
+
+ -- Colin Watson Wed, 05 Oct 2011 21:58:37 +0100
+
+debootstrap (1.0.36) unstable; urgency=low
+
+ * Guess host OS based on uname for non-Debian systems. Closes: #637363
+ * Clarify "target" in usage message.
+ * Fix support for running debootstrap on a FreeBSD host to create a kFreeBSD
+ chroot or jail. Thanks, Arno Toell.
+ * Search PATH for programs, rather than checking hardcoded locations.
+ * Support using md5 and shaN programs, as found on FreeBSD, in addition
+ to md5sum and shaNsum.
+ * When FreeBSD (not kfreebsd) is the host, don't chroot to mount special
+ filesystems.
+ * When debootstrapping on FreeBSD, warn if necessary modules are not
+ loaded. Thanks, Arno Toell.
+ * Workaround for umount bug #634107, which broke pbuilder and "debootstrap ."
+ Closes: #631087
+
+ -- Joey Hess Sun, 21 Aug 2011 18:39:26 -0400
+
+debootstrap (1.0.35) unstable; urgency=low
+
+ [ Robert Millan ]
+ * Don't build devices.tar.gz if building on GNU/kFreeBSD (closes:
+ #637297).
+ * Don't use --arch when we specifically care about the host architecture
+ (closes: #637298).
+
+ -- Colin Watson Wed, 10 Aug 2011 13:04:41 +0100
+
+debootstrap (1.0.34) unstable; urgency=low
+
+ * Add more information regarding the version and architecture in case
+ a download fails. Closes: #633625.
+ * add /usr/sbin and /sbin to PATH for fakechroot variant. Closes:
+ #588773
+ * Move setup_devices to second stage of bootstrap. Closes: #498731,
+ #531316
+
+ -- Otavio Salvador Thu, 28 Jul 2011 19:13:10 +0200
+
+debootstrap (1.0.33) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Mention minbase variant in --help. Closes: #632418
+ * Use md5sums for sarge, which did not consistently have sha1sums
+ everywhere. Closes: #633158
+
+ [ Colin Watson ]
+ * Improve text of error message when decompression command is not
+ available.
+
+ -- Otavio Salvador Sun, 24 Jul 2011 10:33:56 +0200
+
+debootstrap (1.0.32) unstable; urgency=low
+
+ * Use md5sums for woody and potato, which only had those checksums
+ in the Packages files. Closes: #627365
+
+ -- Joey Hess Mon, 30 May 2011 13:57:46 -0400
+
+debootstrap (1.0.31) unstable; urgency=low
+
+ [ Mark Hymers ]
+ * Don't use the Build-Essential: yes field in Debian, use the
+ build-essential package. Closes: #619700.
+
+ [ Colin Watson ]
+ * If ubuntu-keyring is installed, check Release signatures against it when
+ bootstrapping Ubuntu gutsy and later.
+ * Recommend ubuntu-keyring rather than debian-archive-keyring on
+ Ubuntu-derived systems.
+
+ -- Colin Watson Fri, 20 May 2011 09:45:48 +0100
+
+debootstrap (1.0.30) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Recommend debian-archive-keyring, and if it is installed,
+ default to checking gpg signatures of the Release file against it
+ when bootstrapping sid, squeeze, wheezy, etch, and lenny.
+ Closes: #560038
+ * Add --no-check-gpg option that can be used to disable release file
+ verification. Closes: #624229
+ * Needs base-installer 1.117.
+ * Add a warning message if the keyring file is not available, and
+ --no-check-gpg is not specified.
+ * Clear all global variables used for options, so that unclean
+ environment doesn't break debootstrap. Closes: #621657
+ * Removed the --boot-floppies switch and mode. Assuming this has
+ not been used in 10 years.
+
+ [ Colin Watson ]
+ * Resolve dependencies from all requested components (LP: #740167).
+
+ -- Joey Hess Tue, 26 Apr 2011 17:10:00 -0400
+
+debootstrap (1.0.29) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Support bootstrapping oldstable. (Lenny could already be bootstrapped
+ using that suite name.)
+
+ [ Colin Watson ]
+ * Add (Ubuntu) oneiric as a symlink to gutsy.
+
+ -- Colin Watson Tue, 22 Mar 2011 10:58:49 +0000
+
+debootstrap (1.0.28) unstable; urgency=low
+
+ [ Miguel Figueiredo ]
+ * Fix for ar usage, thanks to Guillem Jover. Closes: #598729
+
+ [ Joey Hess ]
+ * Remove 5 second sleeps when debootstrap finds additional required
+ dependencies. d-i just got that much faster.
+ * Use SHA checksums. Defaulting to SHA256, and configurable by
+ SHA_SIZE environment variable. Closes: #614315
+ * If a sha256sum program is not available, fall back to sha1sum.
+ This is to support debootstrap use on embedded systems, which are more
+ likely to have the latter.
+ * Avoid new(?) warning from dpkg about missing Maintainer field when
+ feigning install of a package.
+
+ -- Joey Hess Mon, 21 Feb 2011 20:48:46 -0400
+
+debootstrap (1.0.27) unstable; urgency=low
+
+ [ Miguel Figueiredo ]
+ * Fix bug and typo on --private-key
+ Patch by Jonathan Klee.
+
+ [ Jeremie Koenig ]
+ * Hurd support:
+ - Use the newer setup-translators script and firmlink
+ $TARGET/{dev,servers} in setup_devices_hurd;
+ - Don't attempt to build devices.tar.gz, which is not needed.
+
+ -- Otavio Salvador Mon, 07 Feb 2011 19:40:24 -0200
+
+debootstrap (1.0.26) unstable; urgency=low
+
+ [ Christian Perrier ]
+ * Consistently use tab indenting in scripts/gutsy and scripts/sid
+ Patch by Karl Goetz. Closes: #601821
+ * Fix a typo in the debootstrap script
+ Patch by Karl Goetz. Closes: #601822
+
+ [ Joey Hess ]
+ * sid: Remove old workaround for etch era coreutils/textutils md5sum
+ diversion problem. (#329394)
+
+ -- Otavio Salvador Fri, 12 Nov 2010 10:07:41 -0200
+
+debootstrap (1.0.25) unstable; urgency=low
+
+ * Remove debug statement that slipped in.
+ * Add test to guard against devices.tar.gz being empty.
+ * /dev/MAKEDEV cannot be relied on (udev likes to make it a symlink to
+ true). Always use /sbin/MAKEDEV. Closes: #598080
+
+ -- Joey Hess Sun, 26 Sep 2010 13:18:31 -0400
+
+debootstrap (1.0.24) unstable; urgency=low
+
+ [ Miguel Figueiredo ]
+ * Apply patches from by Jonathan Klee and Guillaume Chauvel
+ to add support to https (closes: #521196).
+
+ [ Colin Watson ]
+ * Add (Ubuntu) natty as a symlink to gutsy.
+
+ [ Joey Hess ]
+ * Add support for wheezy. Closes: #597461
+
+ -- Joey Hess Sun, 19 Sep 2010 21:40:00 -0400
+
+debootstrap (1.0.23) unstable; urgency=low
+
+ * Add (Ubuntu) maverick as a symlink to gutsy.
+ * Add ${misc:Depends}.
+
+ -- Colin Watson Wed, 19 May 2010 13:35:34 +0100
+
+debootstrap (1.0.22) unstable; urgency=low
+
+ * Redo release since it ended up with testing directory in tar.gz.
+
+ -- Otavio Salvador Mon, 22 Feb 2010 16:52:49 -0300
+
+debootstrap (1.0.21) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Apply patch from Clint Adams to add support for
+ gz/bz2/xz data.tar (closes: #458663).
+
+ [ Guillem Jover ]
+ * Refactor deb extractors into two new functions.
+ * Use dpkg-deb if available instead of ar (closes: #557296).
+ * Add an --extractor option to override the automatic extractor selection.
+
+ [ Otavio Salvador ]
+ * Document new --extractor option in manpage.
+ * Apply patch from Vagrant Cascadian not
+ fail if resolv.conf is a broken symlink (closes: #390647).
+
+ [ Frans Pop ]
+ * Use tab indentation in scripts/debian/sid to reduce its size (relevant
+ for Debian Installer).
+ * Add apt to base packages for the buildd variant as it is no longer marked
+ Build-Essential.
+
+ [ Otavio Salvador ]
+ * Apply patch from Andres Salomon to honor
+ --components when using mirror_style 'main' (closes: #561283).
+ * Apply patch from Andres Salomon to fix
+ iteration through components in download_main (closes: #561298).
+
+ [ Joey Hess ]
+ * Allow the suite to be stable, testing, or unstable when debootstrapping
+ Debian. Closes: #288109
+ * Make scripts directory in source tree look like installed directory,
+ and add a section to README explaining an easy way to run
+ debootstrap w/o installing it. Closes: #345762
+ * Convert rules file to use dh with overrides.
+ * Remove binary-basedebs target from debian/rules.
+ This target has been broken in multiple ways since 2007. While I
+ accidentially partially fixed it with the above changes, this is evidence
+ it's dead code that can be safely removed.
+
+ -- Otavio Salvador Sun, 21 Feb 2010 23:11:06 -0300
+
+debootstrap (1.0.20) unstable; urgency=low
+
+ * For recent Ubuntu versions, move $TARGET/sbin/initctl aside in the same
+ way we do start-stop-daemon, so that attempts to control Upstart jobs
+ won't inadvertently affect jobs in the host system.
+ * Rename EXAMPLE section in debootstrap(8) to EXAMPLES (closes: #548458).
+
+ -- Colin Watson Sun, 04 Oct 2009 21:23:07 +0100
+
+debootstrap (1.0.19) unstable; urgency=low
+
+ * Ignore failures from dpkg --predep-package. It exits 1 if there are no
+ suitable packages available, which isn't an error for us, but in_target
+ complains anyway, so just use in_target_nofail; the termination
+ condition is handled immediately afterwards anyway.
+
+ -- Colin Watson Thu, 24 Sep 2009 19:57:05 +0100
+
+debootstrap (1.0.18) unstable; urgency=low
+
+ * Only use dpkg from the chroot, as there is no guarantee dpkg is
+ available outside of the chroot (d-i installation for example).
+
+ -- Aurelien Jarno Wed, 23 Sep 2009 11:37:01 +0200
+
+debootstrap (1.0.17) unstable; urgency=low
+
+ * Remove boneheaded use of sudo left over from testing (closes: #547949).
+
+ -- Colin Watson Tue, 22 Sep 2009 20:10:19 +0100
+
+debootstrap (1.0.16) unstable; urgency=low
+
+ [ Colin Watson ]
+ * Cope with pre-dependencies of included packages that aren't in Priority:
+ required (closes: #487908).
+ * Upgrade to debhelper v7. (Override rules get pretty hairy for this
+ package, so I haven't switched to dh(1).)
+ * Use ports.ubuntu.com as default mirror on sparc for Ubuntu hardy and
+ beyond (LP: #431145).
+ * Add (Ubuntu) lucid as a symlink to gutsy.
+
+ [ Frans Pop ]
+ * Makefile: remove unused ARCH variable.
+
+ -- Colin Watson Mon, 21 Sep 2009 16:28:40 +0100
+
+debootstrap (1.0.15) unstable; urgency=low
+
+ * On Linux, clear out /etc/mtab on exit if it's not a symlink. Should fix
+ problems Wouter Verhelst and Martin Michlmayr are seeing with
+ initramfs-tools MODULES=dep, although it probably isn't a perfect
+ solution.
+
+ -- Colin Watson Thu, 23 Jul 2009 16:45:00 +0100
+
+debootstrap (1.0.14) unstable; urgency=low
+
+ * Apply patch from Felix Zielcke to use "dpkg
+ --print-architecture" to avoid deprecation warning. Closes: #531680.
+ * Reference squeeze instead of sarge in manpage. Based on a patch from
+ Geoff Simmons . Closes: #534575.
+ * Apply patch from Riku Voipio to add support for
+ scratchbox variant. Closes: #536820.
+
+ -- Otavio Salvador Wed, 22 Jul 2009 12:34:54 -0300
+
+debootstrap (1.0.13) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Apply patch from Luca Favatella to improve
+ coding style.
+
+ [ Colin Watson ]
+ * Add (Ubuntu) karmic as a symlink to gutsy.
+
+ -- Colin Watson Fri, 24 Apr 2009 20:08:24 +0100
+
+debootstrap (1.0.12) unstable; urgency=low
+
+ [ Otavio Salvador ]
+ * Improve code to choose between libc packages. Thanks to Luca Favatella
+ for first version of the patch.
+
+ [ Colin Watson ]
+ * Remove partial support for emitting translated progress messages with
+ gettext. Don't panic; d-i still has all the support necessary for this.
+ debootstrap's own support for doing this outside d-i with gettext's
+ shell bindings has been completely broken ever since it was added in
+ 2003, though, and nobody has complained. Fixing it would require a big
+ pile of infrastructure and some non-trivial patches, plus arranging to
+ copy all the translations over from base-installer, and it just doesn't
+ seem worth it, so lose the cruft (LP: #188690).
+ * Export PATH, just to make sure. It isn't necessarily exported by shells
+ running from init=/bin/sh or similar, and the upstream bash maintainer
+ is unwilling to export it by default; it's easy enough to do so here
+ (LP: #320188).
+
+ -- Colin Watson Tue, 17 Mar 2009 16:38:46 +0000
+
+debootstrap (1.0.11) unstable; urgency=low
+
+ * Add (Ubuntu) jaunty as a symlink to gutsy.
+ * Clarify that --second-stage is needed to complete the bootstrapping
+ process after --foreign.
+ * Fix --make-tarball= option (closes: #484869).
+ * Fix old Debian scripts and all Ubuntu scripts to cope with Anthony's
+ change in 1.0.8 to make --second-stage not bother recalculating required
+ and base.
+ * Rename 'repeat' to 'repeatn', since 'repeat' is a reserved word in zsh;
+ although strictly speaking this seems like an incompatibility in zsh
+ when linked to /bin/sh (closes: #340058).
+ * Fix --unpack-tarball= option (thanks, Torsten Landschoff; closes:
+ #500759).
+ * Fix handling of relative DEBOOTSTRAP_DIR (thanks, Mikhail Gusarov;
+ closes: #503460).
+ * Cope with ancient versions of chroot(8) that don't call chdir() (thanks,
+ Patrik Arvhult; closes: #350635).
+ * Recommend gnupg for --keyring option (thanks, Robert Millan; closes:
+ #467571).
+ * Note that you can't --include packages with non-required Pre-Depends
+ (see #487908).
+ * Mention /sys in EXAMPLE section of manual page, and use "defaults"
+ rather than "none" as the mount options for /proc (thanks, Raúl Sánchez
+ Siles; closes: #410787).
+ * Add /dev/console to devices.tar.gz (after all, MAKEDEV's 'consoleonly'
+ was added for boot-floppies in the first place; see
+ https://lists.ubuntu.com/archives/ubuntu-devel/2009-January/027230.html).
+ * Add support for squeeze (closes: #513488).
+
+ -- Colin Watson Wed, 18 Feb 2009 23:46:12 +0000
+
+debootstrap (1.0.10) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Avoid "broken pipe" errors in bootstrap.log from the the smallyes function.
+ The errors themselves are inherent to how the function is used, so just
+ suppress them. Closes: #480560.
+
+ [ Frans Pop ]
+ * Do not cache Release and Release.gpg files. Closes: #488424.
+ * Abort if a Packages file failed to verify.
+ * Update standards version to 3.8.0; no other changes needed.
+
+ -- Frans Pop Wed, 02 Jul 2008 17:44:25 +0200
+
+debootstrap (1.0.9) unstable; urgency=low
+
+ [ Frans Pop ]
+ * Error out on unrecognized options to avoid invalid options to be
+ recognized as arguments.
+
+ [ Colin Watson ]
+ * Use 'chown 0:0' in all scripts rather than deprecated 'chown 0.0'
+ (thanks, Evan Klitzke).
+ * Add (Ubuntu) intrepid as a symlink to gutsy.
+
+ -- Colin Watson Tue, 29 Apr 2008 19:36:19 +0100
+
+debootstrap (1.0.8) unstable; urgency=low
+
+ [ Frans Pop ]
+ * Change Priority for the udeb to extra in line with overrides file.
+
+ [ Colin Watson ]
+ * Partially revert r50134; there are people who depend on being able to
+ use the "upstream" Makefile on non-Debian systems. Create necessary
+ directories in the Makefile rather than relying on dh_installdirs to do
+ it (LP: #172645).
+ * Use ftp.us.debian.org rather than ftp.debian.org
+ (http://lists.debian.org/debian-devel-announce/2007/12/msg00002.html).
+
+ [ Anthony Towns ]
+ * Add minbase variant for the sid script that only install apt (and
+ its dependencies) instead of all of base. (Closes: Bug#351912,
+ Bug#452654)
+ * Make --second-stage not bother recalculating required and base as
+ it's not needed.
+ * Make --arch and other arguments accept both "--arch i386" and
+ "--arch=i386" forms of specifying a parameter to avoid the
+ inconsistency.
+
+ [ Stephen R. Marenka ]
+ * Allow installation of etch-m68k. (Closes: Bug#458965)
+
+ [ Colin Watson ]
+ * Add minbase variant for Ubuntu gutsy/hardy; see Anthony's change above.
+ * Minor manual page formatting improvements.
+
+ -- Colin Watson Tue, 15 Jan 2008 11:19:34 +0000
+
+debootstrap (1.0.7) unstable; urgency=low
+
+ * No longer include full devices tarball in udeb.
+ * Also try 'udpkg --print-architecture' when determining the target
+ architecture.
+ * Utility pkgdetails moved from debootstrap-udeb to bootstrap-base so that
+ the udeb can become 'Architecture: all'.
+ * Change /usr/lib/debootstrap to /usr/share/debootstrap. Closes: #430615.
+ * Use tab indentation in debootstrap and functions saving 3kB (relevant for
+ Debian Installer).
+ * Fix various inconsistencies in build scripts.
+ * Fix dpkg-genchanges warning 'missing Priority for source files'.
+ * Update Standards-Version to 3.7.2. No changes needed.
+ * Changes in udeb require base-installer 1.85.
+
+ -- Frans Pop Wed, 14 Nov 2007 12:15:45 +0100
+
+debootstrap (1.0.6) unstable; urgency=low
+
+ * Ensure that the target directory exists in check_sane_mount.
+ * Don't ignore 'make clean' errors. (The Makefile is always present.)
+
+ -- Colin Watson Sun, 21 Oct 2007 10:50:59 +0100
+
+debootstrap (1.0.5) unstable; urgency=low
+
+ [ Colin Watson ]
+ * Don't rely on GNU sed's s///I extension (closes: #350583).
+
+ [ Joey Hess ]
+ * Skip the noexec/nodev test when running --print-debs or other operations
+ that do not involve building systems.
+
+ -- Joey Hess Sat, 20 Oct 2007 23:10:34 -0400
+
+debootstrap (1.0.4) unstable; urgency=low
+
+ [ Neil Williams ]
+ * Add --second-stage-target option that allows embedded to test for
+ installations in a chroot on the device (closes: #445157).
+
+ [ Colin Watson ]
+ * Add (Ubuntu) hardy as a symlink to gutsy.
+ * Unmount /lib/init/rw on exit (closes: #391604).
+ * Cope if uncompressed Packages is missing from Release (closes: #402380).
+ * Don't rely on XSI test(1) extensions.
+ * Add support for ssh:/// URLs (thanks, Steffen Joeris; closes: #434893).
+ * Fix Ubuntu hoary and breezy scripts to unmount /dev etc. on exit
+ (closes: #327708).
+ * Emit an error if we cannot create working devices or executables on the
+ target (based on work by Bastian Kleineidam; closes: #233798).
+
+ -- Colin Watson Fri, 19 Oct 2007 14:57:37 +0100
+
+debootstrap (1.0.3) unstable; urgency=low
+
+ * Ignore errors when unmounting filesystems, to avoid stopping at the
+ first one with problems.
+
+ -- Colin Watson Tue, 21 Aug 2007 12:32:37 +0100
+
+debootstrap (1.0.2) unstable; urgency=low
+
+ [ Joey Hess ]
+ * Document --components in man page.
+ * Update man page, as packages listed in --include should now be auto
+ dep-resolved by default.
+
+ [ Colin Watson ]
+ * Extensive quoting fixes, allowing installation to a target containing
+ spaces (closes: #387673).
+ * scripts/debian/sid: Handle libc0.3 on hurd-i386 (thanks, Michael Banck;
+ closes: #314304).
+ * functions: Stub out /proc setup and add device setup for the Hurd
+ (thanks, Michael Banck; closes: #314311).
+ * Add --version option (closes: #294484).
+
+ [ Otavio Salvador ]
+ * Fix bunzip2 path. Thanks Martín Ferrari by
+ the patch (closes: #436218).
+
+ -- Otavio Salvador Tue, 07 Aug 2007 20:12:55 -0300
+
+debootstrap (1.0.1) unstable; urgency=low
+
+ * scripts/ubuntu/gutsy: Determine buildd variant dynamically using
+ Build-Essential: yes.
+ * scripts/ubuntu/gutsy.fakechroot: Remove devmapper postinst hack, no
+ longer needed.
+ * scripts/ubuntu/*.fakechroot: Merge into the corresponding main scripts
+ as variants.
+
+ -- Colin Watson Fri, 20 Jul 2007 11:55:22 +0100
+
+debootstrap (1.0.0) unstable; urgency=low
+
+ [ Anthony Towns ]
+ * Make debootstrap team maintained under the d-i banner.
+ * Add Joey, Frans and Junichi as uploaders, remove JHM (not in the
+ d-i group).
+ * Make pkgdetails.c not need C99 extensions. (Closes: Bug#398977)
+ * Fix am_doing_phase implementation in debootstrap script. Thanks to
+ Tero Janka for spotting the problem and the fix. (Closes: Bug#409881)
+
+ [ Joey Hess ]
+ * Drop support for sarge from the udeb.
+ * Update README.Debian:
+ - One todo item is done. (I think cross-strap is too, but unsure.)
+ - Reword NMU policy to note that it's team-maintained now.
+ * ACK my prior NMU. Closes: #418600
+ * If /dev/MAKEDEV DNE, as on certain s390 machines, use /sbin/MAKEDEV.
+ Closes: #420908
+ Note that /dev/MAKEDEV is still the correct location, and is still tried
+ first so that building works on all FHS systems, as noted in #190239.
+
+ [ Colin Watson ]
+ * Add support for Ubuntu dapper (Closes: #342838), edgy, feisty, and
+ gutsy. Exclude everything but gutsy from the udeb.
+ * Fix "deboostrap" typo in debootstrap(8) (thanks, Adam Conrad).
+ * Fix "htp" typo in temporary /etc/apt/sources.list.
+ * Drop support for woody from the udeb too.
+ * When removing $TARGET/debootstrap, debootstrap.log is still open as
+ stdout/stderr and needs to remain so, but after unlinking it some NFS
+ servers implement this by a temporary file in the same directory, which
+ makes it impossible to rmdir that directory. Moving it instead works
+ around the problem (thanks, Steven McCoy;
+ https://launchpad.net/bugs/65003).
+ * Fix formatting error in debootstrap(8) (.R is not a macro).
+ * Reorganise scripts into scripts/debian/ and scripts/ubuntu/ directories
+ in the source tree to declutter the top level.
+ * Add default_mirror function; reorganise the debootstrap script a little
+ so that it works. Set the default mirror for Ubuntu suites to
+ http://archive.ubuntu.com/ubuntu, and the default mirror for Debian
+ etch/lenny/sid architectures other than amd64 and i386 to
+ http://ftp.us.debian.org/debian (per ajt; see bug #363049).
+ * Add devices created by fd to devices-std.tar.gz, so that
+ /dev/std{in,out,err} is available conveniently in chroots with /proc and
+ /dev/pts mounted (thanks, Matthias Klose).
+ * Document --keyring and --make-tarball. (Closes: #368988)
+ * Update Ubuntu mirrors: warty/hoary/breezy => old-releases.ubuntu.com,
+ unsupported architectures => ports.ubuntu.com.
+ * Add myself to Uploaders.
+ * Bump to 1.0.0. Nobody uses debootstrap in production, do they?
+
+ [ Joey Hess ]
+ * Remove the extended package description (aka bloat) from the udeb.
+
+ -- Colin Watson Sat, 23 Jun 2007 02:19:27 +0100
+
+debootstrap (0.3.3.3) unstable; urgency=low
+
+ * NMU
+ * Add support for lenny.
+
+ -- Joey Hess Tue, 10 Apr 2007 15:24:15 -0400
+
+debootstrap (0.3.3.2) unstable; urgency=low
+
+ * NMU with maintainer approval
+ * Remove --force-auto-select option for 'sid' script as it is no longer
+ supported by dpkg. Closes: #409527.
+
+ -- Frans Pop Fri, 16 Feb 2007 20:43:36 +0100
+
+debootstrap (0.3.3.1) unstable; urgency=low
+
+ * NMU with maintainer approval
+ * functions/get_debs: build list of available packages from all specified
+ sources; this allows debootstrap to also use e.g. custom versions of base
+ packages from a source of local packages included on an installation CD.
+ Closes: #398762.
+
+ -- Frans Pop Thu, 16 Nov 2006 05:30:43 +0100
+
+debootstrap (0.3.3) unstable; urgency=low
+
+ * Include kFreeBSD and fakechroot support from 0.3.2.1 and 0.3.2.2 NMUs,
+ thanks to Otavio Salvador and Piotr Roszatycki. (Closes: Bug#319100,
+ Bug#328446, Bug#204652, Bug#315044, Bug#Bug#319799)
+
+ * Require target to be specified in all cases; document usage of target
+ for --print-debs. (Closes: Bug#335922, Bug#337230)
+
+ * Use ln -sf when symlinking awk for woody and sarge. (Closes: Bug#299048)
+
+ -- Anthony Towns Sun, 6 Nov 2005 04:12:39 +1000
+
+debootstrap (0.3.2.2) unstable; urgency=low
+
+ * NMU
+ * Added relicensed fakechroot variant. Closes: #204652.
+
+ -- Piotr Roszatycki Sat, 29 Oct 2005 11:29:00 +0200
+
+debootstrap (0.3.2.1) unstable; urgency=low
+
+ * NMU with maintainer approval
+ * Applied patch from Robert Millan to add support to
+ Debian GNU/kFreeBSD. Closes: #319799
+
+ -- Otavio Salvador Fri, 28 Oct 2005 16:14:57 -0200
+
+debootstrap (0.3.2) unstable; urgency=low
+
+ * Revert fakechroot NMUs (0.3.1.1, 0.3.1.3, 0.3.1.7) due to incompatible
+ license requirements (GPL) (Reopens: Bug#204652)
+
+ * Changes from 0.3.1.2 NMU, thanks to Joey Hess: (Closes: Bug#314810)
+ + Fix incorrect use of "$@" in local. Closes: #314157, #314547
+ + Fix fd redirection in download progress code. See #314373
+ + Remove md5sums file from udeb. Closes: #314378
+ + Fix debian-installer mode warning code. Closes: #314340
+
+ * Changes from 0.3.1.4 NMU, thanks to Joey Hess:
+ + Wrap eval statement in exit_function in parens, working around
+ bug #315444 in busybox sh. Closes: #314373
+
+ * Changes from 0.3.1.5 NMU, thanks to Anibal Monsalve Salazar:
+ + Fixed "--variant=buildd option does not work" for pbuilder,
+ closes: #314858. Patch by Matt Kraai .
+
+ * Changes from 0.3.1.6 NMU, thanks to Joey Hess:
+ + Patch from Colin to redirect status messages to stderr when running
+ --print-debs. Closes: #315875
+ + Restore logging to stderr in debian-installer mode. Closes: #314160
+
+ * Changes from 0.3.1.8 NMU, thanks to Petter Reinholdtsen:
+ + [functions] Mount /sys if it exist and is supported by the kernel.
+ Patch from Cajus Pollmeier, Colin Watson and Ubuntu. (Closes: #289105)
+ + [debootstrap] Document --resolve-deps in usage info. (Closes: #328161)
+ + [etch] Replace libsigc++-1.2-5c102 with libsigc++-1.2-5c2. (Closes: #334506)
+ + [etch] Remove pppoe from base, and only install
+ ipchains on m68k. Patch from Sven Luther. (Closes: #239390)
+ + [sarge] Remove duplicate entries for m68k and amd64. Patch from
+ Frans Pop. (Workaround for bug #319777)
+ + [etch] Add support for ppc64. The patch for 'sid' did no longer
+ apply. Patch from Andreas Jochens. (Closes: #313353)
+ + [sarge,etch,sid] Set DEBCONF_NONINTERACTIVE_SEEN=true during build, to
+ avoid questions during upgrade. (Closes: #238301)
+ + Add script for breezy. Patch from Colin Watson. (Closes: #315940)
+
+ * Changes from 0.3.1.9 NMU, thanks to Joey Hess:
+ + Replace the etch script with a copy of the sid script, which pulls in
+ gnupg, so the installed etch system has a usable apt. Closes: #334521
+
+ * Create /dev/ptmx in minimal devices tarball. (Closes: Bug#317072)
+
+ * Don't create empty available files, since old dpkg and new kernels can't
+ deal with them. (Closes: Bug#308169, Bug#329468)
+
+ * Bump Standards-Version. Bump debhelper compatability level to 4.
+ * Cleanup debian/rules, thanks to Joey Hess. (Closes: Bug#314863)
+
+ * Emit error message if no pkgdetails is available. (Closes: Bug#326831)
+
+ * Turn on --resolve-deps by default. Add --no-resolve-deps as an option.
+ Combined with the previous changes to make the etch script dynamically
+ determine base, this should resolve all the "can't install "
+ bugs. (Closes: Bug#280210, Bug#308361, Bug#318281, Bug#323362,
+ Bug#318254, Bug#313292, Bug#334683, Bug#248578, Bug#289635)
+
+ * md5sum doesn't exist when coreutils is unpacked but not configured;
+ cp it across so it's available for --second-stage. (Closes: Bug#329394)
+
+ * Catch failures in "dpkg --status-fd" (Closes: Bug#317447, Bug#323661)
+
+ * Make "without" work right for duplicates (Closes: Bug#316884,
+ Bug#319777)
+
+ * Simplify and correct file descriptor handling and debootstrap.log
+ behaviour.
+
+ * Delete $TARGET with --print-debs and --make-tarball. (Closes: Bug#328369)
+
+ * Add a --make-tarball option. (Closes: Bug#152845)
+
+ * Create a default sources.list for apt. (Closes: Bug#283234, Bug#315225)
+
+ * Update manpage to talk about woody instead of sarge. (Closes: Bug#315862)
+
+ * Use partial/ directory when downloading. (Closes: Bug#109176)
+
+ -- Anthony Towns Sun, 23 Oct 2005 14:49:08 +1000
+
+debootstrap (0.3.1) unstable; urgency=low
+
+ * sid script updated:
+ - Determine base dynamically (Priority: required for required packages,
+ Priority: important for base packages, Build-Essential: yes for buildd
+ variant base). (Closes: Bug#88984, Bug#193134)
+ - Use fine grained dpkg progress display, thanks again to Colin Watson.
+ (Closes: Bug#229314, Bug#231109, Bug#244563)
+
+ * dpkg output (etc) goes to /var/log/bootstrap.log in the target, rather
+ than stdout. This is probably difficult for frontends to capture
+ at present.
+
+ * Parsing of Packages file sped up. (Yay!)
+
+ * debootstrap.deb now arch: all (Closes: Bug#122465, Bug#131552)
+ - perl implementation of pkgdetails used by preference
+ - devices.tar.gz reduced to minimal set of devices; frontends should
+ setup udev or supply their own devices or similar in future
+ - /usr/lib/debootstrap/arch not shipped
+ - none of the above applies to udebs yet; though the devices.tar.gz
+ change will eventually
+
+ * Support for verifying based on Release.gpg files (--keyring). Thanks
+ to Colin Watson. (Closes: Bug#313383)
+
+ -- Anthony Towns Tue, 14 Jun 2005 00:22:55 +1000
+
+debootstrap (0.3.0) unstable; urgency=low
+
+ * The Gernot Heiser release, dedicated to everyone who drinks enough to
+ lose their better judgement, and those of us who didn't have any in
+ the first place.
+
+ * Major update. New features:
+ + Use $TARGET/debootstrap directory for state info
+ (--keep-debootstrap-dir)
+ + Support for cross-strapping (--foreign / --second-stage)
+ (Closes: Bug#202529)
+ + Support for resolving dependencies (--resolve-deps)
+ + Support for Debian etch, and Ubuntu warty and hoary (Closes: Bug#312417)
+ + Support for handling variants within the main suite script
+ + Support for other versions of base packages in /v/c/apt/archives
+ + Initial support for fine-grained dpkg progress display, thanks to
+ Colin Watson (currently only for warty and hoary)
+ + Initial support for determining base system dynamically.
+ + No longer display "debootstrap.invalid" when working with
+ Release/Packages files. (Closes: Bug#241795, Bug#256255)
+ + Ignores failures for on_exit cleanup commands. (Closes: Bug#253387,
+ Bug#253468, Bug#308774)
+ + Early reporting of unavailable packages.
+ + More efficient parsing of Packages files.
+ + Generalised additions and exclusions. (Closes: Bug#191793)
+ + Handles symlinked configuration files in /etc a little better.
+ (Closes: Bug#161987, Bug#252907, Bug#272257)
+
+ * Dropped support for slink.
+
+ * Use ln -fs for mawk/awk link. (Closes: Bug#248398, Bug#258524)
+
+ * Dropped mail-transport-agent, and hence mailx and at from sid/etch base.
+ (Closes: Bug#168473)
+ * Dropped ipchains for i386 (Closes: Bug#266119)
+ * Other minor changes to meet dependencies, also. (Closes: Bug#312701)
+
+ * Minor manpage fixes. (Closes: Bug#285777)
+ * Add check for specifying no components (CloseS: Bug#283810)
+
+ * Include 0.2.45 NMUs, thanks to Steve Langasek.
+ (Closes: Bug#295571, Bug#283752, Bug#278158)
+
+ -- Anthony Towns Sun, 12 Jun 2005 23:49:58 +1000
+
+debootstrap (0.2.45-0.2) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * [sarge, sid] Replace libparted1.6-0 with libparted1.6-12 for ia64,
+ to keep up with the ABI changes for that package. (Closes: #295571)
+ * [sarge, sid] include pciutils on hppa as well, per request of the
+ hppa folks. (Closes: #283752)
+
+ -- Steve Langasek Fri, 25 Feb 2005 22:23:30 -0800
+
+debootstrap (0.2.45-0.1) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * [sarge, sid] Drop libgnutls10 and libgcrypt7, since they are no
+ longer needed by exim4. (Closes: #278158).
+
+ -- Steve Langasek Thu, 20 Jan 2005 21:20:22 -0800
+
+debootstrap (0.2.45) unstable; urgency=high
+
+ * Acknowledge NMUs. (Closes: #270135)
+ * [woody.buildd] Corrected ia64 special cases. Patch by Brett Johnson
+ . (Closes: #271894)
+
+ -- J.H.M. Dassen (Ray) Sat, 18 Sep 2004 13:49:23 +0200
+
+debootstrap (0.2.44.2) unstable; urgency=low
+
+ * NMU again, this time using the makedev in unstable instead of the
+ experimental so devices.tar.gz isn't empty on ia64... oops... /o\
+
+ -- Bdale Garbee Tue, 14 Sep 2004 20:03:56 -0600
+
+debootstrap (0.2.44.1) unstable; urgency=low
+
+ * NMU to resolve d-i inability to install sid on ia64
+ * add pciutils to the base package list for ia64, to avoid having to regress
+ efibootmgr in unstable, closes: #270315, #268490
+
+ -- Bdale Garbee Mon, 13 Sep 2004 15:11:11 -0500
+
+debootstrap (0.2.44) unstable; urgency=high
+
+ * [sarge] Removed "gcc-3.0-base" and "libstdc++3" for HPPA as they have been
+ removed from sarge as well on that arch. (Closes: #268917)
+
+ -- J.H.M. Dassen (Ray) Mon, 30 Aug 2004 08:53:30 +0200
+
+debootstrap (0.2.43) unstable; urgency=high
+
+ * [sarge] Added back libgnutls10 in order not to break d-i testing.
+ (Closes: #268578, #268663).
+
+ -- J.H.M. Dassen (Ray) Sun, 29 Aug 2004 09:08:48 +0200
+
+debootstrap (0.2.42) unstable; urgency=high
+
+ * Acknowledge NMUs. (Closes: #262137, #262165, #262178, #262375)
+ * [sarge] Switch to libgnutls11 so exim4 can switch. (Closes: #268325)
+ * [sid] Removed "gcc-3.0-base" and "libstdc++3" for HPPA as they have been
+ removed from sid. (Closes: #268049)
+ * [Makefile] Make the regular video devices on all archs. (Closes: #265081)
+ * [Makefile,debootstrap] Switched away from deprecated chown syntax;
+ switched away from XSIisms '-a' and '-o'. (Closes: #256098)
+ * [debootstrap.8] Use '\-' rather than '-' in options. (Closes: #263955)
+ Confirmed that the "exlude" typo has already been fixed. (Closes: #254108)
+ Applied patch by Javier Fernández-Sanguino Peña
+ for "file" URL documentation and a more complete example. (Closes: #226662)
+
+ -- J.H.M. Dassen (Ray) Fri, 27 Aug 2004 15:40:02 +0200
+
+debootstrap (0.2.41-0.2) unstable; urgency=low
+
+ * Non-maintainer upload
+ * [sarge, sid] Add missing libgcrypt11 to base, needed by libgnutls11
+ in sid and needed in sarge for opencdk8 to be rebuilt against it
+ (closes: #262375, #262178).
+
+ -- Steve Langasek Fri, 30 Jul 2004 20:26:57 -0700
+
+debootstrap (0.2.41-0.1) unstable; urgency=low
+
+ * Non-maintainer upload with consent of JHM.
+ * Pull libfribidi0 back out of base, it's opportunistically installed
+ by d-i now for the locales that need it (closes: #262137).
+ * Re-add bootloaders on ia64, sparc, mips, hppa, and m68k to base,
+ because debian-installer isn't ready for this change (closes: #262165).
+
+ -- Steve Langasek Thu, 29 Jul 2004 14:14:33 -0700
+
+debootstrap (0.2.41) unstable; urgency=high
+
+ * High urgency upload as per tbm's request.
+ * [sarge, sid] No longer install setserial, as it causes problems on some
+ systems (e.g. #212646) and there is a consensus it is no longer needed in
+ a base environment.
+ * [sarge, sid] Removed aboot, aboot-base, elilo, efibootmgr, silo, dvhtool,
+ delo, palo, vmelilo. As per the consensus reached in the thread starting
+ with http://lists.debian.org/debian-boot/2004/04/msg00634.html, the
+ installation of boot loaders is now debian-installer's responsibility.
+ (Closes: #247906)
+ * [sarge, sid] Added libfribidi0 to base to make debconf localisation into
+ right to left languages possible. (Closes: #253229)
+ * [sarge.buildd] Drop libdb4.0 for libdb4.2 as needed by perl.
+ * [sid] Added libgnutls11 as libgnutls10 is being phased out.
+ * [Makefile] Include /dev/ida on ia64. (Closes: #258055)
+
+ -- J.H.M. Dassen (Ray) Thu, 29 Jul 2004 20:37:37 +0200
+
+debootstrap (0.2.40) unstable; urgency=medium
+
+ * [woody.buildd] Ensure the on_exit umounting of /dev/pts doesn't mess up
+ an otherwise OK exit status. (Closes: #260699)
+ * Acknowledge NMUs. (Closes: #258350, #260253)
+
+ -- J.H.M. Dassen (Ray) Thu, 22 Jul 2004 21:53:20 +0200
+
+debootstrap (0.2.39.2) unstable; urgency=low
+
+ * Non-maintainer upload.
+ * [sarge, sid] Drop quik from powerpc, as debian-installer handles this
+ now (closes: #260253).
+
+ -- Colin Watson Thu, 22 Jul 2004 16:56:19 +0100
+
+debootstrap (0.2.39.1) unstable; urgency=low
+
+ * NMU
+ * add passwd to sid.buildd,sarge.buildd as bash depends on them
+
+ -- Junichi Uekawa Fri, 9 Jul 2004 09:07:28 +0900
+
+debootstrap (0.2.39) unstable; urgency=medium
+
+ * [sarge,sid] Dropped libdb2. Thanks Matt Zimmerman. (Closes: #250813)
+ * [sarge,sid] Dropped libident. Thanks LaMont Jones. (Closes: #251320)
+ * [sarge,sid] Dropped slang1. Thanks LaMont Jones. (Closes: #251328)
+ * [woody.buildd] Install libperl5.6. Thanks Rene Engelhard. (Closes: #251702)
+ * [sarge.buildd] Install libc6.1 rather than libc6 on alpha. Thanks Rene
+ Engelhard. (Closes: #251703)
+
+ Goswin von Brederlow
+ * Copy script for sarge to sid
+ * Add handling for amd64 to sarge/sid scripts
+ * Dropped gcc-3.2-base. (Closes: #250836)
+
+ -- J.H.M. Dassen (Ray) Sat, 5 Jun 2004 10:02:50 +0200
+
+debootstrap (0.2.38.1) unstable; urgency=low
+
+ * NMU.
+ * [sarge] Add libdb4.2 since apt-utils (0.5.25) depends on this.
+
+ -- Otavio Salvador Thu, 20 May 2004 22:18:41 -0300
+
+debootstrap (0.2.38) unstable; urgency=medium
+
+ * [woody.buildd] Readd libgdbmg1 (for perl-modules).
+
+ -- J.H.M. Dassen (Ray) Fri, 7 May 2004 10:55:13 +0200
+
+debootstrap (0.2.37) unstable; urgency=medium
+
+ * [debian/control] Bumped makedev build dependency so as not to get pty
+ permissions problems. (Closes: #246709)
+ * [sid, sid.buildd] Add/switch to libdb4.2 for the new perl packages.
+ * Acknowledge NMU 0.2.36.1. (Closes: #246368)
+
+ -- J.H.M. Dassen (Ray) Tue, 4 May 2004 07:58:02 +0200
+
+debootstrap (0.2.36.1) unstable; urgency=low
+
+ * Non-maintainer upload with maintainer permission.
+ * [sarge, sid] Drop yaboot from powerpc, as debian-installer handles this
+ now (closes: #246368).
+
+ -- Colin Watson Fri, 30 Apr 2004 00:05:02 +0100
+
+debootstrap (0.2.36) unstable; urgency=high
+
+ Joey Hess :
+ * [sid, sarge] Add a subst_package function, and use it to replace libc6
+ with libc6.1 on alpha and ia64, to avoid reordering libc in the required
+ list and work around bug #238963. (Closes: #245680)
+
+ -- J.H.M. Dassen (Ray) Sun, 25 Apr 2004 18:37:42 +0200
+
+debootstrap (0.2.35) unstable; urgency=high
+
+ * [sarge, sid] Dropped syslinux. (Closes: #205379)
+ * [woody, woody.buildd] Removed libgdbmg1. (Closes: #244447)
+ * [debootstrap, functions] Sync at the end of debootstrap. (Closes: #225742)
+
+ -- J.H.M. Dassen (Ray) Thu, 22 Apr 2004 16:51:49 +0200
+
+debootstrap (0.2.34) unstable; urgency=high
+
+ * [sid] Dropped libpci1 and libpci2 as the pciutils dependency change has
+ been reverted. (Closes: #244344)
+
+ -- J.H.M. Dassen (Ray) Thu, 22 Apr 2004 08:14:28 +0200
+
+debootstrap (0.2.33) unstable; urgency=high
+
+ * [sid] Added libpci1 and libpci2 for all archs where pciutils is installed,
+ as pciutils now depends on them. (Closes: #244344)
+
+ -- J.H.M. Dassen (Ray) Sun, 18 Apr 2004 09:41:23 +0200
+
+debootstrap (0.2.32) unstable; urgency=high
+
+ * [sarge, sid] No longer try to filter out console-tools on s390. While
+ console-tools is basically useless on s390, base-config depends on it.
+ (Closes: #241727)
+
+ -- J.H.M. Dassen (Ray) Fri, 9 Apr 2004 16:26:23 +0200
+
+debootstrap (0.2.31) unstable; urgency=medium
+
+ * [sarge] Exim has changed GnuTLS dependencies. Added libgnutls10,
+ libgcrypt7, libgpg-error0, libopencdk8, libtasn1-2; dropped libgnutls7,
+ libgcrypt1, libtasn1-0.
+ * [sarge] Removed libgnutls7, libgcrypt1, libtasn1-0.
+
+ -- J.H.M. Dassen (Ray) Tue, 23 Mar 2004 22:47:28 +0100
+
+debootstrap (0.2.30) unstable; urgency=medium
+
+ * [sarge, sid] aboot needs aboot-base. (Closes: #236368, #239302)
+
+ -- J.H.M. Dassen (Ray) Mon, 22 Mar 2004 21:10:31 +0100
+
+debootstrap (0.2.29) unstable; urgency=low
+
+ * NMU with permission of maintainer.
+ * Added {woody,sarge,sid}.buildd scripts to create build chroots.
+ Closes: #236418.
+ * Added --variant=buildd option for convenient access to these scripts.
+
+ -- Daniel Schepler Wed, 10 Mar 2004 02:29:27 -0800
+
+debootstrap (0.2.28) unstable; urgency=medium
+
+ * [sid] Exim has changed GnuTLS dependencies. Added libgnutls10, libgcrypt7,
+ libgpg-error0, libopencdk8, libtasn1-2; dropped libgnutls7, libgcrypt1,
+ libtasn1-0.
+ * [sarge,sid] Dropped lilo, mbr, modconf, libdevmapper1.00 as
+ debian-installer handles the bootloader installation and modules
+ configuration. (Closes: #232667, #232672, #232673)
+
+ -- J.H.M. Dassen (Ray) Tue, 24 Feb 2004 09:57:35 +0100
+
+debootstrap (0.2.27) unstable; urgency=medium
+
+ * [sarge] Lilo now needs libdevmapper1.00; Removed libopencdk8, libgcrypt7,
+ libgpg-error0.
+
+ -- J.H.M. Dassen (Ray) Sat, 14 Feb 2004 01:19:48 +0100
+
+debootstrap (0.2.26) unstable; urgency=medium
+
+ * [sarge] Removed gcc-3.2-base. (Closes: #230697)
+ * [sid] Lilo now needs libdevmapper1.00 .
+
+ -- J.H.M. Dassen (Ray) Tue, 3 Feb 2004 08:27:54 +0100
+
+debootstrap (0.2.25) unstable; urgency=high
+
+ * [functions] Unmount proc/bus/usb, not proc/usb. (Closes: #229122)
+
+ -- J.H.M. Dassen (Ray) Fri, 30 Jan 2004 18:01:29 +0100
+
+debootstrap (0.2.24) unstable; urgency=high
+
+ * [functions, sarge, sid] Try to unmount proc/usb, dev/shm, dev/pts on exit;
+ don't fail when there's nothing to unmount.
+ (Closes: #229122, #229901, #229907)
+ * [woody] Don't fail when there's no dev/pts to unmount.
+ * [sarge, sid] Don't install pcmcia-cs as debian-installer takes care of
+ that where needed. (Closes: #221907)
+ * [sid] Removed libopencdk8, libgcrypt7, libgpg-error0.
+ * [sarge] libopencdk8 (needed for exim4-daemon-light via libgnutls7)
+ Depends: libgcrypt7, libgpg-error0. (Closes: #229989)
+
+ -- J.H.M. Dassen (Ray) Wed, 28 Jan 2004 18:48:02 +0100
+
+debootstrap (0.2.23) unstable; urgency=high
+
+ * [sarge] Dropped libopencdk4 in favour of libopencdk8 as gnutls has switched.
+
+ -- J.H.M. Dassen (Ray) Thu, 1 Jan 2004 01:30:02 +0100
+
+debootstrap (0.2.22) unstable; urgency=high
+
+ * [sid] libopencdk8 Depends: libgcrypt7, libgpg-error0.
+
+ -- J.H.M. Dassen (Ray) Wed, 31 Dec 2003 12:35:03 +0100
+
+debootstrap (0.2.21) unstable; urgency=high
+
+ * [sarge] Added coreutils' new predependencies libacl1 and libattr1; removed
+ libsasl2 as it is no longer needed.
+
+ -- J.H.M. Dassen (Ray) Sun, 28 Dec 2003 22:54:08 +0100
+
+debootstrap (0.2.20) unstable; urgency=high
+
+ * [sarge] base-config now Depends: aptitude; aptitude Depends:
+ libsigc++-1.2-5c102.
+
+ -- J.H.M. Dassen (Ray) Sun, 28 Dec 2003 15:11:31 +0100
+
+debootstrap (0.2.19) unstable; urgency=high
+
+ * [sid] base-config now Depends: aptitude; aptitude Depends:
+ libsigc++-1.2-5c102.
+
+ -- J.H.M. Dassen (Ray) Wed, 24 Dec 2003 09:03:44 +0100
+
+debootstrap (0.2.18) unstable; urgency=low
+
+ * Thanks to Steinar Gunderson and Matt Kraii for the NMU fixing some
+ d-i related problems. (Closes: Bug#220150)
+ * Acknowledge that the problems really are fixed now. (Closes:
+ Bug#213669, Bug#209273, Bug#210912)
+
+ * Fix downloading of Packages files to retry if bz2 or gz isn't available
+ on the mirror. (Closes: Bug#194592)
+
+ -- Anthony Towns Sat, 15 Nov 2003 00:13:13 +1000
+
+debootstrap (0.2.17.1) unstable; urgency=high
+
+ * NMU
+ * [sarge,sid] Display only the package name when retrieving packages.
+ (Closes: #213669, #209273)
+ * [sarge,sid] Added progress information for downloading package
+ details. (Closes: #210912)
+
+ -- Steinar H. Gunderson Mon, 10 Nov 2003 15:11:09 +0100
+
+debootstrap (0.2.17) unstable; urgency=high
+
+ * [sarge] Fixed typo: libreadlin4 -> libreadline4. (Closes: #219655)
+
+ -- J.H.M. Dassen (Ray) Sat, 8 Nov 2003 23:23:37 +0100
+
+debootstrap (0.2.16) unstable; urgency=high
+
+ * [sarge,sid] libreadline4 is required for amiga-fdisk on powerpc.
+ (Closes: #218533)
+ * [sarge,sid] Put libreadline4 in required rather than base for ia64.
+
+ -- J.H.M. Dassen (Ray) Wed, 5 Nov 2003 08:09:41 +0100
+
+debootstrap (0.2.15) unstable; urgency=high
+
+ * ia64 fixes by Richard Hirst : (Closes: #218533)
+ * [sarge, sid] Add libreadline4 to base for ia64 as parted needs it.
+ * [sarge, sid] Remove gcc-2.96-base from required for ia64.
+
+ -- J.H.M. Dassen (Ray) Sat, 1 Nov 2003 12:58:34 +0100
+
+debootstrap (0.2.14) unstable; urgency=high
+
+ * [sarge] Made exim4 the default MTA. (Closes: #217657)
+ * [sarge] Removed libstdc++2.10-glibc2.2, libldap2 .
+ * [sid] Dropped libopencdk4 in favour of libopencdk8 as gnutls has switched.
+
+ -- J.H.M. Dassen (Ray) Tue, 28 Oct 2003 09:56:27 +0100
+
+debootstrap (0.2.13) unstable; urgency=high
+
+ * [sarge] Added libtextwrap1 for tasksel.
+
+ -- J.H.M. Dassen (Ray) Wed, 22 Oct 2003 08:10:37 +0200
+
+debootstrap (0.2.12) unstable; urgency=high
+
+ * [sarge, sid] Add libreadline4 to required for m68k as amiga-fdisk needs
+ it. (Closes: #216617)
+
+ -- J.H.M. Dassen (Ray) Mon, 20 Oct 2003 10:05:09 +0200
+
+debootstrap (0.2.11) unstable; urgency=high
+
+ * [sid] Added libc6-sparc64 lib64gcc1 lib64ncurses5 to base for sparc.
+ (Closes: #215590)
+ * [sarge, sid] Dropped libreadline as bash no longer depends on it.
+ * [sid] Dropped libstdc++2.10-glibc2.2 and its associated special cases as
+ it is no longer needed.
+
+ -- J.H.M. Dassen (Ray) Wed, 15 Oct 2003 19:42:58 +0200
+
+debootstrap (0.2.10) unstable; urgency=high
+
+ * [sid] Fixed /usr/sbin/sendmail symlink to point to exim4. (Closes: #213734)
+
+ -- J.H.M. Dassen (Ray) Sat, 4 Oct 2003 15:47:31 +0200
+
+debootstrap (0.2.9) unstable; urgency=high
+
+ * [sarge] Added libgdbm3 for man-db.
+
+ -- J.H.M. Dassen (Ray) Thu, 2 Oct 2003 23:57:09 +0200
+
+debootstrap (0.2.8) unstable; urgency=high
+
+ * [sid] Added libtextwrap1 for tasksel; removed libsasl2 as it is no longer
+ needed.
+
+ -- J.H.M. Dassen (Ray) Thu, 2 Oct 2003 07:57:16 +0200
+
+debootstrap (0.2.7) unstable; urgency=high (fixes RC d-i bug)
+
+ * [sarge] Reinstated special-case for libperl5.8; it is still needed for
+ non-i386 until sarge has perl >= 5.8.0-20. (Closes: #213280)
+ * [debian/control] Updated Standards-Version; fixed removal of slink and
+ potato scripts from udeb.
+ * [debian/control] Updated priorities; debootstrap-udeb is required (for
+ debian-installer).
+ * [debian/rules] Fixed dpkg-distaddfile accordingly.
+
+ -- J.H.M. Dassen (Ray) Tue, 30 Sep 2003 14:31:57 +0200
+
+debootstrap (0.2.6) unstable; urgency=low
+
+ * [sarge] Added e2fslibs, libcomerr2, libss2, libuuid1 for e2fsprogs.
+
+ -- J.H.M. Dassen (Ray) Fri, 26 Sep 2003 13:50:58 +0200
+
+debootstrap (0.2.5) unstable; urgency=low
+
+ * [sid] Added libgdbm3 for man-db.
+ * [sarge, sid] Dropped special-case for libperl5.8 (Closes: #210425).
+ * [sid] Make exim4 the default MTA as it is configured through debconf.
+ (Closes: #208047)
+ * [sid] Removed libldap2 which is no longer needed.
+
+ -- J.H.M. Dassen (Ray) Sun, 21 Sep 2003 13:30:49 +0200
+
+debootstrap (0.2.4) unstable; urgency=low
+
+ * [sid] Added coreutils' new predependencies libacl1 and libattr1.
+ * [debian/README.Debian] Corrected example invocation. (Closes: #206142)
+ * [debian/README.Debian] Fixed a typo.
+
+ -- J.H.M. Dassen (Ray) Wed, 20 Aug 2003 10:28:49 +0200
+
+debootstrap (0.2.3) unstable; urgency=low
+
+ * [sarge] Add new dependencies of debconf: debconf-i18n
+ liblocale-gettext-perl libtext-wrapi18n-perl libtext-charwidth-perl.
+ * Acknowledge NMU. (Closes: #203370)
+
+ -- J.H.M. Dassen (Ray) Sat, 16 Aug 2003 20:15:40 +0200
+
+debootstrap (0.2.2-0.1) unstable; urgency=low
+
+ * NMU.
+ * Fix typo in woody script. (Closes: #203370)
+
+ -- Petter Reinholdtsen Tue, 29 Jul 2003 20:29:01 +0200
+
+debootstrap (0.2.2) unstable; urgency=low
+
+ * [debian/changelog] Included entries for NMUs 0.1.17.31 through .34 whose
+ changes were incorporated by aj already.
+ * [Makefile] Invoke MAKEDEV through its FHS location (noted by Matt
+ Zimmerman). (Closes: #190239)
+ * Acknowledge older NMUs whose changes have been incoporated.
+ (Closes: #135675, #161695, #191849)
+
+ -- J.H.M. Dassen (Ray) Tue, 29 Jul 2003 18:31:49 +0200
+
+debootstrap (0.2.1) unstable; urgency=low
+
+ * The Day of the Daffodils release.
+
+ * Accept NMUs up to 0.1.17.30. Thanks guys! (Closes: Bug#148377,
+ Bug#150161, Bug#150492, Bug#153962, Bug#154463, Bug#155906,
+ Bug#160879, Bug#161469, Bug#161469, Bug#161722, Bug#163860,
+ Bug#172118, Bug#176221, Bug#179504, Bug#179725, Bug#185397,
+ Bug#187893, Bug#188053, Bug#189472, Bug#189551, Bug#190108,
+ Bug#191288, Bug#193794, Bug#193806, Bug#195012, Bug#195742,
+ Bug#199333, Bug#201066)
+ * JHM added to Uploaders.
+
+ * Change the info/error/warning/progress calls to include a unique word
+ for each string, a printf format string, and any arguments to the
+ printf string.
+ * Add support for debian-installer interaction
+
+ * Add some support for l10n. Gettext is used if it's available; no
+ translations are included as of yet. This support doesn't
+ affect debian-installer, which has its own stuff for i18n, nor
+ boot-floppies. (Closes: Bug#125647)
+
+ * Some initial support for cross-bootstrapping in the sid script.
+
+ * Use dpkg --print-installation-architecture instead of
+ --print-architecture. (Closes: Bug#138526, Bug#159720)
+
+ * Add new dependencies of debconf: debconf-i18n liblocale-gettext-perl
+ libtext-wrapi18n-perl libtext-charwidth-perl. (Closes: Bug#201066)
+ * Add new dependencies of libldap2: libgnutls7 libgcrypt1 liblzo1
+ libopencdk4 libtasn1-0 zlib1g. (Closes: Bug#201663)
+ * Remove libgdbmg1. (Closes: Bug#202304)
+ * Add new dependecies of e2fsprogs: e2fslibs libcomerr2 libss2 libuuid1.
+ (Closes: Bug#203033)
+ * Add wget to base. (Closes: Bug#145635)
+ * Switch from netkit-ping to iputils-ping.
+
+ * Changed the manpage a little. (Closes: Bug#126864)
+ * Updated README.Debian.
+
+ -- Anthony Towns Tue, 29 Jul 2003 18:15:24 +1000
+
+debootstrap (0.1.17.34) unstable; urgency=medium
+
+ * [sid] Added e2fsprogs' new predependencies (e2fslibs, libcomerr2, libss2,
+ libuuid1).
+ * [sarge] Removed libgdbmg1 as it is no longer needed.
+
+ -- J.H.M. Dassen (Ray) Sun, 27 Jul 2003 09:20:49 +0200
+
+debootstrap (0.1.17.33) unstable; urgency=medium
+
+ * [sid] Removed libgdbmg1 as it is no longer needed.
+ * [sarge] libldap2 now Depends: libgnutls7, libsasl2; added those and their
+ dependencies (libgcrypt1 liblzo1 libopencdk4 libtasn1-0 zlib1g). Dropped
+ libsasl7 in favour of libsasl2.
+
+ -- J.H.M. Dassen (Ray) Mon, 21 Jul 2003 19:00:28 +0200
+
+debootstrap (0.1.17.32) unstable; urgency=medium
+
+ * [sid] libldap2 now Depends: libgnutls7; added that and its dependencies
+ (libgcrypt1 liblzo1 libopencdk4 libtasn1-0 zlib1g); dropped libssl0.9.7 .
+
+ -- J.H.M. Dassen (Ray) Thu, 17 Jul 2003 07:05:09 +0200
+
+debootstrap (0.1.17.31) unstable; urgency=medium
+
+ * [sid] Follow debconf changes. debconf now Depends: debconf-i18n |
+ debconf-english; debconf-i18n having Priority: important and
+ debconf-english having Priority: extra, so we satisfy the dependency
+ through debconf-i18n. debconf-i18n in turn pulls in three additional
+ packages: liblocale-gettext-perl, libtext-wrapi18n-perl,
+ libtext-charwidth-perl .
+
+ -- J.H.M. Dassen (Ray) Sun, 13 Jul 2003 08:52:55 +0200
+
+debootstrap (0.1.17.30) unstable; urgency=medium
+
+ * [sarge]
+ * Added sysv-rc for /usr/sbin/update-rc.d .
+ * Added initscripts to satisfy sysvinit's predependency.
+ * libparted1.6-0 has replaced libparted1.4 on ia64. (Closes: #197957)
+
+ -- J.H.M. Dassen (Ray) Mon, 30 Jun 2003 07:05:22 +0200
+
+debootstrap (0.1.17.29) unstable; urgency=medium
+
+ * [sid] libconsole has replaced console-tools-libs. (Closes: #195722)
+ * [sarge] libperl5.6 has been replaced by libperl5.8 . (Closes: #195588)
+
+ -- J.H.M. Dassen (Ray) Mon, 2 Jun 2003 00:40:54 +0200
+
+debootstrap (0.1.17.28) unstable; urgency=medium
+
+ * [sarge] libnewt0.51 has replaced libnewt0; it requires slang1a-utf8.
+
+ -- J.H.M. Dassen (Ray) Wed, 28 May 2003 07:42:14 +0200
+
+debootstrap (0.1.17.27) unstable; urgency=medium
+
+ * urgency medium to not hold up .26 with that longer as necessary
+ * [sarge] added libtext-iconv-perl (this is the second part
+ from .22) (closes: #184539)
+
+ -- Rene Engelhard Mon, 19 May 2003 00:08:48 +0200
+
+debootstrap (0.1.17.26) unstable; urgency=medium
+
+ * [sarge] libpcap0.7 has replaced libpcap0.
+
+ -- J.H.M. Dassen (Ray) Sun, 18 May 2003 23:23:46 +0200
+
+debootstrap (0.1.17.25) unstable; urgency=medium
+
+ * [sarge] Added libblkid1 (for e2fsprogs).
+
+ -- J.H.M. Dassen (Ray) Sun, 4 May 2003 12:44:00 +0200
+
+debootstrap (0.1.17.24) unstable; urgency=medium
+
+ * [sid] Updates for new whiptail:
+ * Replaced libnewt0 by libnewt0.51.
+ * Added slang1a-utf8.
+
+ -- J.H.M. Dassen (Ray) Tue, 29 Apr 2003 19:04:51 +0200
+
+debootstrap (0.1.17.23) unstable; urgency=medium
+
+ * [sid]
+ * Added sysv-rc for /usr/sbin/update-rc.d .
+ * Added initscripts to satisfy sysvinit's predependency.
+ * For exim, dropped libsasl7 in favour of libsasl2.
+ * Added libssl0.9.7 for libsasl2.
+
+ -- J.H.M. Dassen (Ray) Tue, 22 Apr 2003 06:56:25 +0200
+
+debootstrap (0.1.17.22) unstable; urgency=low
+
+ * [sid] added libtext-iconv-perl which is needed to display
+ localized po-debconf templates actually localized.
+ This needs a second step later for sarge but that only is possible
+ after libtext-iconv-perl 1.2-2 went into sarge.
+
+ -- Rene Engelhard Fri, 18 Apr 2003 16:25:17 +0200
+
+debootstrap (0.1.17.21) unstable; urgency=medium
+
+ * [sarge, sid] Added gcc-3.3-base (as it is needed for current libstdc++5).
+
+ -- J.H.M. Dassen (Ray) Fri, 18 Apr 2003 08:11:55 +0200
+
+debootstrap (0.1.17.20) unstable; urgency=medium
+
+ * [woody, sarge, sid] Add devfsd on s390 as that architecture uses devfs by
+ default. (Closes: #180252)
+ * [sarge] Removed the dummy fileutils package.
+
+ -- J.H.M. Dassen (Ray) Mon, 7 Apr 2003 19:59:42 +0200
+
+debootstrap (0.1.17.19) unstable; urgency=medium
+
+ * [sid] Added libblkid1 (for e2fsprogs).
+
+ -- J.H.M. Dassen (Ray) Sun, 6 Apr 2003 21:43:29 +0200
+
+debootstrap (0.1.17.18) unstable; urgency=medium
+
+ * [sarge] Added libgcc1, libstdc++5, gcc-3.2-base; dropped aptitude,
+ libsigc++0 .
+ * Debootstrap has depended on binutils since 0.1.17.3. (Closes: #184304)
+
+ -- J.H.M. Dassen (Ray) Wed, 19 Mar 2003 06:55:56 +0100
+
+debootstrap (0.1.17.17) unstable; urgency=medium
+
+ * NMU
+ * Really drop aptitude from the sid script, not just libsigc++0.
+
+ -- J.H.M. Dassen (Ray) Tue, 4 Feb 2003 06:49:36 +0100
+
+debootstrap (0.1.17.16) unstable; urgency=medium
+
+ * NMU
+ * Drop aptitude from the sid script (base-config 1.51 dropped its dependency
+ on it) and libsigc++0 (which was only needed for aptitude). This makes
+ "pbuilder create --distribution sid" work again. (Closes: #177221, #177998).
+
+ -- J.H.M. Dassen (Ray) Sun, 2 Feb 2003 20:41:35 +0100
+
+debootstrap (0.1.17.15) unstable; urgency=low
+
+ * NMU
+ * For gcc-transition, libgcc1 and libstdc++5 and gcc-3.2-base
+ required by groff-base, and potentially other packages compiled with
+ gcc-3.2.
+
+ -- Junichi Uekawa Mon, 13 Jan 2003 15:39:55 +0900
+
+debootstrap (0.1.17.14) unstable; urgency=low
+
+ * NMU
+ * Remove debootstrap-udeb's dependency on retriever.
+
+ -- Tollef Fog Heen Sat, 7 Dec 2002 14:53:52 +0100
+
+debootstrap (0.1.17.13) unstable; urgency=low
+
+ * NMU
+ * sarge: Removed shellutils, textutils and added coreutils instead.
+ Verified that the result works for "pbuilder create --distribution sarge"
+ (Closes: #163789)
+ Fileutils is still in there for now, due to sarge's debconf versioned
+ dependency on it.
+
+ -- J.H.M. Dassen (Ray) Tue, 8 Oct 2002 23:17:47 +0200
+
+debootstrap (0.1.17.12) unstable; urgency=low
+
+ * NMU
+ * Fix shell variable quoting problem, to change $10 -> ${10}
+ (closes: #161468)
+
+ -- Junichi Uekawa Sat, 21 Sep 2002 13:39:47 +0900
+
+debootstrap (0.1.17.11) unstable; urgency=low
+
+ * NMU
+ * sarge: added libdb1-compat.
+
+ -- J.H.M. Dassen (Ray) Sat, 21 Sep 2002 00:37:36 +0200
+
+debootstrap (0.1.17.10) unstable; urgency=low
+
+ * NMU
+ * sid: Removed shellutils, fileutils, and added coreutils for required
+ target (closes: #161332)
+ * sid: change libperl5.6 to libperl5.8 (closes: #158606)
+
+ -- Junichi Uekawa Wed, 18 Sep 2002 21:41:36 +0900
+
+debootstrap (0.1.17.9) unstable; urgency=low
+
+ * NMU
+ * Added "libdb1-compat" to sid and verified that the resulting package is
+ usable for "pbuilder create --distribution sid".
+
+ -- J.H.M. Dassen (Ray) Sat, 14 Sep 2002 15:09:10 +0200
+
+debootstrap (0.1.17.8) unstable; urgency=low
+
+ * NMU
+ * The "it didn't change the way the installer worked" release.
+ * Makefile: create $(DESTDIR)/usr/share/man/man8 before attempting to
+ install a file to it (Closes: #139543)
+ * functions: fix race condition in smallyes() implementation; thanks to Matt
+ Zimmerman for the analysis. "Sometimes, dpkg finishes executing before
+ smallyes runs, and it loops forever while echo fails repeatedly due to the
+ broken pipe." To fix this race, we simply swap the loop condition and
+ body, so that if the echo fails, smallyes() exits cleanly. I further
+ changed "true" to ":" to save the expense of an extra process for shells
+ where "true" is not a built-in.
+ (Closes: #139529)
+
+ -- Branden Robinson Thu, 29 Aug 2002 12:50:08 -0500
+
+debootstrap (0.1.17.7) unstable; urgency=low
+
+ * NMU
+ * Forked "sid" target from "sarge" target, changed "libcap0" to the now
+ current "libpcap0.7" and verified that the result works with pbuilder.
+ (Closes: #156574)
+
+ -- J.H.M. Dassen (Ray) Wed, 21 Aug 2002 11:01:52 +0200
+
+debootstrap (0.1.17.6) unstable; urgency=low
+
+ * NMU
+ * add dselect to required (I found out that it is actually required
+ for pbuilder create to work) (closes: #154527)
+ * change DEBIAN_FRONTEND=Noninteractive to "noninteractive" (closes: #154794)
+ * add sh* patch from Yaegashi (closes: #155142)
+
+ -- Junichi Uekawa Thu, 8 Aug 2002 19:23:04 +0900
+
+debootstrap (0.1.17.5) unstable; urgency=low
+
+ * NMU
+ * mistake in the last upload, sorry aj.
+ sid points to sarge, not woody. (closes: #149971)
+
+ -- Junichi Uekawa Sat, 27 Jul 2002 17:22:05 +0900
+
+debootstrap (0.1.17.4) unstable; urgency=low
+
+ * NMU
+ * add "sarge" target (closes: #153957)
+
+ -- Junichi Uekawa Tue, 23 Jul 2002 18:03:01 +0900
+
+debootstrap (0.1.17.3) unstable; urgency=low
+
+ * NMU
+ * Depend on binutils (closes: #138489)
+ * Sleep is optional (closes: #150468)
+ * POSIXify a bit more (closes: #150487)
+ * Add support for --components (closes: #116801)
+
+ -- Tollef Fog Heen Thu, 20 Jun 2002 00:13:06 +0200
+
+debootstrap (0.1.17.2) unstable; urgency=low
+
+ * NMU
+ * Make sid script not a symlink from woody script
+ * add aptitude and libsigc++0 to base for sid. (closes: #149971)
+
+ -- Junichi Uekawa Sat, 15 Jun 2002 12:46:11 +0900
+
+debootstrap (0.1.17.1) unstable; urgency=low
+
+ * NMU
+ * Add udeb support (closes: #143874)
+
+ -- Tollef Fog Heen Tue, 28 May 2002 14:15:41 +0200
+
+debootstrap (0.1.17) unstable; urgency=high
+
+ * Includes changes from NMUs. Thanks to Stefan Gybas and Eduard Bloch.
+ (Closes: Bug#130764, Bug#135676, Bug#134306, Bug#133882, Bug#131768,
+ Bug#117980, Bug#133298, Bug#130668, Bug#111175, Bug#131147, Bug#95143,
+ Bug#130482)
+
+ * Don't use PIPESTATUS to work out if wget succeeded, since that's a
+ bashism and we're seriously not allowed bashisms. Duh. This should
+ help with all those "Malformed release" problems. Thanks to Phil
+ Blundell and Chris Tillman for spotting this. (Closes: Bug#136729)
+
+ * Apply patch from Matt Zimmerman to get rid of some irritating warnings
+ that can show up sometimes due to sed getting it's output stream closed
+ on it. (Closes: Bug#131478)
+
+ * Don't use "export foo=bar" on a single line since it's a bashism.
+ (Closes: Bug#138187)
+
+ * Made the "smallyes" usage independent of --boot-floppies. Too much
+ code duplication otherwise.
+
+ * Install ipchains on arches that have 2.2.x kernels by default, and
+ iptables on arches that have 2.4.x kernels by default. Some arches
+ have both. (Closes: Bug#134478)
+
+ * Don't rm malformed Release files, rename them to something obvious
+ instead so people can have a hope at seeing what's going on. (Closes:
+ Bug#131756)
+
+ * Error out on missing entries in Release files. (Closes: Bug#136886)
+
+ * Fix basedeb creation to not bother building devices tarball. (Closes:
+ Bug#137243)
+
+ * Workaround for ldconfig no longer needed, so removed. (Closes: Bug#135819)
+ * Workaround for /dev/initctl was never needed and stupid, so removed.
+
+ * Make sure devices.tar.gz is gzip -9'ed. (Closes: Bug#136687)
+
+ * Use any "main" components found in Release file, eg "main",
+ "non-US/main", "local/main". (Closes: Bug#116801)
+
+ * Add parted to base for ia64. (Closes: Bug#138246)
+
+ * Moved the "successful!" message and sleep hack for boot-floppies from
+ the woody script to the debootstrap script itself.
+
+ -- Anthony Towns Thu, 14 Mar 2002 18:28:24 +1000
+
+debootstrap (0.1.16.4) unstable; urgency=low
+
+ * NMU, needed for boot-floppies 3.0.20
+ * Added cciss and ataraid device files, closes: #135675
+ * Applied the patch from Matt Zimmermann to fix --include, closes: #134306
+ * Mail suppression fixed in previous release, closes: #133882
+
+ -- Eduard Bloch Sun, 3 Mar 2002 12:21:19 +0100
+
+debootstrap (0.1.16.3) unstable; urgency=low
+
+ * non-maintainer-upload
+ * require newer makedev, fixes build problems on m86k and arm
+ * unsets $TMP, $TEMP and $TMPDIR in the beginning, closes: #131768, #117980
+ * added gcc-2.96-base to ia64's required packages list, closes: #133298
+
+ -- Eduard Bloch Tue, 12 Feb 2002 19:30:47 +0100
+
+debootstrap (0.1.16.2) unstable; urgency=low
+
+ * non-maintainer-upload
+ * added modification suggested by Branden Robinson and Matt Kraai terminate
+ cat (now tail) better, closes: #130668
+ * provides options to install additional packages, or exclude some from the
+ list. May be needed in boot-floppies soon. Closes: #111175, #131147
+ * --verbose option, closes: #95143
+ * added additional devices to the device list, especially input and usb
+ needed for modern device drivers (Joysticks, USB, Scanners)
+ * added pppoeconf to the packages list, better choice for DSL users
+ * forced remove of dev/initctl, prevents breaking on re-installation
+
+ -- Eduard Bloch Mon, 28 Jan 2002 19:14:41 +0100
+
+debootstrap (0.1.16.1) unstable; urgency=high
+
+ * non-maintainer upload for boot-floppies 3.0.19
+ * Fixed list of base and required packages for s390
+ * setup_devices(): don't fail if devices.tar.gz is not present and we
+ are using devfs
+ * disable handling of /dev/initctl for boot-floppies, closes: #130482
+
+ -- Stefan Gybas Thu, 24 Jan 2002 15:17:42 +0100
+
+debootstrap (0.1.16) unstable; urgency=low
+
+ * Include NMUs 0.1.15.1 - .9, thanks to Adam di Carlo, Ethan Benson and
+ Bdale Garbee. (Closes: Bug#113265, Bug#119314, Bug#119251)
+ * Many bugs were fixed in the NMUs. Closes them properly. (Closes:
+ Bug#89673, Bug#97174, Bug#99229, Bug#105980, Bug#106062, Bug#106102,
+ Bug#106106, Bug#106134, Bug#106711, Bug#106877, Bug#107262,
+ Bug#107404, Bug#107447, Bug#109670, Bug#110312, Bug#111001,
+ Bug#111065, Bug#112778, Bug#112795, Bug#112842, Bug#113444,
+ Bug#114056, Bug#114653, Bug#115467, Bug#115481, Bug#115557,
+ Bug#115581, Bug#115699, Bug#116061, Bug#116424, Bug#119769,
+ Bug#119947, Bug#121724, Bug#123958, Bug#125954, Bug#126018,
+ Bug#126630, Bug#126799)
+
+ * Informative error for people who type `--boot-floppies' when running
+ by hand. (Closes: Bug#107548)
+ * Create dev/initctl in target, and setup a cat process to dump anything
+ sent to it to /dev/null so that if init is run in the chroot,
+ it doesn't try doing anything too clever to talk to the real
+ init. (Closes: Bug#120597)
+ * Create awk symlink since base-files insists on having it available.
+ (Closes: Bug#127934)
+
+ * Use DEBOOTSTRAP_DIR to work out where /usr/lib/debootstrap is.
+ * So, in theory, to create basedeb tarballs, you should be able to unpack
+ the source and say:
+ .
+ fakeroot debian/rules binary-basedebs SUITE=woody VERSION=3.0 \
+ MIRROR="http://ftp.debian.org/debian" ARCHES="i386 powerpc"
+ (Closes: Bug#127546)
+
+ -- Anthony Towns Sun, 20 Jan 2002 21:04:37 +1000
+
+debootstrap (0.1.15.9) unstable; urgency=high
+
+ * non-maintainer upload
+ * debian/rules: new 'basedebs' target that makes basedebs.tgz and 1.44
+ split images for base per arch
+ * functions: better return value handling during wget (wgetprogress)
+ * repeat() had a useless eval, removed, which simplifies some silly
+ quoting
+ * incorrect error message in in_target_msg(), closes: #119769
+ * debian/changelog: remove obsolete "local variables"
+ * additional progress message when validating the release file after
+ download
+ * when the downloaded release file is invalid, make sure to delete it
+ closes: #119947
+ * debian/rules: minor fixes and cosmetics
+ * upgrade wget from Recommends to Depends, closes: #126799
+ * depend on binutils, for 'ar', closes: #123958
+
+ -- Adam Di Carlo Fri, 4 Jan 2002 20:01:58 -0500
+
+debootstrap (0.1.15.8) unstable; urgency=high
+
+ * non-maintainer upload
+ * Fix progress bar hooks to enable proper progress on basedebs.tgz
+ installation as well as actual base installation and extraction.
+ * trap signals so cleanup is still performed.
+ * When in --boot-floppies mode echo a Success info message to stdout, so
+ it will show up on /dev/tty4, this is so users watching tty4 stop
+ being confused when things just stop at completion.
+ * Replace $TARGET/sbin/start-stop-daemon with a shell script instead of
+ /bin/true, this shell script announces that its a fake noop version so
+ users will know whats wrong if debootstrap aborts before completion.
+
+ -- Ethan Benson Sat, 3 Nov 2001 23:14:08 -0900
+
+debootstrap (0.1.15.7) unstable; urgency=high
+
+ * non-maintainer upload
+ * when reporting errors in 'in_target', don't chop down to the first
+ 50 characters
+ * woody: when in boot-floppies mode, provide more user-friendly warning
+ messages, using new 'in_target_msg' function
+ * woody: more info messages for the core/required/base package
+ installation part
+ * instead of 'ln -s' we should be using 'ln -sf'; this would prevent
+ running debootstrap twice in the same target dir; closes: #111065
+ * before mounting proc, umount it just in case; normally this shouldn't
+ be needed if on_exit is working all the time, but I find without this,
+ sometimes problems are caused
+ * woody/i386 needs psmisc for pcmcia-cs (critical bug!)
+ * --download-only mode can be run as non-root; closes: #116424
+ * tested some problems which I couldn't reproduce
+ closes: #115699
+
+ -- Adam Di Carlo Wed, 24 Oct 2001 16:05:39 -0400
+
+debootstrap (0.1.15.6) unstable; urgency=medium
+
+ * non-maintainer upload
+ * smaller and wiser version of smallyes(), thanks to Herbert Xu
+ * woody base includes pcmcia-cs for i386 and powerpc (closes: #114653)
+ * wget progress bar support (closes: #116061)
+
+ -- Adam Di Carlo Thu, 18 Oct 2001 15:14:02 -0400
+
+debootstrap (0.1.15.5) unstable; urgency=high
+
+ * From Ethan Benson:
+ * pipe yes output into dpkg runs inside install_debs() this way on_exit
+ works in --boot-floppies mode. (Closes: #112842, #115481)
+ * Add libpcap0 to base, ppp depends on it now. (Closes: #114056)
+
+ * From Adam Di Carlo:
+ * Potato installation on non-i386 was broken, need libc6
+ (closes: #112778); however, there are other ways the Potato base
+ install doesn't represent quite what Potato boot-floppies would
+ consider base
+ * apply patch from Tommi Virtanen which improves the 'smallyes'
+ function; apparently this fixes a console-tools postinst loop,
+ although I haven't seen that (closes: #115581)
+ * get rid of some line continuators in potato and woody scripts, they
+ were obscuring some problems
+
+ -- Adam Di Carlo Mon, 15 Oct 2001 01:56:16 -0400
+
+debootstrap (0.1.15.4) unstable; urgency=high
+
+ * more fixed for the benefits of boot-floppies
+ * add telnetd on s390; yes, it's gross, but it's needed for
+ installation, to connect from the line mode console
+ closes: #112795
+
+ -- Adam Di Carlo Sun, 23 Sep 2001 16:11:03 -0400
+
+debootstrap (0.1.15.3) unstable; urgency=high
+
+ * Fix deficient command line option parsing, optional arguments no
+ longer have to be declared in a specific order, for example before you
+ could not put --arch before --download-only, now you can.
+ * Add --help option and useful help output.
+ * Stop using dirname, basename, and yes, they are being removed from
+ busybox.
+ * Fix many many quoting bugs.
+ * Fix debootstrap man page (Closes: #107404, #109670)
+ * Add ftp support (Closes: #110312)
+ * Don't waste time downloading useless non-free/contrib (Closes: #89673)
+ * Path cleanup (Closes: #97174)
+ * Add pppconfig to woody base (Closes: #111001)
+ * Remove syslinux from base (Closes: #107447)
+ * Eliminate useless warning about creating exim.conf (Closes: #99229)
+ * Don't use "here documents" (they create tmp files in /tmp which could
+ be very well be full on boot-floppies).
+ * Don't use echo -n it is not portable.
+ * Set umask to 022.
+ * All patches from Ethan Benson, I am just the builder!
+ These have been tested with boot-floppies and work properly.
+
+ -- Adam Di Carlo Sat, 22 Sep 2001 12:30:02 -0400
+
+debootstrap (0.1.15.2) unstable; urgency=low
+
+ * quoting required in one place for the new ash (Closes: Bug#106062)
+ * s390 support (Closes: Bug#107262)
+ * remove some packages from Woody's base that aren't needed:
+ - update (not needed with modern kernels, Closes: Bug#106877)
+ - syslinux (Closes: Bug#107477)
+ - ldso (should be pulled in by libc6, Closes: Bug#106102)
+ * kinks in mipsel base worked themselves out (Closes: Bug#106711)
+
+ -- Adam Di Carlo Wed, 8 Aug 2001 12:04:40 -0400
+
+debootstrap (0.1.15.1) unstable; urgency=low
+
+ * add efibootmgr on ia64, as per bug 105980.
+
+ -- Bdale Garbee Fri, 3 Aug 2001 14:13:23 -0600
+
+debootstrap (0.1.15) unstable; urgency=low
+
+ * Do progress indications (by bytes) for Packages downloads and .deb
+ downloads. (Closes: Bug#101886)
+ * Don't use seq. Silly busybox.
+ * Add pppoe to base. (Closes: Bug#102378)
+ * No point keeping around the "sid.is-broken" file.
+
+ -- Anthony Towns Wed, 27 Jun 2001 21:29:29 +1000
+
+debootstrap (0.1.14) unstable; urgency=low
+
+ * Make in_target_nofail kill stderr. No more "/dev/pts: not mounted" error.
+ Yay. :)
+
+ * Refactor woody, potato and slink scripts; do away with
+ woody.debs. Change the way the scripts work. (Now they define
+ functions which debootstrap calls. Much nicer)
+ * Support --download-only option.
+ * Support resuming downloads of Release and Packages files, even gzipped
+ ones.
+ * Support null: (Packages files assumed to be named for a debootstrap.invalid
+ host)
+ * Always use the deboostrap.invalid name, and use that in
+ /etc/apt/sources.list. Remove /etc/apt/sources.list after the base
+ system is build.
+ * All this should be enough to support basedeb.tgz installs on
+ debootstrap's behalf. Some more stuff would be useful, but isn't
+ immediately necessary. (Closes: Bug#102217)
+
+ * Add ia64 support and fix libc6 == libc6.1 problem. (Closes: Bug#101829)
+
+ * Be a little more careful with permissions on devs tarball. Hopefully.
+ (Closes: Bug#102308)
+
+ * Don't worry if md5sum from stdin adds a " -" after the md5sum. Should
+ make debootstrap more usable on non-Debian Linuxes.
+
+ -- Anthony Towns Mon, 25 Jun 2001 18:38:35 +1000
+
+debootstrap (0.1.13) unstable; urgency=low
+
+ * Add symlink for sid.debs.
+ * Fix the special casing for hppa. (Closes: Bug#101604)
+ * Remove groff from base. (Closes: Bug#101173)
+ * Retry partially successful downloads a couple of times.
+ (Closes: Bug#101476)
+ * Minor wording changes wrt downloading Release file (Closes: Bug#101705)
+
+ -- Anthony Towns Thu, 21 Jun 2001 12:08:10 +1000
+
+debootstrap (0.1.12) unstable; urgency=high
+
+ * Split determination of base into a separate script to enable further
+ innovation! Come on, tell me that doesn't excite you!
+
+ * Add groff-base to base. (Closes: Bug#100112, Bug#100123)
+ * Remove libstdc++2.10 and some other hopefully unnecessary debs
+ (Closes: Bug#99708)
+
+ * Remove lilo.conf special casing. Change some warnings to info messages.
+
+ -- Anthony Towns Sun, 10 Jun 2001 01:22:12 +1000
+
+debootstrap (0.1.11) unstable; urgency=low
+
+ * Add dhcp-client to base. (Closes: Bug#100083)
+
+ -- Anthony Towns Sat, 9 Jun 2001 00:11:26 +1000
+
+debootstrap (0.1.10) unstable; urgency=low
+
+ * Don't abort build on devfs systems: the makedev we build-dep on should
+ be recent enough. (Closes: Bug#97713)
+ * Check for malformed release files. Thanks to Martin Michlmayr for the
+ patch. (Closes: Bug#97707)
+ * Use --force-confold when installing base. That is: if you want the
+ conffile from the package to be there at the end, don't create a
+ file in the first place. I'm not convinced this is right.
+ (Closes: Bug#99025)
+
+ -- Anthony Towns Mon, 28 May 2001 14:43:07 +1000
+
+debootstrap (0.1.9) unstable; urgency=low
+
+ * Abort build on devfs systems (MAKEDEV fails for no good reason)
+ (Closes: Bug#97713)
+
+ * Add support for mips and mipsel (Closes: Bug#97711)
+ * Add some support for hppa (install palo in base)
+
+ * Don't install ldso (Closes: Bug#97708)
+ * Don't install libopenldap1 or libopenldap-runtime (replaced by libldap2)
+ (Closes: Bug#98050)
+ * Do install libdb3 and libcap1.
+ * Install klogd too. (But only as part of base. Move sysklogd to base too)
+
+ * Setup a dummy lilo.conf on i386 only. (Closes: Bug#97710, Bug#98052)
+
+ * Trim a trailing / for target and url.
+
+ -- Anthony Towns Sun, 20 May 2001 13:33:34 +1000
+
+debootstrap (0.1.8) unstable; urgency=low
+
+ * Add adduser and base-config into base. base-config unfortunately depends
+ on perl instead of perl-base. (Closes: Bug#96439)
+ * Force LANG=C. Need to work out how i18n should be handled.
+ * Kludge potato install so it's noninteractive. Thanks to Colin Watson
+ for the patch. (Closes: Bug#94441)
+ * Get rid of dh_testversion.
+ * Make a sid script (just a symlink to the woody script).
+
+ -- Anthony Towns Wed, 9 May 2001 20:33:00 +1000
+
+debootstrap (0.1.7) unstable; urgency=low
+
+ * Don't worry if umounting /dev/pts fails.
+ * Add debootstrap(8) manpage, thanks to Matt Kraai. (Closes: Bug#86238)
+ * Add a blank line to the end of the faked /var/lib/dpkg/status. Spotted
+ by Richard Hirst.
+ * Added console-tools and console-data into the base system.
+ * Move /etc/exim.conf to /etc/exim/exim.conf so that sendmail doesn't
+ give errors, even if debconf tries to use it before exim is
+ configured. Gack.
+ * Add fdutils back into base.
+
+ -- Anthony Towns Mon, 30 Apr 2001 15:49:27 +1000
+
+debootstrap (0.1.6) unstable; urgency=low
+
+ * Only create stuff in /etc if it hasn't already been created.
+
+ -- Anthony Towns Mon, 23 Apr 2001 18:02:55 +1000
+
+debootstrap (0.1.5) unstable; urgency=low
+
+ * Use "head -n X" instead of "head -X" to work with busybox.
+ (Closes: Bug#94575)
+ * Use s///I instead of s///i for case insensitivity, again for busybox.
+ (Closes: Bug#94579)
+ * Fixed typo that would have stopped debootstrap from falling back to an
+ uncompressed Packages file.
+ * Added libsasl7 and libldap2 to woody base, since woody exim now depends
+ on them.
+
+ -- Anthony Towns Sun, 22 Apr 2001 01:47:00 +1000
+
+debootstrap (0.1.4) unstable; urgency=low
+
+ * If we've got a Release file, check that the Packages files we download
+ have the right md5sums.
+ * Build-Depend on new makedev, and don't hax0r powerpc devices as much.
+ (Closes: Bug#93836)
+ * Hopefully support arm chroots. (Closes: Bug#92592) Declare it to be
+ Arch: any, and see what dies. There's a chance that nothing will. Not
+ a *big* chance, but a chance.
+ * Fiddled with the base system some more. Added apt-utils so
+ preconfiguration will work.
+ * Added permission to NMU to the README.Debian.
+ * Mention file:/ URLs in README.Debian. (Closes: Bug#87099)
+ * Add a --boot-floppies option that changes the way the I/O happens, in
+ a way that's hopefully useful for boot-floppies. See README.Debian for
+ details.
+ * Also added a bit more output.
+
+ -- Anthony Towns Mon, 26 Mar 2001 22:30:12 +1000
+
+debootstrap (0.1.3) unstable; urgency=high
+
+ * Switch from debconf-tiny to debconf, since that's what's now in
+ woody. (Using debconf-tiny probably makes the package unusable, hence
+ the urgency) Fixup perl, lilo and console-apt to cope with changes in
+ the base system in woody. Added ae, left nano and nvi.
+ * Add support for m68k, sparc and powerpc, based on Christian Steigies
+ patches and Adam Di Carlo's NMU (Closes: Bug#89883, Bug#91221)
+
+ -- Anthony Towns