X-Git-Url: https://git.tld-linux.org/?p=packages%2Frpm-build-tools.git;a=blobdiff_plain;f=shrc.sh;h=b84d622334bcd468a24006e6319f7f59c3949f96;hp=8e3698402618e0238fa7eba0fca2d14320fc6c37;hb=f8a24e0ba6f0a677b7b4626b6a1085ba966b0959;hpb=bbe9c10ae848838adafe5772aec8f8b9624c4432 diff --git a/shrc.sh b/shrc.sh index 8e36984..b84d622 100755 --- a/shrc.sh +++ b/shrc.sh @@ -1,22 +1,88 @@ # shell aliases and functions for PLD Developer # set $dist, used by functions below +[ -n "$dist" ] || dist=$(lsb_release -sc 2>/dev/null | tr 'A-Z' 'a-z') [ -n "$dist" ] || dist=$(awk '/PLD Linux/ {print tolower($NF)}' /etc/pld-release 2>/dev/null | tr -d '()') -case "$dist" in -ac|th|ti) - ;; -*) - # invalid one ;) - dist= -esac +alias q='rpm -q --qf "%{N}-%|E?{%{E}:}|%{V}-%{R}.%{ARCH}\n"' +alias adif="dif -x '*.m4' -x ltmain.sh -x install-sh -x depcomp -x 'Makefile.in' -x compile -x 'config.*' -x configure -x missing -x mkinstalldirs -x autom4te.cache" +alias pclean="sed -i~ -e '/^\(?\|=\+$\|unchanged:\|diff\|only\|Only\|Tylko\|Binary files\|Files\|Common\|index \|Index:\|RCS file\|retrieving\)/d'" -if [ "$dist" ]; then +# undo spec utf8 +# note: it will do it blindly, so any lang other than -pl is most likely broken +specutfundo() { + local spec="$1" + iconv -futf8 -tlatin2 "$spec" > m + sed -e 's/\.UTF-8//' m > "$spec" + rm -f m +} -alias ipoldek-$dist="poldek -q --sn $dist --cmd" -alias $dist-provides="ipoldek-$dist what-provides" -alias $dist-verify=dist-verify -alias $dist-requires=dist-requires +# merges two patches +# requires: patchutils +pmerge() { + combinediff -p1 $1 $2 > m.patch || return + pclean m.patch + dif $1 m.patch +} + +# downloads sourceforge url from specific mirror +sfget() { + local url="$1" + url="${url%?download}" + url="${url%?use_mirror=*}" + url="${url#http://downloads.}" + url="http://dl.${url#http://prdownloads.}" + # use mirror + local mirror="http://nchc.dl.sourceforge.net" + url="$mirror/sourceforge/${url#http://dl.sourceforge.net/}" + wget -c "$url" +} + +dif() { + if [ -t 1 ]; then + diff -ur -x .svn -x .git -x .bzr -x CVS "$@" | diffcol | less -R + else + diff -ur -x .svn -x .git -x .bzr -x CVS "$@" + fi +} + +diffcol() { +sed -e ' + s,,^[,g; + s,,^G,g; + s,^\(Index:\|diff\|---\|+++\) .*$,&,; + s,^@@ ,&,; + s,^-,&,; + s,^+,&,; + s,\r,^M,g; + s, , ,g; + s,\([^[:space:]]\)\([[:space:]]\+\)$,\1\2,g; + s,$,, +' ${1:+"$@"} +} + +# does diff between FILE~ and FILE +# the diff can be applied with patch -p1 +d() { + local file="$1" dir + shift + if [[ "$file" = /* ]]; then + # full path -- no idea where to strip + dir=. + diff=$file + else + # relative path -- keep one path component from current dir + dir=.. + diff=${PWD##*/}/${file} + fi + + (builtin cd "$dir"; dif $diff{~,} "$@") +} + +# spec name from NVR +rpm2spec() { + sed -re 's,^(.+)-[^-]+-[^-]+$,\1.spec,' +} # move AC-branch tag to current checkout # if AC-branch as branch exists, it is first removed @@ -40,14 +106,24 @@ ac-tag() { git push -f origin $branch } -# undo spec utf8 -# note: it will do it blindly, so any lang other than -pl is most likely broken -specutfundo() { - local spec="$1" - iconv -futf8 -tlatin2 "$spec" > m - sed -e 's/\.UTF-8//' m > "$spec" - rm -f m -} +###### functions/aliases below require $dist to be set ###### + +case "$dist" in +ac|th|ti) + ;; +*) + # invalid one ;) + dist= +esac + +if [ -z "$dist" ]; then + return +fi + +alias ipoldek-$dist="poldek -q --sn $dist --cmd" +alias $dist-provides="ipoldek-$dist what-provides" +alias $dist-verify=dist-verify +alias $dist-requires=dist-requires dist-requires() { local opts deps @@ -189,139 +265,3 @@ get-buildlog() { done } -fi # no $dist set - -alias adif="dif -x '*.m4' -x ltmain.sh -x install-sh -x depcomp -x 'Makefile.in' -x compile -x 'config.*' -x configure -x missing -x mkinstalldirs -x autom4te.cache" -alias pclean="sed -i~ -e '/^\(?\|=\+$\|unchanged:\|diff\|only\|Only\|Tylko\|Files\|Common\|Index:\|RCS file\|retrieving\)/d'" - -# makes diff from PLD CVS urls -# requires: cvs, tee -urldiff() { - local url="$1" - if [ -z "$url" ]; then - echo >&2 "Reading STDIN" - read url - fi - - echo >&2 "Process $url" - local file="$url" - file=${file#*SPECS/} - file=${file#*SOURCES/} - file=${file##*/} - local r1=${file#*r1=} - local r2=${r1#*r2=} - r2=${r2%%[&;]*} - r1=${r1%%[&;]*} - file=${file%\?*} - file=${file%.diff} - - echo >&2 "$file: $r1 -> $r2" - - if [ -t 1 ]; then - cvs diff -u -r$r1 -r$r2 $file | tee m.patch | diffcol - else - cvs diff -u -r$r1 -r$r2 $file - fi -} - -# makes diff from kde svn path -# requires: wget, tee -kdediff() { - local url="$1" r1 r2 - # --- branches/KDE/3.5/kdepim/kpilot/conduits/vcalconduit/vcalRecord.cc #624744:624745 - url=${url#*--- } - echo >&2 "Process $url" - r1=${url#*#} - r2=${r1#*:} - r1=${r1%:*} - - # http://websvn.kde.org/branches/KDE/3.5/kdepim/kpilot/conduits/vcalconduit/vcalRecord.cc?rev=624745&r1=612579&r2=624745&makepatch=1&diff_format=u - # http://websvn.kde.org/branches/KDE/3.5/kdenetwork/kopete/protocols/oscar/aim/aimcontact.cpp?r1=609808&r2=673027&view=patch - url=http://websvn.kde.org/${url% *} - url="$url?r1=$r1&r2=$r2&view=patch" - - if [ -t 1 ]; then - wget "$url" -O -| tee m.patch | diffcol - else - wget "$url" -O - - fi -} - -# merges two patches -# requires: patchutils -pmerge() { - combinediff -p1 $1 $2 > m.patch || return - pclean m.patch - dif $1 m.patch -} - -# downloads sourceforge url from specific mirror -sfget() { - local url="$1" - url="${url%?download}" - url="${url%?use_mirror=*}" - url="${url#http://downloads.}" - url="http://dl.${url#http://prdownloads.}" - # use mirror - local mirror="http://nchc.dl.sourceforge.net" - url="$mirror/sourceforge/${url#http://dl.sourceforge.net/}" - wget -c "$url" -} - -dif() { - if [ -t 1 ]; then - diff -ur -x .svn -x .git -x .bzr -x CVS "$@" | diffcol | less -R - else - diff -ur -x .svn -x .git -x .bzr -x CVS "$@" - fi -} - -diffcol() { -sed -e ' - s,,^[,g; - s,,^G,g; - s,^\(Index:\|diff\|---\|+++\) .*$,&,; - s,^@@ ,&,; - s,^-,&,; - s,^+,&,; - s,\r,^M,g; - s, , ,g; - s,\([^[:space:]]\)\([[:space:]]\+\)$,\1\2,g; - s,$,, -' ${1:+"$@"} -} - -# does diff between FILE~ and FILE -# the diff can be applied with patch -p1 -d() { - local file="$1" - local dir diff - if [[ "$file" = /* ]]; then - # full path -- no idea where to strip - dir=. - diff=$file - else - # relative path -- keep one path component from current dir - dir=.. - diff=${PWD##*/}/${file} - fi - - (builtin cd "$dir"; dif $diff{~,}) -} - -# spec name from NVR -rpm2spec() { - sed -re 's,^(.+)-[^-]+-[^-]+$,\1.spec,' -} - -rpmb() { - local SPEC SPECDIR arg - for arg in "$@"; do - case "$arg" in - *.spec) SPEC="$arg" - ;; - esac - done - SPECDIR=$(dirname "$(pwd)/${SPEC:-.}") - command rpmbuild --define "_specdir $SPECDIR" --define "_sourcedir $SPECDIR" "$@" -}