Exheredludis/paludis/repositories/e/ebuild/write_vdb_entry.bash
Bo Ørsted Andresen 30332e5ac6 Fail if bzip2 fails.
Change-Id: I40c988c5abf315722259909f4f33e8deb584c0db
2016-03-17 13:29:25 +01:00

172 lines
5.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# vim: set sw=4 sts=4 et :
# Copyright (c) 2006, 2007, 2008, 2009, 2010 Ciaran McCreesh
#
# This file is part of the Paludis package manager. Paludis is free software;
# you can redistribute it and/or modify it under the terms of the GNU General
# Public License, version 2, as published by the Free Software Foundation.
#
# Paludis is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA 02111-1307 USA
unalias -a
set +C
unset GZIP BZIP BZIP2 CDPATH GREP_OPTIONS GREP_COLOR GLOBIGNORE
eval unset LANG ${!LC_*}
shopt -s expand_aliases
shopt -s extglob
# Force a few more things into PATH, since some users have crazy setups.
# See ticket:374.
# NOTE(compnerd) this must be done first to ensure that the fallback directory
# and utils directory take precedence over the path as some of our utilities
# overload standard commands.
export PATH="/usr/bin:/usr/sbin:/bin:/sbin${PATH:+:${PATH}}"
if [[ -n "${PALUDIS_EBUILD_DIR_FALLBACK}" ]] ; then
export PATH="${PALUDIS_EBUILD_DIR_FALLBACK}/utils${PATH:+:${PATH}}"
fi
export PATH="${PALUDIS_EBUILD_DIR}/utils${PATH:+:${PATH}}"
for p in ${PALUDIS_UTILITY_PATH_SUFFIXES} ; do
export PATH="${PALUDIS_EBUILD_DIR}/utils/${p}${PATH:+:${PATH}}"
done
EBUILD_MODULES_DIR=$(canonicalise $(dirname $0 ) )
if ! [[ -d ${EBUILD_MODULES_DIR} ]] ; then
echo "${EBUILD_MODULES_DIR} is not a directory" 1>&2
exit 123
fi
[[ -z "${PALUDIS_EBUILD_MODULE_SUFFIXES}" ]] && PALUDIS_EBUILD_MODULE_SUFFIXES=0
for p in ${PALUDIS_EBUILD_MODULE_SUFFIXES}; do
EBUILD_MODULES_DIRS="${EBUILD_MODULES_DIRS} ${EBUILD_MODULES_DIR}/${p}"
done
for p in ${PALUDIS_EXTRA_EBUILD_MODULES_DIRS} ; do
EBUILD_MODULES_DIRS="${EBUILD_MODULES_DIRS} ${p}"
done
EBUILD_MODULES_DIRS="${EBUILD_MODULES_DIRS} ${EBUILD_MODULES_DIR}"
export PALUDIS_EBUILD_MODULES_DIR="${EBUILD_MODULES_DIR}"
export EBUILD_KILL_PID=$$
declare -r EBUILD_KILL_PID
ebuild_load_module()
{
local older= t= d= save_excl= excl_v=
if [[ "${1}" == "--older" ]] ; then
shift
older=true
excl_v="EBUILD_MODULES_DIRS_EXCLUDE_${1}"
save_excl="${!excl_v}"
fi
for d in ${EBUILD_MODULES_DIRS}; do
local dx= x=
if [[ -n "${older}" ]] ; then
for dx in ${!excl_v} ; do
[[ "${dx}" == "${d}" ]] && x=true
done
fi
[[ -n "${x}" ]] && continue
[[ -n "${older}" ]] && export "${excl_v}"="${!excl_v} ${d}"
if [[ -f "${d}/${1}.bash" ]]; then
if ! source "${d}/${1}.bash"; then
type die &>/dev/null && eval die "\"Error loading module \${1}\""
echo "Error loading module ${1}" 1>&2
exit 124
fi
return
else
t="${t:+${t}, }${d}"
fi
done
[[ -n "${older}" ]] && export "${excl_v}"="${save_excl}"
type die &>/dev/null && eval die "\"Couldn't find module \${1} (looked in \${t})\""
echo "Couldn't find module ${1} (looked in ${t})" 1>&2
exit 125
}
ebuild_load_module die_functions
ebuild_load_module pipe_functions
ebuild_load_module output_functions
ebuild_load_module echo_functions
ebuild_load_module source_functions
export PALUDIS_HOME="$(canonicalise ${PALUDIS_HOME:-${HOME}} )"
main()
{
local vdbdir="${1}" envfile="${2}"
if ! [[ -d "${vdbdir}" ]] ; then
echo "!!! vdbdir \"${vdbdir}\" is not a directory"
exit 1
fi
ebuild_section "Writing VDB entry to '${vdbdir}'..."
ebuild_safe_source "${envfile}"
ebuild_section "Writing VDB entry keys ..."
if [[ -z "${PALUDIS_VDB_FROM_ENV_VARIABLES}" ]] ; then
ebuild_notice "warning" "VDB_FROM_ENV_VARIABLES not set, using defaults"
PALUDIS_VDB_FROM_ENV_VARIABLES="\
CATEGORY CHOST COUNTER DEPEND DESCRIPTION EAPI \
FEATURES HOMEPAGE INHERITED IUSE KEYWORDS LICENSE PDEPEND PF \
PROVIDE RDEPEND SLOT SRC_URI USE CONFIG_PROTECT CONFIG_PROTECT_MASK \
VDB_FORMAT PKGMANAGER"
fi
if [[ -z "${PALUDIS_VDB_FROM_ENV_UNLESS_EMPTY_VARIABLES}" ]] ; then
ebuild_notice "warning" "PALUDIS_VDB_FROM_ENV_UNLESS_EMPTY_VARIABLES not set, using defaults"
PALUDIS_VDB_FROM_ENV_UNLESS_EMPTY_VARIABLES="\
ASFLAGS CBUILD CC CFLAGS CHOST CTARGET CXX CXXFLAGS \
EXTRA_ECONF EXTRA_EINSTALL EXTRA_EMAKE LDFLAGS LIBCXXFLAGS \
REPOSITORY"
fi
local v VDB_FORMAT="paludis-2" COUNTER="$(date +%s )"
for v in ${PALUDIS_VDB_FROM_ENV_VARIABLES} ; do
if ! paludis_rewrite_var VDB "${v}" "${!v}" > "${vdbdir}"/${v} ; then
echo "!!! vdb write ${v} failed"
exit 1
fi
done
for v in ${PALUDIS_VDB_FROM_ENV_UNLESS_EMPTY_VARIABLES} ; do
[[ -z "${!v}" ]] && continue
if ! paludis_rewrite_var VDB "${v}" "${!v}" > "${vdbdir}"/${v} ; then
echo "!!! vdb write ${v} failed"
exit 1
fi
done
ebuild_section "Generating saved ebuild and environment..."
[[ -f "${EBUILD}" ]] && cp "${EBUILD}" ${vdbdir}/
if ! bzip2 < ${envfile} > ${vdbdir}/environment.bz2 ; then
echo "!!! vdb write environment.bz2 failed"
exit 1
fi
ebuild_section "Finished writing VDB entry"
true
}
main $@