summaryrefslogtreecommitdiff
path: root/src/maintenance-tools/meld-src-pkgbuilds
diff options
context:
space:
mode:
Diffstat (limited to 'src/maintenance-tools/meld-src-pkgbuilds')
-rwxr-xr-xsrc/maintenance-tools/meld-src-pkgbuilds160
1 files changed, 87 insertions, 73 deletions
diff --git a/src/maintenance-tools/meld-src-pkgbuilds b/src/maintenance-tools/meld-src-pkgbuilds
index 6a26839..e53b3fd 100755
--- a/src/maintenance-tools/meld-src-pkgbuilds
+++ b/src/maintenance-tools/meld-src-pkgbuilds
@@ -4,119 +4,133 @@
readonly PKGS_DIR="$(source <(grep 'WORKDIR=' /etc/libretools.conf) ; echo "${WORKDIR}")"
# readonly PKGS_DIR=$(grep 'WORKDIR=' /etc/libretools.conf | sed 's|.*WORKDIR="\([^"]*\)*"|\1|')
+readonly UseAbs=0
+readonly UseGui=0
-select_srcpkg() # (pkgname)
+
+SelectSrcpkg() # (pkgname)
{
# echo back parameter, if not a valid pkgname
local pkgname=$1
local pkgname_rx='^[0-9a-z][0-9a-zA-Z_-]*$'
local pkg
-# echo "select_srcpkg() pkgname='$pkgname' sourcepkg $( [[ "$pkgname" =~ ${pkgname_rx} ]] && pacman -Si "$pkgname" &> /dev/null || echo " not")exists" >&2 ;
+# echo "SelectSrcpkg() pkgname='$pkgname' sourcepkg $( [[ "$pkgname" =~ ${pkgname_rx} ]] && pacman -Si "$pkgname" &> /dev/null || echo " not")exists" >&2 ;
[[ "${pkgname}" =~ ${pkgname_rx} ]] && pacman -Si ${pkgname} &> /dev/null || return 1
-# echo "select_srcpkg() pkgname=${pkgname} PKGS_DIR=$PKGS_DIR is $( pacman -Qsq ${pkgname} &> /dev/null || echo 'not ') installed" >&2
+# echo "SelectSrcpkg() pkgname=${pkgname} PKGS_DIR=$PKGS_DIR is $( pacman -Qsq ${pkgname} &> /dev/null || echo 'not ') installed" >&2
local srcpkgs_glob="${pkgname}-*.src.tar.gz"
local pkgs=( $(find "${PKGS_DIR}"/abslibre/ -type f -name "${srcpkgs_glob}" 2> /dev/null) \
$(find "${PKGS_DIR}"/sources/ -type f -name "${srcpkgs_glob}" 2> /dev/null) )
-# printf "select_srcpkg() ${#pkgs[@]} pkgs=%s\n" "${pkgs[@]}" >&2
+# printf "SelectSrcpkg() ${#pkgs[@]} pkgs=%s\n" "${pkgs[@]}" >&2
(( ${#pkgs[@]} )) && [[ -n "${pkgs[@]}" ]] || return 1
select pkg in "${pkgs[@]}" ; do echo "${pkg}" ; break ; done
}
-git-pkgbuilds()
+GitPkgbuilds()
+{
+ local pkgname_rx='^[-@\._\+0-9a-z]+$'
+ local pkgname=$( [[ "$1" =~ ${pkgname_rx} ]] && echo "$1" )
+ local sort_order=$( [[ "$2" == '--reverse' ]] && echo '--reverse' )
+ [[ -z "${pkgname}" ]] && echo "invalid pkgname: '$1'" && 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)"
+ local arch_dir="$( head -n 1 <<<${arch_dirs})"
+ 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
+
+ [[ "$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
+
+# ( set -x ; echo ${arch_dir}/trunk/ ${abs_dir}/ )
+}
+
+DoDiff() # (pkgbuild_a pkgbuild_b)
{
- local pkgname_rx='^[-@\._\+0-9a-z]+$'
- local pkgname=$( [[ "$1" =~ ${pkgname_rx} ]] && echo "$1" )
- local sort_order=$( [[ "$2" == '--reverse' ]] && echo '--reverse' )
- [[ -z "${pkgname}" ]] && echo "invalid pkgname: '$1'" && 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)"
- local arch_dir="$( head -n 1 <<<${arch_dirs})"
- 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
-
- [[ "$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
-
-# ( set -x ; echo ${arch_dir}/trunk/ ${abs_dir}/ )
- DoDiff ${arch_dir}/trunk/ ${abs_dir}/
+ local a="$1$( (( UseAbs )) || echo '/PKGBUILD')"
+ local b="$2$( (( UseAbs )) || echo '/PKGBUILD')"
+ local sed_rx='s|(\-\-\-\|\+\+\+) /dev/fd/[0-9]*\s*(.*)|\1 /PKGBUILD \2|'
+ local patch_file=srcpkgbuild.patch
+
+ [[ -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
+ fi
+ fi
}
main() # ( [ -gui ] pkgname )
{
echo "meld-src-pkgbuilds() IN" # $# $@" >&2 ; local in=$# ;
- local use_gui=$( [[ "$1" == '--gui' ]] ; echo ! $(($?)) ) ; (( use_gui )) && shift ;
-# local use_gui=$( while getopts 'g' opt ; do [[ "${opt}" == 'g' ]] ; echo $(( ! $? )) ; done ; shift $(( OPTIND - 1 )) ; )
-# local use_gui=0
-# while getopts 'g' opt
-# do case "$opt" in
-# g) use_gui=1 ;;
-# ?) N="$(sed 's|[^0-9]||g' <<<$OPTARG)" ;;
-# ?) case $OPTARG in ; a) A=$OPTARG ; ;;
-# *) error "invalid option: '%s'" "$arg" ; return 1 ;;
-# esac
-# done ; shift $(( OPTIND - 1 )) ;
-{
+# local UseGui=$( [[ "$1" == '--gui' ]] ; echo ! $(($?)) ) ; (( UseGui )) && shift ;
+# local UseGui=$( while getopts 'g' opt ; do [[ "${opt}" == 'g' ]] ; echo $(( ! $? )) ; done ; shift $(( OPTIND - 1 )) ; )
+ while getopts 'g' opt
+ do case "$opt" in
+ a) UseAbs=1 ;;
+ g) UseGui=1 ;;
+ *) echo "invalid option: '%s'" "${opt}" ; return 1 ;;
+ esac
+ done ; shift $(( OPTIND - 1 )) ;
+
# srcpkg_* eg:
- # # local srcpkg_a="$(select_srcpkg "${pkgname}")"
- # # local srcpkg_b=/packages/abslibre/libre/icecat/icecat-78.10.0_pre2-1-x86_64.src.tar.gz
- local srcpkg_a="$(select_srcpkg "$1" || echo "$1" )"
- local srcpkg_b="$(select_srcpkg "$1" || echo "$2" )"
+ # # local srcpkg_a="$(SelectSrcpkg "${pkgname}")"
+ # # local srcpkg_a='icecat'
+ # # 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="$( (( 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
- [[ "${srcpkg_a}" != "${srcpkg_b}" ]] || return 1
+ if [[ -n "${srcpkg_a}" && -n "${srcpkg_b}" && "${srcpkg_a}" != "${srcpkg_b}" ]]
+ then echo "arguments must be one <pkgname>, or two unique *.src.tar.gz or PKGBUILD"
- if [[ "${srcpkg_a}" =~ src\.tar\.gz$ && "${srcpkg_b}" =~ src\.tar\.gz$ ]]
+ elif (( is_src_pkg ))
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 )"
echo -e "meld-src-pkgbuilds()\n pkgbuild_a=${pkgbuild_a}\n pkgbuild_b=${pkgbuild_b}\n tar_a_cmd=${tar_a_cmd[@]}\n tar_b_cmd=${tar_b_cmd[@]}" >&2
- [[ -n "${pkgbuild_a}" && -n "${pkgbuild_b}" ]] || return 1
+ 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
+ fi
- cd /tmp
- pkgbuild_a=/tmp/pkgbuild_a ; tar -zxf "${srcpkg_a}" "${pkgbuild_a}" > "${pkgbuild_a}" ;
- pkgbuild_b=/tmp/pkgbuild_b ; tar -zxf "${srcpkg_b}" "${pkgbuild_b}" > "${pkgbuild_b}" ;
- DoDiff "${pkgbuild_a}" "${pkgbuild_b}"
- elif [[ "${srcpkg_a}" =~ /PKGBUILD$ && "${srcpkg_b}" =~ /PKGBUILD$ ]]
+ elif (( is_abs_dir || is_pkgbuild ))
then DoDiff "${srcpkg_a}" "${srcpkg_b}"
- else return
- fi
-}
-
-DoDiff() # (pkgbuild_a pkgbuild_b)
-{
- local sed_rx='s|(\-\-\-\|\+\+\+) /dev/fd/[0-9]*\s*(.*)|\1 /PKGBUILD \2|'
-
- [[ -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 <("${tar_a_cmd[@]}") <("${tar_b_cmd[@]}") &> /dev/null
- then echo "PKGBUILDs identical"
- else echo "PKGBUILDs differ"
- if (( use_gui ))
- then echo "launching meld"
- meld <("${tar_a_cmd[@]}") <("${tar_b_cmd[@]}")
- else diff -u <("${tar_a_cmd[@]}") <("${tar_b_cmd[@]}") | sed -E "${sed_rx}"
- fi
- fi
fi
}