summaryrefslogtreecommitdiff
path: root/packaging/autodeps.diff
diff options
context:
space:
mode:
Diffstat (limited to 'packaging/autodeps.diff')
-rw-r--r--packaging/autodeps.diff261
1 files changed, 261 insertions, 0 deletions
diff --git a/packaging/autodeps.diff b/packaging/autodeps.diff
new file mode 100644
index 0000000..bbe7715
--- /dev/null
+++ b/packaging/autodeps.diff
@@ -0,0 +1,261 @@
+--- ./autodeps/linux.prov.orig 2011-07-12 11:28:13.000000000 +0000
++++ ./autodeps/linux.prov 2011-07-18 16:47:39.000000000 +0000
+@@ -2,60 +2,72 @@
+
+ # This script reads filenames from STDIN and outputs any relevant provides
+ # information that needs to be included in the package.
++IFS=$'\n'
++filelist=($(cat))
+
+-filelist=`sed "s/['\"]/\\\&/g"`
+-
+-solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \
+- xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
++solist=($(printf "%s\n" "${filelist[@]}" | grep "\\.so" | grep -v "^/lib/ld.so" | \
++ tr '\n' '\0' | xargs -0 -r file -L | grep "ELF.*shared object" | \
++ cut -d: -f1))
+ pythonlist=
+ tcllist=
++monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)\$"))
+
+ #
+ # --- Alpha does not mark 64bit dependencies
+ case `uname -m` in
+- alpha*) mark64="" ;;
+- *) mark64="()(64bit)" ;;
++ alpha*) mark64=false ;;
++ *) mark64=true ;;
+ esac
+
+ #
+ # --- Library sonames and weak symbol versions (from glibc).
+-for f in $solist; do
+- soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
++for f in "${solist[@]}"; do
++ soname=$(objdump -p "$f" | awk '/SONAME/ {print $2}')
++ [ -n "$soname" -a -L "$f" ] && continue
++ [ -z "$soname" ] && soname="${f##*/}"
+
+- lib64=`if file -L $f 2>/dev/null | \
+- grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
+- if [ "$soname" != "" ]; then
+- if [ ! -L $f ]; then
+- echo $soname$lib64
+- objdump -p $f | awk '
+- BEGIN { START=0 ; }
+- /Version definitions:/ { START=1; }
+- /^[0-9]/ && (START==1) { print $4; }
+- /^$/ { START=0; }
+- ' | \
+- grep -v $soname | \
+- while read symbol ; do
+- echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
+- done
+- fi
++ if $mark64 && file -L "$f" 2>/dev/null | grep "ELF 64-bit" >/dev/null; then
++ lib64="()(64bit)" slib64="(64bit)"
+ else
+- echo ${f##*/}$lib64
++ lib64= slib64=
+ fi
++ echo "$soname$lib64"
++ objdump -p "$f" | awk '
++ BEGIN { START=0 ; }
++ /Version definitions:/ { START=1; }
++ /^[0-9]/ && (START==1) { print $4; }
++ /^$/ { START=0; }
++ ' | \
++ while read symbol ; do
++ echo "$soname($symbol)$slib64"
++ done
+ done | sort -u
+
+ #
+ # --- Perl modules.
+ [ -x /usr/lib/rpm/perl.prov ] &&
+- echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
++ printf "%s\n" "${filelist[@]}" | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
+
+ #
+ # --- Python modules.
+ [ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
+- echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.prov | sort -u
++ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.prov | sort -u
+
+ #
+ # --- Tcl modules.
+ [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
+- echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.prov | sort -u
++ printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.prov | sort -u
++
++#
++# --- Mono exes/dlls
++: ${MONO_PREFIX=/usr}
++if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
++ printf "%s\n" "${monolist[@]}" | MONO_PATH=$MONO_PREFIX/lib${MONO_PATH:+:$MONO_PATH} prefix=$MONO_PREFIX $MONO_PREFIX/bin/mono-find-provides || echo "WARNING: MONO RPM PROVIDES WERE NOT GENERATED FOR THIS BUILD!!" 1>&2
++fi
++
++#
++# --- Kernel module exported symbols
++[ -x /usr/lib/rpm/find-provides.ksyms ] &&
++ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-provides.ksyms "$@"
+
+ exit 0
+--- ./autodeps/linux.req.orig 2011-07-15 09:32:41.000000000 +0000
++++ ./autodeps/linux.req 2011-07-18 16:51:24.000000000 +0000
+@@ -18,20 +18,21 @@ fi
+
+ #
+ # --- Grab the file manifest and classify files.
+-#filelist=`sed "s/['\"]/\\\&/g"`
+-filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
+-exelist=`echo $filelist | xargs -r file | \
++#filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
++filelist=($(grep -Ev '/usr/doc/|/usr/share/doc/'))
++exelist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
+ grep -Ev ":.* (commands|script)[, ]" | \
+- grep ":.*executable" | cut -d: -f1`
+-scriptlist=`echo $filelist | xargs -r file | \
+- grep -E ":.* (commands|script)[, ]" | cut -d: -f1`
+-liblist=`echo $filelist | xargs -r file | \
+- grep ":.*shared object" | cut -d : -f1`
++ grep ":.*executable" | cut -d: -f1))
++scriptlist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
++ grep -E ":.* (commands|script)[, ]" | cut -d: -f1))
++liblist=($(printf "%s\0" "${filelist[@]}" | xargs -0 -r file | \
++ grep ":.*shared object" | cut -d : -f1))
+
+-interplist=
+-perllist=
+-pythonlist=
+-tcllist=
++interplist=()
++perllist=()
++pythonlist=()
++tcllist=()
++monolist=($(printf "%s\n" "${filelist[@]}" | egrep "\\.(exe|dll)(\\.config)?\$"))
+
+ #
+ # --- Alpha does not mark 64bit dependencies
+@@ -43,12 +44,12 @@ esac
+ if [ "$needed" -eq 0 ]; then
+ #
+ # --- Executable dependency sonames.
+- for f in $exelist; do
+- [ -r $f -a -x $f ] || continue
+- lib64=`if file -L $f 2>/dev/null | \
++ for f in "${exelist[@]}"; do
++ [ -r "$f" -a -x "$f" ] || continue
++ lib64=`if file -L "$f" 2>/dev/null | \
+ grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
+- ldd $f | awk '/=>/ {
+- if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
++ ldd "$f" | awk '/=>/ {
++ if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /linux-gate.so/) {
+ gsub(/'\''"/,"\\&",$1);
+ printf "%s'$lib64'\n", $1
+ }
+@@ -57,12 +58,12 @@ if [ "$needed" -eq 0 ]; then
+
+ #
+ # --- Library dependency sonames.
+- for f in $liblist; do
+- [ -r $f ] || continue
+- lib64=`if file -L $f 2>/dev/null | \
++ for f in "${liblist[@]}"; do
++ [ -r "$f" ] || continue
++ lib64=`if file -L "$f" 2>/dev/null | \
+ grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
+- ldd $f | awk '/=>/ {
+- if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /libredhat-kernel.so/) {
++ ldd "$f" | awk '/=>/ {
++ if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/ && $1 !~ /linux-gate.so/) {
+ gsub(/'\''"/,"\\&",$1);
+ printf "%s'$lib64'\n", $1
+ }
+@@ -72,30 +73,30 @@ fi
+
+ #
+ # --- Script interpreters.
+-for f in $scriptlist; do
+- [ -r $f -a -x $f ] || continue
+- interp=`head -n 1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1`
+- interplist="$interplist $interp"
++for f in "${scriptlist[@]}"; do
++ [ -r "$f" -a -x "$f" ] || continue
++ interp=`head -n 1 "$f" | sed -ne 's/^\#\![ ]*//p' | cut -d" " -f1`
++ interplist=("${interplist[@]}" "$interp")
+ case $interp in
+- */perl) perllist="$perllist $f" ;;
++ */perl) perllist=("${perllist[@]}" "$f") ;;
+ esac
+ done
+-[ -n "$interplist" ] && { echo "$interplist" | tr '[:blank:]' \\n | sort -u ; }
++[ -n "$interplist" ] && { printf "%s\n" "${interplist[@]}" | sort -u ; }
+
+ #
+ # --- Add perl module files to perllist.
+-for f in $filelist; do
+- [ -r $f -a "${f%.pm}" != "${f}" ] && perllist="$perllist $f"
++for f in "${filelist[@]}"; do
++ [ -r "$f" -a "${f%.pm}" != "${f}" ] && perllist=("${perllist[@]}" "$f")
+ done
+
+ #
+ # --- Weak symbol versions (from glibc).
+ [ -n "$mark64" ] && mark64="(64bit)"
+-for f in $liblist $exelist ; do
+- [ -r $f ] || continue
+- lib64=`if file -L $f 2>/dev/null | \
++for f in "${liblist[@]}" "${exelist[@]}" ; do
++ [ -r "$f" ] || continue
++ lib64=`if file -L "$f" 2>/dev/null | \
+ grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
+- objdump -p $f | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; }
++ objdump -p "$f" | awk 'BEGIN { START=0; LIBNAME=""; needed='$needed'; }
+ /^$/ { START=0; }
+ /^Dynamic Section:$/ { START=1; }
+ (START==1) && /NEEDED/ {
+@@ -112,7 +113,7 @@ for f in $liblist $exelist ; do
+ sub(/:/, "", $3);
+ LIBNAME=$3;
+ }
+- (START==2) && (LIBNAME!="") && ($4!="") && (($4~/^GLIBC_*/) || ($4~/^GCC_*/)) {
++ (START==2) && (LIBNAME!="") && ($4!="") {
+ print LIBNAME "(" $4 ")'$lib64'";
+ }
+ '
+@@ -120,17 +121,29 @@ done | sort -u
+
+ #
+ # --- Perl modules.
+-[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \
+- echo $perllist | tr '[:blank:]' \\n | /usr/lib/rpm/perl.req | sort -u
++#[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \
++# printf "%s\n" "${perllist[@]}" | /usr/lib/rpm/perl.req | sort -u
+
+ #
+ # --- Python modules.
+ [ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \
+- echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.req | sort -u
++ printf "%s\n" "${pythonlist[@]}" | /usr/lib/rpm/python.req | sort -u
+
+ #
+ # --- Tcl modules.
+ [ -x /usr/lib/rpm/tcl.req -a -n "$tcllist" ] && \
+- echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.req | sort -u
++ printf "%s\n" "${tcllist[@]}" | /usr/lib/rpm/tcl.req | sort -u
++
++#
++# --- Mono exes/dlls
++: ${MONO_PREFIX=/usr}
++if [ -x $MONO_PREFIX/bin/mono -a -n "$monolist" ] ; then
++ printf "%s\n" "${monolist[@]}" | MONO_PATH=$MONO_PREFIX/lib${MONO_PATH:+:$MONO_PATH} prefix=$MONO_PREFIX $MONO_PREFIX/bin/mono-find-requires || echo "WARNING: MONO RPM REQUIRES WERE NOT GENERATED FOR THIS BUILD!!" 1>&2
++fi
++
++#
++# --- Kernel module imported symbols
++[ -x ${0%/*}/find-requires.ksyms ] &&
++ printf "%s\n" "${filelist[@]}" | ${0%/*}/find-requires.ksyms "$@"
+
+ exit 0