1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-12-22 15:58:50 -05:00

makepkg: handle multiple install and changelog files

The presence of all install and changelog files (multiple files may
be used with package splitting) is checked for in check_sanity().

All install and changelog files are copied to the source location
when using --source.  The check for install and changelog file presence
is removed in create_srcpackage() as this is redundant to the checks
performed in check_sanity().

Moved install and changelog handling in create_srcpackage() to after
source array files, as this is more logical and readily allows for the
following.

A check is made when creating a source package that a symlink to an
install file has not already been added.  This can occur if the
install file is used multiple times or if it is listed in the source
array.

Fixes FS#18831, FS#18394 and partially fixes FS#16004

Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Allan McRae 2010-04-26 14:59:42 +10:00 committed by Dan McGee
parent 590606a5d7
commit 64c3255b0e

View File

@ -1068,24 +1068,6 @@ create_srcpackage() {
msg2 "$(gettext "Adding %s...")" "$BUILDSCRIPT"
ln -s "${BUILDFILE}" "${srclinks}/${pkgbase}/${BUILDSCRIPT}"
if [[ -n $install ]]; then
if [[ -f $install ]]; then
msg2 "$(gettext "Adding install script...")"
ln -s "${startdir}/$install" "${srclinks}/${pkgbase}/"
else
error "$(gettext "Install scriptlet (%s) does not exist.")" "$install"
fi
fi
if [[ -n $changelog ]]; then
if [[ -f $changelog ]]; then
msg2 "$(gettext "Adding package changelog...")"
ln -s "${startdir}/$changelog" "${srclinks}/${pkgbase}/"
else
error "$(gettext "Changelog file (%s) does not exist.")" "$changelog"
fi
fi
local netfile
for netfile in "${source[@]}"; do
local file=$(get_filename "$netfile")
@ -1098,6 +1080,32 @@ create_srcpackage() {
fi
done
local install_files=( $(grep "^[[:space:]]*install=" "$BUILDSCRIPT" | sed "s/install=//") )
if [[ -n $install_files ]]; then
local file
for file in ${install_files[@]}; do
# evaluate any bash variables used
eval file=${file}
if [[ ! -f "${srclinks}/${pkgbase}/$file" ]]; then
msg2 "$(gettext "Adding install script (%s)...")" "$file"
ln -s "${startdir}/$file" "${srclinks}/${pkgbase}/"
fi
done
fi
local changelog_files=( $(grep "^[[:space:]]*changelog=" "$BUILDSCRIPT" | sed "s/changelog=//") )
if [[ -n $changelog_files ]]; then
local file
for file in ${changelog_files[@]}; do
# evaluate any bash variables used
eval file=${file}
if [[ ! -f "${srclinks}/${pkgbase}/$file" ]]; then
msg2 "$(gettext "Adding package changelog (%s)...")" "$file"
ln -s "${startdir}/$file" "${srclinks}/${pkgbase}/"
fi
done
fi
local TAR_OPT
case "$SRCEXT" in
*tar.gz) TAR_OPT="z" ;;
@ -1215,15 +1223,30 @@ check_sanity() {
fi
done
if [[ $install && ! -f $install ]]; then
error "$(gettext "Install scriptlet (%s) does not exist.")" "$install"
local install_files=( $(grep "^[[:space:]]*install=" "$BUILDSCRIPT" | sed "s/install=//") )
if [[ -n $install_files ]]; then
local file
for file in ${install_files[@]}; do
# evaluate any bash variables used
eval file=${file}
if [[ ! -f $file ]]; then
error "$(gettext "Install scriptlet (%s) does not exist.")" "$file"
return 1
fi
done
fi
if [[ -n $changelog && ! -f $changelog ]]; then
error "$(gettext "Changelog file (%s) does not exist.")" "$changelog"
local changelog_files=( $(grep "^[[:space:]]*changelog=" "$BUILDSCRIPT" | sed "s/changelog=//") )
if [[ -n $changelog_files ]]; then
for file in ${changelog_files[@]}; do
# evaluate any bash variables used
eval file=${file}
if [[ ! -f $file ]]; then
error "$(gettext "Changelog file (%s) does not exist.")" "$file"
return 1
fi
done
fi
local valid_options=1
local opt known kopt