summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2020-01-16 18:27:34 +0100
committerAllan McRae <allan@archlinux.org>2020-01-27 08:53:50 +0100
commitd626a17ef94d79975ff17d04250152ea46aaade3 (patch)
treeba9da4c04b40c86aa1655f4c5bfe045b3bbc53f7
parent2856a7dea3c0d4584e126b5ca5957e13e23f83d1 (diff)
downloadpacman-d626a17ef94d79975ff17d04250152ea46aaade3.tar.gz
pacman-d626a17ef94d79975ff17d04250152ea46aaade3.tar.xz
makepkg: make per-package files containing '$pkgname' consistently work
Extracting function variables containing arbitrarily scoped variables of arbitrary nature is a disaster, but let's at least cover the common case of using the actual '$pkgname' in an install/changelog file. It's the odd case of actually being basically justified use of disambiguating between the same variable used in multiple different split packages... and also, --printsrcinfo already uses and overwrites the variable 'pkgname' in pkgbuild_extract_to_srcinfo, so this "works" in .SRCINFO but doesn't work in .src.tar.gz It doesn't work in lint_pkgbuild either, but in that case the problem is being too permissive, not too restrictive -- we might end up checking the same file twice, and printing that it is missing twice. Fixes FS#64932 Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/changelog.sh.in10
-rw-r--r--scripts/libmakepkg/lint_pkgbuild/install.sh.in10
-rw-r--r--scripts/makepkg.sh.in10
3 files changed, 21 insertions, 9 deletions
diff --git a/scripts/libmakepkg/lint_pkgbuild/changelog.sh.in b/scripts/libmakepkg/lint_pkgbuild/changelog.sh.in
index 114298f9..be6501ef 100644
--- a/scripts/libmakepkg/lint_pkgbuild/changelog.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/changelog.sh.in
@@ -32,11 +32,15 @@ lint_pkgbuild_functions+=('lint_changelog')
lint_changelog() {
- local name file changelog_list
+ local file changelog_list
changelog_list=("${changelog[@]}")
- for name in "${pkgname[@]}"; do
- if extract_function_variable "package_$name" changelog 0 file; then
+ # set pkgname the same way we do for running package(), this way we get
+ # the right value in extract_function_variable
+ local pkgname_backup=(${pkgname[@]})
+ local pkgname
+ for pkgname in "${pkgname_backup[@]}"; do
+ if extract_function_variable "package_$pkgname" changelog 0 file; then
changelog_list+=("$file")
fi
done
diff --git a/scripts/libmakepkg/lint_pkgbuild/install.sh.in b/scripts/libmakepkg/lint_pkgbuild/install.sh.in
index 95076692..1bf5681d 100644
--- a/scripts/libmakepkg/lint_pkgbuild/install.sh.in
+++ b/scripts/libmakepkg/lint_pkgbuild/install.sh.in
@@ -32,11 +32,15 @@ lint_pkgbuild_functions+=('lint_install')
lint_install() {
- local list file name install_list ret=0
+ local list file install_list ret=0
install_list=("${install[@]}")
- for name in "${pkgname[@]}"; do
- extract_function_variable "package_$name" install 0 file
+ # set pkgname the same way we do for running package(), this way we get
+ # the right value in extract_function_variable
+ local pkgname_backup=(${pkgname[@]})
+ local pkgname
+ for pkgname in "${pkgname_backup[@]}"; do
+ extract_function_variable "package_$pkgname" install 0 file
install_list+=("$file")
done
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index ca3e7459..a6de7823 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -784,13 +784,16 @@ create_srcpackage() {
fi
done
- local i
+ # set pkgname the same way we do for running package(), this way we get
+ # the right value in extract_function_variable
+ local pkgname_backup=(${pkgname[@]})
+ local i pkgname
for i in 'changelog' 'install'; do
local file files
[[ ${!i} ]] && files+=("${!i}")
- for name in "${pkgname[@]}"; do
- if extract_function_variable "package_$name" "$i" 0 file; then
+ for pkgname in "${pkgname_backup[@]}"; do
+ if extract_function_variable "package_$pkgname" "$i" 0 file; then
files+=("$file")
fi
done
@@ -802,6 +805,7 @@ create_srcpackage() {
fi
done
done
+ pkgname=(${pkgname_backup[@]})
local fullver=$(get_full_version)
local pkg_file="$SRCPKGDEST/${pkgbase}-${fullver}${SRCEXT}"