summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbill-auger <mr.j.spam.me@gmail.com>2021-05-29 19:26:36 -0400
committerAndreas Grapentin <andreas@grapentin.org>2022-01-18 17:31:58 +0100
commit8449f67db6b4a56727cda55eb33ac5b90e2340e0 (patch)
treeae5ae8a7a6033a0a15467395d9c8aa0c9987c664
parent37640d7036f9ad241ae9c219c3277c121637620b (diff)
wip - meld-src-pkgbuilds
-rwxr-xr-xsrc/maintenance-tools/meld-src-pkgbuilds161
1 files changed, 97 insertions, 64 deletions
diff --git a/src/maintenance-tools/meld-src-pkgbuilds b/src/maintenance-tools/meld-src-pkgbuilds
index 32802a3..df08c9f 100755
--- a/src/maintenance-tools/meld-src-pkgbuilds
+++ b/src/maintenance-tools/meld-src-pkgbuilds
@@ -1,12 +1,18 @@
#!/bin/bash
-# readonly PKGS_DIR=/packages
- echo "$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|^WORKDIR="\([^"]*\)"|\1|') IN"
- echo "$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|^WORKDIR=||' | tr '"' ' ') IN"
+# echo "$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|^WORKDIR="\([^"]*\)"|\1|') IN"
+# echo "$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|^WORKDIR=||' | tr '"' ' ') IN"
+
+
readonly PKGS_DIR="$(source /etc/libretools.conf ; echo "${WORKDIR}" ;)"
+
+
# readonly PKGS_DIR="$(source "$(grep 'WORKDIR=' /etc/libretools.conf)" ; echo "${WORKDIR}")"
-echo "PKGS_DIR=$PKGS_DIR"
-[[ ! -d "$PKGS_DIR" ]] && echo "no such dir" && exit 1
+echo "PKGS_DIR=${PKGS_DIR:-/packages}"
+
+
+[[ ! -d "${PKGS_DIR:-/packages}" ]] && echo "no such dir" && exit 1
+
# readonly PKGS_DIR=$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|.*WORKDIR="\([^"]*\)*"|\1|')
@@ -22,18 +28,18 @@ OPTIONS:
EXAMPLES:
-# # local srcpkg_a='icecat'
-# # local srcpkg_a="$(SelectSrcpkg "${pkgname}")"
-# # local srcpkg_=/packages/abslibre/libre/icecat/PKGBUILD
-# # local srcpkg_=/packages/abslibre/libre/icecat/icecat-78.10.0_pre2-1-x86_64.src.tar.gz
+ # local srcpkg_a='icecat'
+ # local srcpkg_a="$(SelectSrcpkg "${pkgname}")"
+ # local srcpkg_=/packages/abslibre/libre/icecat/PKGBUILD
+ # local srcpkg_=/packages/abslibre/libre/icecat/icecat-78.10.0_pre2-1-x86_64.src.tar.gz
USAGE_MSG
-exit
+
readonly UseAbs=0
readonly UseGui=0
+
+
SelectSrcpkg() # (pkgname)
{
-echo "SelectSrcpkg() OUT"; return
-
# echo back parameter, if not a valid pkgname
local pkgname=$1
local pkgname_rx='^[0-9a-z][0-9a-zA-Z_-]*$'
@@ -54,17 +60,20 @@ echo "SelectSrcpkg() OUT"; return
(( ${#pkgs[@]} )) && [[ -n "${pkgs[@]}" ]] || return 1
select pkg in "${pkgs[@]}" ; do echo "${pkg}" ; break ; done
-echo "SelectSrcpkg() OUT"
}
GitPkgbuilds()
{
-echo "GitPkgbuilds() IN" ; return
- local pkgname_rx='^[-@\._\+0-9a-z]+$'
+# echo "GitPkgbuilds() pkgname='$1' $( [[ "$1" =~ '^[-@\._\+0-9a-z]+$' ]] && echo t || echo f )" >&2
+# local pkgbuild=$( [[ "$1" =~ /PKGBUILD$ ]] && echo "$1" )
+
+
+# local pkgname_rx='^[-@\._\+0-9a-z]+$'
+ local pkgname_rx='^[0-9a-z][0-9a-zA-Z_-]*$'
local pkgname=$( [[ "$1" =~ ${pkgname_rx} ]] && echo "$1" )
local sort_order=$( [[ "$2" == '--reverse' ]] && echo '--reverse' )
- [[ -z "${pkgname}" ]] && echo "invalid pkgname: '$1'" && return 1
-echo "GitPkgbuilds() 2"
+# [[ -z "${pkgname}" ]] && echo "invalid pkgname: '$1'" >&2 && return 1
+ [[ -z "${pkgname}" ]] && return 1
local arch_dirs="$( find -L $ABS_DIR/ -maxdepth 2 -type d -name $pkgname | sort $sort_order)"
local abs_dirs="$( find $ABSLIBRE_DIR/ -maxdepth 2 -type d -name $pkgname | sort $sort_order)"
@@ -72,72 +81,84 @@ echo "GitPkgbuilds() 2"
local abs_dir="$( head -n 1 <<<${abs_dirs} )"
local is_writable=$(touch ${abs_dir}/PKGBUILD &> /dev/null ; echo $(( ! $? )) ; )
- [[ -z "$arch_dir" ]] && echo "no such arch PKGBUILD" && return 1
- [[ -z "$abs_dir" ]] && echo "no such parabola PKGBUILD" && return 1
+ [[ -z "$arch_dir" ]] && echo "no such arch PKGBUILD" >&2 && return 1
+ [[ -z "$abs_dir" ]] && echo "no such parabola PKGBUILD" >&2 && return 1
[[ "$arch_dir" =~ $ABS_DIR.+$ABS_DIR ]] && echo "multiple arch PKGBUILDs found (try --reverse)"
[[ "$abs_dir" =~ $ABSLIBRE_DIR.+$ABSLIBRE_DIR ]] && echo "multiple abslibre PKGBUILDs found (try --reverse)"
(( ! ${is_writable} )) && echo "fixing 'dev' group perms on ABS dir" && mkdev ${abs_dir}/
ls --color=auto --group-directories-first -F -l ${arch_dir}/trunk/ ${abs_dir}/
-
-echo "GitPkgbuilds() OUT" # ( set -x ; echo ${arch_dir}/trunk/ ${abs_dir}/ )
}
DoDiff()
{
- local a="$1$( (( UseAbs )) || echo '/PKGBUILD')"
- local b="$2$( (( UseAbs )) || echo '/PKGBUILD')"
+ local pkgbuild_a="$1"
+ local pkgbuild_b="$2"
+ local srcpkg_a="$3"
+ local srcpkg_b="$4"
local sed_rx='s|(\-\-\-\|\+\+\+) /dev/fd/[0-9]*\s*(.*)|\1 /PKGBUILD \2|'
local patch_file=srcpkgbuild.patch
+echo "DoDiff() pkgbuild_a=$pkgbuild_a pkgbuild_b=$pkgbuild_b"
+
[[ -n "${pkgbuild_a}" && -n "${pkgbuild_b}" ]] || return 1
- if diff ${srcpkg_a} ${srcpkg_b} &> /dev/null
- then echo "source packages identical"
- else echo "source packages differ"
- if diff <("${pkgbuild_a}") <("${pkgbuild_b}") &> /dev/null
- then echo "PKGBUILDs identical"
- else echo "PKGBUILDs differ"
- if (( UseGui ))
- then echo "launching meld"
- meld <("${a}") <("${b}")
- elif diff -u -r <("${a}") <("${b}") | sed -E "${diff_sed_rx}" | tee ${patch_file}
- fi
+ if [[ -n "${srcpkg_a}" && -n "${srcpkg_b}" ]]
+ then if diff "${srcpkg_a}" "${srcpkg_b}" &> /dev/null
+ then echo "source packages identical" ; return ;
+ else echo "source packages differ"
+ fi
+ fi
+
+ if diff "${pkgbuild_a}" "${pkgbuild_b}" &> /dev/null
+ then echo "PKGBUILDs identical"
+ else echo "PKGBUILDs differ"
+ if (( UseGui ))
+ then echo "launching meld"
+ meld "${pkgbuild_a}" "${pkgbuild_b}"
+ else diff -u -r "${pkgbuild_a}" "${pkgbuild_b}" | sed -E "${sed_rx}" | tee ${patch_file}
fi
fi
}
main()
{
-echo "meld-src-pkgbuilds() IN" # $# $@" >&2 ; local in=$# ;
+echo -e "meld-src-pkgbuilds() IN\n n_args$#\n 1=$1\n 2=$2\n GitPkgbuilds='$(GitPkgbuilds "$1")'" ; # $# $@" >&2 ; local in=$# ;
-# local UseGui=$( [[ "$1" == '--gui' ]] ; echo ! $(($?)) ) ; (( UseGui )) && shift ;
-# local UseGui=$( while getopts 'g' opt ; do [[ "${opt}" == 'g' ]] ; echo $(( ! $? )) ; done ; shift $(( OPTIND - 1 )) ; )
- while getopts 'ag' opt
- do case "$opt" in
- a) UseAbs=1 ;;
- g) UseGui=1 ;;
- *) echo "invalid option: '%s'" "${opt}\n${USAGE}" ; return 1 ;;
- esac
- done ; shift $(( OPTIND - 1 )) ;
-
- local srcpkg_a="$( (( UseAbs )) && $(GitPkgbuilds "$1" || echo "$1" ) || \
- $(SelectSrcpkg "$1" || GitPkgbuilds "$1" || echo "$1" ) )"
- local srcpkg_b="$( (( UseAbs )) && $(GitPkgbuilds "$2" || echo "$2" ) || \
- $(SelectSrcpkg "$1" || GitPkgbuilds "$2" || echo "$2" ) )"
- local is_src_pkg=$( [[ "${srcpkg_a}" =~ src\.tar\.gz$ && \
- "${srcpkg_b}" =~ src\.tar\.gz$ ]] ; echo $(( ! $? )) )
- local is_abs_dir=$( (( UseAbs )) && [[ -d "${srcpkg_a}" && \
- -d "${srcpkg_b}" ]] ; echo $(( ! $? )) )
- local is_pkgbuild=$( [[ "${srcpkg_a}" =~ /PKGBUILD$ && -f "${srcpkg_a}" && \
- "${srcpkg_b}" =~ /PKGBUILD$ && -f "${srcpkg_b}" ]] ; echo $(( ! $? )) )
-
-echo -e "meld-src-pkgbuilds()\n srcpkg_a=${srcpkg_a}\n srcpkg_b=${srcpkg_b}" >&2
-
- if [[ -n "${srcpkg_a}" && -n "${srcpkg_b}" && "${srcpkg_a}" != "${srcpkg_b}" ]]
+ local pkgname_rx='^[0-9a-z][0-9a-zA-Z_-]*$'
+ local is_pkg_name=$( [[ "$1" =~ ${pkgname_rx} ]] ; echo $(( ! $? )) )
+ local is_src_pkg_a=$( [[ "$1" =~ src\.tar\.gz$ ]] ; echo $(( ! $? )) )
+ local is_src_pkg_b=$( [[ "$2" =~ src\.tar\.gz$ ]] ; echo $(( ! $? )) )
+ local is_pkgbuild_a=$( [[ "$1" =~ /PKGBUILD$ ]] ; echo $(( ! $? )) )
+ local is_pkgbuild_b=$( [[ "$2" =~ /PKGBUILD$ ]] ; echo $(( ! $? )) )
+ local srcpkg_a
+ local srcpkg_b
+
+ if (( is_pkg_name ))
+ then if (( UseAbs ))
+ then srcpkgs=( "$(GitPkgbuilds "$1")" )
+ srcpkg_a=${srcpkgs[0]}
+ srcpkg_b=${srcpkgs[1]}
+ else srcpkg_a="$( SelectSrcpkg "$1" || GitPkgbuilds "$1" )"
+ srcpkg_b="$( SelectSrcpkg "$1" || GitPkgbuilds "$1" )"
+ fi
+ else (( is_src_pkg_a && is_src_pkg_b )) && srcpkg_a="$1" srcpkg_b="$2"
+ (( is_pkgbuild_a && is_pkgbuild_b )) && srcpkg_a="$1" srcpkg_b="$2"
+ fi
+
+# local are_src_pkgs=$( echo $(( is_src_pkg_a && is_src_pkg_b )) )
+ local are_src_pkgs=$( (( is_src_pkg_a && is_src_pkg_b )) ; echo $(( ! $? )) )
+ local are_abs_dirs=$( (( UseAbs )) && [[ -d "${srcpkg_a}" && \
+ -d "${srcpkg_b}" ]] ; echo $(( ! $? )) )
+ local are_pkgbuilds=$( (( is_pkgbuild_a )) && [[ -f "${srcpkg_a}" ]] && \
+ (( is_pkgbuild_b )) && [[ -f "${srcpkg_b}" ]] ; echo $(( ! $? )) )
+
+echo -e "meld-src-pkgbuilds()\n srcpkg_a=${srcpkg_a}\n srcpkg_b=${srcpkg_b}\n are_src_pkgs=$are_src_pkgs\n are_abs_dirs=$are_abs_dirs\n are_pkgbuilds=$are_pkgbuilds">&2
+
+ if [[ -z "${srcpkg_a}" || -z "${srcpkg_b}" || "${srcpkg_a}" == "${srcpkg_b}" ]]
then echo "arguments must be one <pkgname>, or two unique *.src.tar.gz or PKGBUILD"
- elif (( is_src_pkg ))
+ elif (( are_src_pkgs ))
then local pkgbuild_a="$( [[ -f "${srcpkg_a}" ]] && tar -ztf "${srcpkg_a}" | grep PKGBUILD )"
local pkgbuild_b="$( [[ -f "${srcpkg_b}" ]] && tar -ztf "${srcpkg_b}" | grep PKGBUILD )"
@@ -145,16 +166,28 @@ echo -e "meld-src-pkgbuilds()\n pkgbuild_a=${pkgbuild_a}\n pkgbuild_b=${pkgbui
if [[ -n "${pkgbuild_a}" && -n "${pkgbuild_b}" ]]
then cd /tmp
- tar -zxf "${srcpkg_a}" "${pkgbuild_a}" > srcpkgbuild_a
- tar -zxf "${srcpkg_b}" "${pkgbuild_b}" > srcpkgbuild_b
- DoDiff srcpkgbuild_a srcpkgbuild_b
+ tar -zxf "${srcpkg_a}" "${pkgbuild_a}" > ./srcpkgbuild_a
+ tar -zxf "${srcpkg_b}" "${pkgbuild_b}" > ./srcpkgbuild_b
+ DoDiff ./srcpkgbuild_a ./srcpkgbuild_b "${srcpkg_a}" "${srcpkg_b}"
fi
- elif (( is_abs_dir || is_pkgbuild ))
+ elif (( are_abs_dirs ))
+ then DoDiff "${srcpkg_a}/PKGBUILD" "${srcpkg_b}/PKGBUILD"
+
+ elif (( are_pkgbuilds ))
then DoDiff "${srcpkg_a}" "${srcpkg_b}"
fi
}
+# local UseGui=$( [[ "$1" == '--gui' ]] ; echo ! $(($?)) ) ; (( UseGui )) && shift ;
+# local UseGui=$( while getopts 'g' opt ; do [[ "${opt}" == 'g' ]] ; echo $(( ! $? )) ; done ; shift $(( OPTIND - 1 )) ; )
+while getopts 'ag' opt
+do case "$opt" in
+ a) UseAbs=1 ;;
+ g) UseGui=1 ;;
+ *) echo "invalid option: '%s'" "${opt}\n${USAGE}" ; return 1 ;;
+ esac
+done ; shift $(( OPTIND - 1 )) ; (( $# )) || ! echo "args err" || exit 1 ;
main "$@"