[arch-projects] [devtools][PATCH 13/13] Add `# shellcheck` directives to quiet shellcheck, add PKGBUILD.proto
Luke Shumaker
lukeshu at parabola.nu
Fri May 5 22:41:10 UTC 2017
The added PKGBUILD.proto file is so that shellcheck can know know what
to expect that a PKGBUILD sets.
---
Makefile | 2 +-
PKGBUILD.proto | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
arch-nspawn.in | 2 ++
checkpkg.in | 4 ++++
commitpkg.in | 5 +++++
crossrepomove.in | 4 ++++
finddeps.in | 1 +
lib/archroot.sh | 2 ++
lib/common.sh | 7 +++++++
lib/valid-tags.sh | 3 +++
makechrootpkg.in | 1 +
makepkg-i686.conf | 3 +++
makepkg-x86_64.conf | 3 +++
rebuildpkgs.in | 4 ++++
14 files changed, 88 insertions(+), 1 deletion(-)
create mode 100644 PKGBUILD.proto
diff --git a/Makefile b/Makefile
index 39614a4..9549569 100644
--- a/Makefile
+++ b/Makefile
@@ -114,7 +114,7 @@ dist:
upload:
scp devtools-$(V).tar.gz devtools-$(V).tar.gz.sig repos.archlinux.org:/srv/ftp/other/devtools/
-check: $(BINPROGS) bash_completion makepkg-x86_64.conf
+check: $(BINPROGS) bash_completion makepkg-x86_64.conf PKGBUILD.proto
shellcheck $^
.PHONY: all clean install uninstall dist upload check
diff --git a/PKGBUILD.proto b/PKGBUILD.proto
new file mode 100644
index 0000000..e8690e4
--- /dev/null
+++ b/PKGBUILD.proto
@@ -0,0 +1,48 @@
+#!/hint/bash
+# shellcheck disable=2034
+
+# This is an example PKGBUILD file, so that shellcheck can know what
+# variables to expect be set after including a PKGBUILD.
+
+# Maintainer: Your Name <youremail at domain.com>
+pkgname=NAME
+pkgver=VERSION
+pkgrel=1
+epoch=
+pkgdesc=""
+arch=()
+url=""
+license=('GPL')
+groups=()
+depends=()
+makedepends=()
+checkdepends=()
+optdepends=()
+provides=()
+conflicts=()
+replaces=()
+backup=()
+options=()
+install=
+changelog=
+source=("$pkgname-$pkgver.tar.gz"
+ "$pkgname-$pkgver.patch")
+noextract=()
+md5sums=()
+validpgpkeys=()
+
+prepare() {
+ :
+}
+
+build() {
+ :
+}
+
+check() {
+ :
+}
+
+package() {
+ :
+}
diff --git a/arch-nspawn.in b/arch-nspawn.in
index 2d42e3a..c21b2ce 100644
--- a/arch-nspawn.in
+++ b/arch-nspawn.in
@@ -58,7 +58,9 @@ else
cache_dirs=("$cache_dir")
fi
+# shellcheck disable=2016
host_mirror=$(pacman --cachedir /doesnt/exist -Sddp extra/devtools 2>/dev/null | sed -r 's#(.*/)extra/os/.*#\1$repo/os/$arch#')
+# shellcheck disable=2016
[[ $host_mirror == *file://* ]] && host_mirror_path=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
# {{{ functions
diff --git a/checkpkg.in b/checkpkg.in
index 20920be..e0e1f83 100644
--- a/checkpkg.in
+++ b/checkpkg.in
@@ -7,6 +7,7 @@ m4_include(lib/common.sh)
# Source makepkg.conf; fail if it is not found
if [[ -r '/etc/makepkg.conf' ]]; then
+ # shellcheck source=makepkg-x86_64.conf
source '/etc/makepkg.conf'
else
die '/etc/makepkg.conf not found!'
@@ -14,8 +15,10 @@ fi
# Source user-specific makepkg.conf overrides
if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
elif [[ -r "$HOME/.makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "$HOME/.makepkg.conf"
fi
@@ -23,6 +26,7 @@ if [[ ! -f PKGBUILD ]]; then
die 'This must be run in the directory of a built package.'
fi
+# shellcheck source=PKGBUILD.proto
. ./PKGBUILD
if [[ ${arch[0]} == 'any' ]]; then
CARCH='any'
diff --git a/commitpkg.in b/commitpkg.in
index 90210e5..53b6612 100644
--- a/commitpkg.in
+++ b/commitpkg.in
@@ -5,6 +5,7 @@ m4_include(lib/common.sh)
# Source makepkg.conf; fail if it is not found
if [[ -r '/etc/makepkg.conf' ]]; then
+ # shellcheck source=makepkg-x86_64.conf
source '/etc/makepkg.conf'
else
die '/etc/makepkg.conf not found!'
@@ -12,8 +13,10 @@ fi
# Source user-specific makepkg.conf overrides
if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
elif [[ -r "$HOME/.makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "$HOME/.makepkg.conf"
fi
@@ -23,6 +26,8 @@ if [[ ! -f PKGBUILD ]]; then
die 'No PKGBUILD file'
fi
+source=()
+# shellcheck source=PKGBUILD.proto
. ./PKGBUILD
pkgbase=${pkgbase:-$pkgname}
diff --git a/crossrepomove.in b/crossrepomove.in
index ffc4507..b45b8ae 100644
--- a/crossrepomove.in
+++ b/crossrepomove.in
@@ -44,6 +44,7 @@ msg "Downloading sources for %s" "${pkgbase}"
svn -q checkout -N "${target_svn}" target_checkout
mkdir -p "target_checkout/${pkgbase}/repos"
svn -q export "${source_svn}/${pkgbase}/trunk" "target_checkout/${pkgbase}/trunk" || die
+# shellcheck source=PKGBUILD.proto
. "target_checkout/${pkgbase}/trunk/PKGBUILD"
msg "Downloading packages for %s" "${pkgbase}"
@@ -56,6 +57,7 @@ for _arch in "${arch[@]}"; do
for _pkgname in "${pkgname[@]}"; do
fullver=$(get_full_version "$_pkgname")
pkgpath="/srv/ftp/$source_repo/os/$repo_arch/$_pkgname-$fullver-${_arch}.pkg.tar.*"
+ # shellcheck disable=2029
ssh "$server" "cp $pkgpath staging/$target_repo" || die
done
done
@@ -68,10 +70,12 @@ pushd "target_checkout/${pkgbase}/trunk" >/dev/null
archrelease "${arch[@]/#/$target_repo-}" || die
popd >/dev/null
+# shellcheck disable=2029
ssh "${server}" "${target_dbscripts}/db-update" || die
msg "Removing %s from %s" "${pkgbase}" "${source_repo}"
for _arch in "${arch[@]}"; do
+ # shellcheck disable=2029
ssh "${server}" "${source_dbscripts}/db-remove ${source_repo} ${_arch} ${pkgbase}"
done
svn -q checkout -N "${source_svn}" source_checkout
diff --git a/finddeps.in b/finddeps.in
index 80774bb..2a085e5 100644
--- a/finddeps.in
+++ b/finddeps.in
@@ -20,6 +20,7 @@ fi
find . -type d | while read -r d; do
if [[ -f "$d/PKGBUILD" ]]; then
pkgname=() depends=() makedepends=() optdepends=()
+ # shellcheck source=PKGBUILD.proto
. "$d/PKGBUILD"
for dep in "${depends[@]}"; do
# lose the version comparator, if any
diff --git a/lib/archroot.sh b/lib/archroot.sh
index 3a1023e..98fd2cf 100644
--- a/lib/archroot.sh
+++ b/lib/archroot.sh
@@ -1,6 +1,8 @@
#!/hint/bash
# License: Unspecified
+:
+# shellcheck disable=2034
CHROOT_VERSION='v4'
##
diff --git a/lib/common.sh b/lib/common.sh
index ad6194d..0fb93d9 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -35,35 +35,42 @@ readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
plain() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
msg2() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
warning() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${YELLOW}==> WARNING:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
error() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${RED}==> ERROR:${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
}
stat_busy() {
local mesg=$1; shift
+ # shellcheck disable=2059
printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}...${ALL_OFF}" "$@" >&2
}
stat_done() {
+ # shellcheck disable=2059
printf "${BOLD}done${ALL_OFF}\n" >&2
}
diff --git a/lib/valid-tags.sh b/lib/valid-tags.sh
index e0a3b7c..2916dc7 100644
--- a/lib/valid-tags.sh
+++ b/lib/valid-tags.sh
@@ -1,12 +1,15 @@
#!/hint/bash
# License: Unspecified
+:
+# shellcheck disable=2034
_arch=(
i686
x86_64
any
)
+# shellcheck disable=2034
_tags=(
core-i686 core-x86_64 core-any
extra-i686 extra-x86_64 extra-any
diff --git a/makechrootpkg.in b/makechrootpkg.in
index 2dd160a..ffe6e42 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -241,6 +241,7 @@ EOF
# These functions aren't run in makechrootpkg,
# so no global variables
_chrootbuild() {
+ # shellcheck source=/dev/null
. /etc/profile
# Beware, there are some stupid arbitrary rules on how you can
# use "$" in arguments to commands with "sudo -i". ${foo} or
diff --git a/makepkg-i686.conf b/makepkg-i686.conf
index c565795..4cbc28b 100644
--- a/makepkg-i686.conf
+++ b/makepkg-i686.conf
@@ -1,3 +1,6 @@
+#!/hint/bash
+# shellcheck disable=2034
+
#
# /etc/makepkg.conf
#
diff --git a/makepkg-x86_64.conf b/makepkg-x86_64.conf
index 058da9b..79858a7 100644
--- a/makepkg-x86_64.conf
+++ b/makepkg-x86_64.conf
@@ -1,3 +1,6 @@
+#!/hint/bash
+# shellcheck disable=2034
+
#
# /etc/makepkg.conf
#
diff --git a/rebuildpkgs.in b/rebuildpkgs.in
index a0e8250..4f4f98b 100644
--- a/rebuildpkgs.in
+++ b/rebuildpkgs.in
@@ -21,6 +21,7 @@ fi
# Source makepkg.conf; fail if it is not found
if [[ -r '/etc/makepkg.conf' ]]; then
+ # shellcheck source=makepkg-x86_64.conf
source '/etc/makepkg.conf'
else
die '/etc/makepkg.conf not found!'
@@ -28,8 +29,10 @@ fi
# Source user-specific makepkg.conf overrides
if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
elif [[ -r "$HOME/.makepkg.conf" ]]; then
+ # shellcheck source=/dev/null
source "$HOME/.makepkg.conf"
fi
@@ -50,6 +53,7 @@ bump_pkgrel() {
pkg_from_pkgbuild() {
# we want the sourcing to be done in a subshell so we don't pollute our current namespace
export CARCH PKGEXT
+ # shellcheck source=PKGBUILD.proto
(source PKGBUILD; echo "$pkgname-$pkgver-$pkgrel-$CARCH$PKGEXT")
}
--
2.12.2
More information about the arch-projects
mailing list