mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 15:58:50 -05:00
makepkg, repo-add: replace external commands with bash substitutions where possible
This also removes the awk dependency from makepkg and repo-add. Signed-off-by: Cedric Staniewski <cedric@gmx.ca> Signed-off-by: Allan McRae <allan@archlinux.org> Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
parent
4281a1a7f2
commit
3d67d9b16c
@ -27,7 +27,7 @@
|
||||
|
||||
# makepkg uses quite a few external programs during its execution. You
|
||||
# need to have at least the following installed for makepkg to function:
|
||||
# awk, bsdtar (libarchive), bzip2, coreutils, fakeroot, find (findutils),
|
||||
# bsdtar (libarchive), bzip2, coreutils, fakeroot, find (findutils),
|
||||
# getopt (util-linux), gettext, grep, gzip, openssl, sed
|
||||
|
||||
# gettext initialization
|
||||
@ -188,15 +188,15 @@ trap 'trap_exit "$(gettext "An unknown error has occurred. Exiting...")"' ERR
|
||||
# extract the filename from a source entry
|
||||
get_filename() {
|
||||
# if a filename is specified, use it
|
||||
local filename=$(echo $1 | sed 's|::.*||')
|
||||
local filename="${1%%::*}"
|
||||
# if it is just an URL, we only keep the last component
|
||||
echo "$filename" | sed 's|^.*://.*/||g'
|
||||
echo "${filename##*/}"
|
||||
}
|
||||
|
||||
# extract the URL from a source entry
|
||||
get_url() {
|
||||
# strip an eventual filename
|
||||
echo $1 | sed 's|.*::||'
|
||||
echo "${1#*::}"
|
||||
}
|
||||
|
||||
##
|
||||
@ -246,11 +246,11 @@ check_buildenv() {
|
||||
# ? - not found
|
||||
##
|
||||
in_opt_array() {
|
||||
local needle=$(echo $1 | tr '[:upper:]' '[:lower:]'); shift
|
||||
local needle="${1,,}"; shift
|
||||
|
||||
local opt
|
||||
for opt in "$@"; do
|
||||
opt=$(echo $opt | tr '[:upper:]' '[:lower:]')
|
||||
opt="${opt,,}"
|
||||
if [ "$opt" = "$needle" ]; then
|
||||
echo 'y' # Enabled
|
||||
return
|
||||
@ -282,14 +282,14 @@ in_array() {
|
||||
get_downloadclient() {
|
||||
# $1 = URL with valid protocol prefix
|
||||
local url=$1
|
||||
local proto=$(echo "$url" | sed 's|://.*||')
|
||||
local proto="${url%%://*}"
|
||||
|
||||
# loop through DOWNLOAD_AGENTS variable looking for protocol
|
||||
local i
|
||||
for i in "${DLAGENTS[@]}"; do
|
||||
local handler=$(echo $i | sed 's|::.*||')
|
||||
local handler="${i%%::*}"
|
||||
if [ "$proto" = "$handler" ]; then
|
||||
agent=$(echo $i | sed 's|^.*::||')
|
||||
agent="${i##*::}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
@ -302,7 +302,7 @@ get_downloadclient() {
|
||||
fi
|
||||
|
||||
# ensure specified program is installed
|
||||
local program="$(echo $agent | awk '{print $1 }')"
|
||||
local program="${agent%% *}"
|
||||
if [ ! -x "$program" ]; then
|
||||
local baseprog=$(basename $program)
|
||||
error "$(gettext "The download program %s is not installed.")" "$baseprog"
|
||||
@ -321,7 +321,7 @@ download_file() {
|
||||
# destination file
|
||||
local file=$3
|
||||
# temporary download file, default to last component of the URL
|
||||
local dlfile=$(echo "$url" | sed 's|^.*://.*/||g')
|
||||
local dlfile="${url##*/}"
|
||||
|
||||
# replace %o by the temporary dlfile if it exists
|
||||
if echo "$dlcmd" | grep -q "%o" ; then
|
||||
@ -431,7 +431,7 @@ remove_deps() {
|
||||
local dep depstrip deplist
|
||||
deplist=""
|
||||
for dep in $pkgdeps; do
|
||||
depstrip=$(echo $dep | sed -e 's|=.*$||' -e 's|>.*$||' -e 's|<.*$||')
|
||||
depstrip="${dep%%[<=>]*}"
|
||||
deplist="$deplist $depstrip"
|
||||
done
|
||||
|
||||
@ -513,7 +513,7 @@ generate_checksums() {
|
||||
|
||||
local integ
|
||||
for integ in ${INTEGRITY_CHECK[@]}; do
|
||||
integ="$(echo $integ | tr '[:upper:]' '[:lower:]')"
|
||||
integ="${integ,,}"
|
||||
case "$integ" in
|
||||
md5|sha1|sha256|sha384|sha512) : ;;
|
||||
*)
|
||||
@ -546,7 +546,8 @@ generate_checksums() {
|
||||
fi
|
||||
fi
|
||||
|
||||
local sum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')"
|
||||
local sum="$(openssl dgst -${integ} "$file")"
|
||||
sum=${sum##* }
|
||||
[ $ct -gt 0 ] && echo -n "$indent"
|
||||
echo -n "'$sum'"
|
||||
ct=$(($ct+1))
|
||||
@ -591,8 +592,9 @@ check_checksums() {
|
||||
fi
|
||||
|
||||
if [ $found -gt 0 ] ; then
|
||||
local expectedsum="$(echo ${integrity_sums[$idx]} | tr '[A-F]' '[a-f]')"
|
||||
local realsum="$(openssl dgst -${integ} "$file" | awk '{print $NF}')"
|
||||
local expectedsum="${integrity_sums[$idx],,}"
|
||||
local realsum="$(openssl dgst -${integ} "$file")"
|
||||
realsum="${realsum##* }"
|
||||
if [ "$expectedsum" = "$realsum" ]; then
|
||||
echo "$(gettext "Passed")" >&2
|
||||
else
|
||||
@ -882,7 +884,8 @@ write_pkginfo() {
|
||||
else
|
||||
local packager="Unknown Packager"
|
||||
fi
|
||||
local size=$(du -sk | awk '{print $1 * 1024}')
|
||||
local size="$(du -sk)"
|
||||
size="$(( ${size%%[^0-9]*} * 1024 ))"
|
||||
|
||||
msg2 "$(gettext "Generating .PKGINFO file...")"
|
||||
echo "# Generated by makepkg $myver" >.PKGINFO
|
||||
@ -1588,7 +1591,7 @@ if [ "$CLEANCACHE" -eq 1 ]; then
|
||||
echo -n "$(gettext " Are you sure you wish to do this? ")"
|
||||
echo -n "$(gettext "[Y/n]")"
|
||||
read answer
|
||||
answer=$(echo $answer | tr '[:lower:]' '[:upper:]')
|
||||
answer="${answer^^}"
|
||||
if [ "$answer" = "$(gettext "YES")" -o "$answer" = "$(gettext "Y")" ]; then
|
||||
rm "$SRCDEST"/*
|
||||
if [ $? -ne 0 ]; then
|
||||
|
@ -136,7 +136,8 @@ db_write_delta()
|
||||
echo -e "%DELTAS%" >>$deltas
|
||||
fi
|
||||
# get md5sum and compressed size of package
|
||||
md5sum="$(openssl dgst -md5 "$deltafile" | awk '{print $NF}')"
|
||||
md5sum="$(openssl dgst -md5 "$deltafile")"
|
||||
md5sum="${md5sum##* }"
|
||||
csize=$(@SIZECMD@ "$deltafile")
|
||||
|
||||
oldfile=$(xdelta3 printhdr $deltafile | grep "XDELTA filename (source)" | sed 's/.*: *//')
|
||||
@ -213,7 +214,8 @@ db_write_entry()
|
||||
IFS=$OLDIFS
|
||||
|
||||
# get md5sum and compressed size of package
|
||||
md5sum="$(openssl dgst -md5 "$pkgfile" | awk '{print $NF}')"
|
||||
md5sum="$(openssl dgst -md5 "$pkgfile")"
|
||||
md5sum="${md5sum##* }"
|
||||
csize=$(@SIZECMD@ "$pkgfile")
|
||||
|
||||
# ensure $pkgname and $pkgver variables were found
|
||||
|
Loading…
Reference in New Issue
Block a user