diff options
-rw-r--r-- | app-admin/gentoolkit/Manifest | 8 | ||||
-rw-r--r-- | app-admin/gentoolkit/files/scripts/revdep-rebuild | 228 | ||||
-rw-r--r-- | app-admin/gentoolkit/files/scripts/revdep-rebuild-1 | 351 | ||||
-rw-r--r-- | app-admin/gentoolkit/files/scripts/revdep-rebuild-2 | 369 | ||||
-rw-r--r-- | app-admin/gentoolkit/gentoolkit-0.1.30.ebuild | 5 |
5 files changed, 169 insertions, 792 deletions
diff --git a/app-admin/gentoolkit/Manifest b/app-admin/gentoolkit/Manifest index eca140440251..c1dcdf26f41e 100644 --- a/app-admin/gentoolkit/Manifest +++ b/app-admin/gentoolkit/Manifest @@ -1,6 +1,6 @@ -MD5 93a769ee92d7a5a9280473151050fe4b ChangeLog 19444 +MD5 2545f8557950168154d8943d0d13e813 ChangeLog 19633 MD5 2342f8711f0a4ecb063556c25fde9add metadata.xml 605 -MD5 9168444851fa2fc46e042d60ab7d934c gentoolkit-0.1.30.ebuild 2801 +MD5 dc9562297734795490f46beb12802989 gentoolkit-0.1.30.ebuild 2727 MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-gentoolkit-0.1.30 0 MD5 643c63442c088517b4648a3e865dfc55 files/euse/ChangeLog 112 MD5 8ac906ab7791d60344eb357af4002247 files/euse/README 4404 @@ -31,8 +31,6 @@ MD5 a7acade566ea2f6b9bb4e9e67871b49d files/scripts/pkg-clean 2861 MD5 c60e5311fdbbfac79ea17c54dc8047b8 files/scripts/pkg-size 1224 MD5 d8eb154e6648ef4bfbe8eec1d7edfc59 files/scripts/qpkg 13662 MD5 ac41939247058bc3d14dadeb9026e494 files/scripts/qpkg.1 3476 -MD5 7e7e5784aa3677b050d6d6c76cb29e61 files/scripts/revdep-rebuild 7986 +MD5 d573f7c53fb7c9a9f9e6ffe0709a8571 files/scripts/revdep-rebuild 11306 MD5 347e69e1c9fba8b60fa631d92ea0a8f2 files/scripts/useflag 16164 MD5 0a120feea2b79a3731c7912926421a27 files/scripts/useflag.1 5461 -MD5 bfa3fc19461c44974be9d2f6ba19590b files/scripts/revdep-rebuild-1 10573 -MD5 49d23a87d7fbdf8ca1b2f78a0d6f188c files/scripts/revdep-rebuild-2 11304 diff --git a/app-admin/gentoolkit/files/scripts/revdep-rebuild b/app-admin/gentoolkit/files/scripts/revdep-rebuild index a1d75eb9c0c2..78ce349da2c2 100644 --- a/app-admin/gentoolkit/files/scripts/revdep-rebuild +++ b/app-admin/gentoolkit/files/scripts/revdep-rebuild @@ -1,17 +1,32 @@ #! /bin/bash # Copyright 1999-2003 Gentoo Technologies, Inc. -# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/files/scripts/revdep-rebuild,v 1.2 2003/05/09 14:51:33 utx Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/files/scripts/revdep-rebuild,v 1.3 2003/07/18 16:16:14 mholzer Exp $ + +# revdep-rebuild: Reverse dependency rebuilder. # Author: Stanislav Brabec <utx@gentoo.org> # requires: qpkg -# FIXME: Rebuild order should follow DEPEND tree, otherwise packages -# can be rebuild incorrectly or fail. +# Known problems: +# +# In exact ebuild mode revdep-rebuild can fails to get order packages, +# which are not up to date. This is because emerge first tries to +# merge latest package and last in resort it tries to degrade. +# http://bugs.gentoo.org/show_bug.cgi?id=23018 +# +# Rebuild in --package-names mode should be default, but emerge has no +# feature to update to latest version of defined SLOT. +# http://bugs.gentoo.org/show_bug.cgi?id=4698 # Mask of specially evaluated libraries (exactly one space separated). LD_LIBRARY_MASK="libodbcinst.so libodbc.so libjava.so libjvm.so" +# List of directories to be searched (feel free to edit it) +# Note /usr/libexec and /usr/local/subprefix cotradicts FHS, but are present +# /var/something is for cgi and similar scripts +SEARCH_DIRS="/lib /bin /sbin /usr/lib /usr/bin /usr/sbin /usr/libexec /usr/X11R6/lib /usr/X11R6/bin /usr/X11R6/sbin /usr/e1* /usr/local /usr/qt* /usr/kde/*/lib /usr/*-*-linux-gnu /opt /var/qmail /var/vpopmail /home/httpd/cgi-bin" + # Base of temporary files names. LIST=~/.revdep-rebuild @@ -30,6 +45,9 @@ BL="\x1b[34;01m" alias echo_v=echo PACKAGE_NAMES=false +SONAME="not found" +SONAME_GREP=fgrep +SEARCH_BROKEN=true while : ; do case "$1" in @@ -39,6 +57,10 @@ while : ; do echo "Broken reverse dependency rebuilder." echo echo " -X, --package-names recompile based on package names, not exact versions" + echo " --soname SONAME recompile packages using library with SONAME instead" + echo " of broken library" + echo " --soname-regexp SONAME" + echo " the same as --soname, but accepts grep-style regexp" echo " -q, --quiet be less verbose" echo echo "Calls emerge, all other options are used for it (e. g. -p, --pretend)." @@ -54,6 +76,28 @@ while : ; do alias echo_v=: shift ;; + --soname=* ) + SONAME="${1#*=}" + SEARCH_BROKEN=false + shift + ;; + --soname ) + SONAME="$2" + SEARCH_BROKEN=false + shift 2 + ;; + --soname-regexp=* ) + SONAME="${1#*=}" + SONAME_GREP=grep + SEARCH_BROKEN=false + shift + ;; + --soname-regexp ) + SONAME="$2" + SONAME_GREP=grep + SEARCH_BROKEN=false + shift 2 + ;; -- ) shift break @@ -76,9 +120,23 @@ function rm_temp () { exit 1 } +if $SEARCH_BROKEN ; then + SONAME_SEARCH="$SONAME" + LLIST=$LIST + HEAD_TEXT="broken by any package update" + OK_TEXT="Dynamic linking on your system is consistent" + WORKING_TEXT=" consistency" +else + SONAME_SEARCH=" $SONAME " + LLIST=${LIST}_$(echo "$SONAME_SEARCH$SONAME" | md5sum | head -c 8) + HEAD_TEXT="using given shared object name" + OK_TEXT="There are no dynamic links to $SONAME" + WORKING_TEXT="" +fi + echo echo "Checking reverse dependencies..." -echo "Packages containing binaries and libraries broken by any package update," +echo "Packages containing binaries and libraries $HEAD_TEXT," echo "will be recompiled." echo @@ -87,49 +145,55 @@ if [ -f $LIST.1_files ] ; then echo " using existing $LIST.1_files." else set_trap "$LIST.1_files" -# Note /usr/libexec and /usr/local/subprefix cotradicts FHS, but are present - find /lib /bin /sbin /usr/lib /usr/bin /usr/sbin /usr/libexec /usr/X11R6/lib /usr/X11R6/bin /usr/X11R6/sbin /usr/local /usr/kde/*/lib /usr/*-*-linux-gnu /opt -type f \( -perm +u+x -o -name '*.so' -o -name '*.so.*' \) 2>/dev/null >$LIST.1_files + find $SEARCH_DIRS -type f \( -perm +u+x -o -name '*.so' -o -name '*.so.*' \) 2>/dev/null >$LIST.1_files echo -e " done.\n ($LIST.1_files)" fi -echo -echo -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" -if [ -f $LIST.2_ldpath ] ; then - echo " using existing $LIST.2_ldpath." -else - set_trap "$LIST.2_ldpath" - ( - grep '.*\.so\(\|\..*\)$' <$LIST.1_files | sed 's:/[^/]*$::' - sed '/^#/d;s/#.*$//' </etc/ld.so.conf - ) | uniq | sort | uniq | - tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath - echo -e " done.\n ($LIST.2_ldpath)" +if $SEARCH_BROKEN ; then + echo + echo -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" + if [ -f $LIST.2_ldpath ] ; then + echo " using existing $LIST.2_ldpath." + else + set_trap "$LIST.2_ldpath" + ( + grep '.*\.so\(\|\..*\)$' <$LIST.1_files | sed 's:/[^/]*$::' + sed '/^#/d;s/#.*$//' </etc/ld.so.conf + ) | uniq | sort | uniq | + tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath + echo -e " done.\n ($LIST.2_ldpath)" + fi + export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" fi -export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" echo -echo -n -e "${GR}Checking dynamic linking consistency...${NO}" -if [ -f $LIST.3_broken ] ; then - echo " using existing $LIST.3_broken." +echo -n -e "${GR}Checking dynamic linking$WORKING_TEXT...${NO}" +if [ -f $LLIST.3_rebuild ] ; then + echo " using existing $LLIST.3_rebuild." else echo_v - set_trap "$LIST.3_broken" + set_trap "$LLIST.3_rebuild" LD_MASK="\\( $(echo "$LD_LIBRARY_MASK" | sed 's/\./\\./g;s/ / \\| /g') \\)" - echo -n >$LIST.3_broken + echo -n >$LLIST.3_rebuild cat $LIST.1_files | while read FILE ; do # Note: double checking seems to be faster than single # with complete path (special add ons are rare). - if ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - fgrep -q 'not found' ; then - if LD_LIBRARY_PATH="$COMPLETE_LD_LIBRARY_PATH" \ + if ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | + $SONAME_GREP -q "$SONAME_SEARCH" ; then + if $SEARCH_BROKEN ; then + if LD_LIBRARY_PATH="$COMPLETE_LD_LIBRARY_PATH" \ ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - fgrep -q 'not found' ; then - echo "$FILE" >>$LIST.3_broken - echo_v " broken $FILE (requires $(ldd "$FILE" | sed -n 's/ \(.*\) => not found$/\1/p' | tr '\n' ' ' | sed 's/ $//' ))" + $SONAME_GREP -q "$SONAME_SEARCH" ; then + echo "$FILE" >>$LLIST.3_rebuild + echo_v " broken $FILE (requires $(ldd "$FILE" | sed -n 's/ \(.*\) => not found$/\1/p' | tr '\n' ' ' | sed 's/ $//' ))" + fi + else + echo "$FILE" >>$LLIST.3_rebuild + echo_v " found $FILE" fi fi done - echo -e " done.\n ($LIST.3_broken)" + echo -e " done.\n ($LLIST.3_rebuild)" fi if $PACKAGE_NAMES ; then @@ -137,65 +201,97 @@ if $PACKAGE_NAMES ; then echo echo -n -e "${GR}Assigning files to packages...${NO}" - if [ -f $LIST.4_packages_raw ] ; then - echo " using existing $LIST.4_packages_raw." + if [ -f $LLIST.4_packages_raw ] ; then + echo " using existing $LLIST.4_packages_raw." else - set_trap "$LIST.4_packages_raw" - echo -n >$LIST.4_packages_raw - echo -n >$LIST.4_package_owners - cat $LIST.3_broken | while read FILE ; do + set_trap "$LLIST.4_packages_raw" + echo -n >$LLIST.4_packages_raw + echo -n >$LLIST.4_package_owners + cat $LLIST.3_rebuild | while read FILE ; do PKG="$(qpkg -nc -f "$FILE")" if [ -z "$PKG" ] ; then echo -n -e "\n ${RD}*** $FILE not owned by any package is broken! ***${NO}" - echo "$FILE -> (none)" >> $LIST.4_package_owners + echo "$FILE -> (none)" >> $LLIST.4_package_owners echo_v -n -e "\n $FILE -> (none)" else - echo "$PKG" >> $LIST.4_packages_raw - echo "$FILE -> $PKG" >> $LIST.4_package_owners + echo "$PKG" >> $LLIST.4_packages_raw + echo "$FILE -> $PKG" >> $LLIST.4_package_owners echo_v -n -e "\n $FILE -> $PKG" fi done echo_v - echo -e " done.\n ($LIST.4_packages_raw, $LIST.4_package_owners)" + echo -e " done.\n ($LLIST.4_packages_raw, $LLIST.4_package_owners)" fi echo echo -n -e "${GR}Cleaning list of packages to rebuild...${NO}" - if [ -f $LIST.5_packages ] ; then - echo " using existing $LIST.5_packages." + if [ -f $LLIST.5_packages ] ; then + echo " using existing $LLIST.5_packages." else - set_trap "$LIST.5_packages" - sort <$LIST.4_packages_raw | uniq >$LIST.5_packages - echo -e " done.\n ($LIST.5_packages)" + set_trap "$LLIST.5_packages" + sort <$LLIST.4_packages_raw | uniq >$LLIST.5_packages + echo -e " done.\n ($LLIST.5_packages)" fi - REBUILD_LIST="$(cat $LIST.5_packages | tr '\n' ' ')" + RAW_REBUILD_LIST="$(cat $LLIST.5_packages | tr '\n' ' ')" else EXACT_EBUILDS=true echo echo -n -e "${GR}Assigning files to ebuilds...${NO}" - if [ -f $LIST.4_ebuilds ] ; then - echo " using existing $LIST.4_ebuilds." + if [ -f $LLIST.4_ebuilds ] ; then + echo " using existing $LLIST.4_ebuilds." else - set_trap "$LIST.4_ebuilds" - cat $LIST.3_broken | sed 's/^/obj /;s/$/ /' | + set_trap "$LLIST.4_ebuilds" + cat $LLIST.3_rebuild | sed 's/^/obj /;s/$/ /' | ( cd /var/db/pkg fgrep -l -f - */*/CONTENTS - ) | sed s:/CONTENTS:: > $LIST.4_ebuilds - echo -e " done.\n ($LIST.4_ebuilds)" + ) | sed s:/CONTENTS:: > $LLIST.4_ebuilds + echo -e " done.\n ($LLIST.4_ebuilds)" fi - REBUILD_LIST="$(cat $LIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" + RAW_REBUILD_LIST="$(cat $LLIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" +fi + +echo +echo -n -e "${GR}Evaluating package order...${NO}" +if [ -f $LLIST.5_order ] ; then + echo " using existing $LLIST.5_order." +else + if [ ! -z "$RAW_REBUILD_LIST" ] ; then + REBUILD_GREP="^\\($( (emerge --nospinner --pretend --oneshot --nodeps $RAW_REBUILD_LIST ; echo $? >$LLIST.5_status ) | sed -n 's/\./\\&/g;s/ //g;s/$/\\/;s/\[[^]]*\]//gp' | tr '\n' '|' | sed 's/|$//'))\$" + if [ $(cat $LLIST.5_status) -gt 0 ] ; then + echo "" + echo -e "${RD}Warning: Failed to resolve package order." + echo -e "Will merge in \"random\" order!${NO}" + echo "Possible reasons:" + echo "- Some ebuilds are no more in portage tree." + echo "- Some ebuilds are masked, try to change ACCEPT_KEYWORDS=\"~<your platform>\"" + echo " and/or use /etc/portage/package.unmask" + for i in . . . . . ; do + echo -n -e '\a.' + sleep 1 + done + ln -f $LLIST.4_ebuilds $LLIST.5_order + else + emerge --nospinner --pretend --oneshot --emptytree $RAW_REBUILD_LIST | sed -n 's/ //g;s/^.*\]//p' | grep "$REBUILD_GREP" >$LLIST.5_order + fi + else + echo -n "" >$LLIST.5_order + fi + echo -e " done.\n ($LLIST.5_order)" fi +REBUILD_LIST="$(cat $LLIST.5_order | sed s/^/=/ | tr '\n' ' ')" + trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM if [ -z "$REBUILD_LIST" ] ; then - echo -e "\n${GR}Dynamic linking on your system is consistent... All done.${NO} " - rm $LIST.?_* + echo -e "\n${GR}$OK_TEXT... All done.${NO} " + rm $LIST.[1-2]_* + rm $LLIST.[3-9]_* exit 0 fi @@ -225,7 +321,7 @@ fi # Run in background to correctly handle Ctrl-C ( emerge --oneshot --nodeps $@ $REBUILD_LIST - echo $? >$LIST.6_status + echo $? >$LLIST.6_status ) & wait @@ -234,24 +330,27 @@ wait # trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM #fi -if [ "$(cat $LIST.6_status)" -gt 0 ] ; then +if [ "$(cat $LLIST.6_status)" -gt 0 ] ; then echo echo -e "${RD}Result is not OK, you have following chances:${NO}" - echo "- if emerge failed during build, fix the problems and re-run this script" + echo "- if emerge failed during build, fix the problems and re-run revdep-rebuild" echo " or" echo "- use -X or --package-names as first argument (try to rebuild package, not exact" echo " ebuild - ignores SLOT!)" echo " or" + echo "- set ACCEPT_KEYWORDS=\"~<your platform>\" and/or /etc/portage/package.unmask" + echo " (and remove $LLIST.5_order to be evaluated again)" + echo " or" echo "- modify the above emerge command and run it manually" echo " or" echo "- compile or unmerge unsatisfied packages manually, remove temporary files and" echo " try again (you can edit package/ebuild list first)" echo echo -e "${GR}To remove temporary files, please run:${NO}" - echo "rm $LIST.?_*" + echo "rm $LIST*.?_*" else if $IS_REAL_MERGE ; then - trap "echo -e \" terminated. Please remove them manually:\nrm $LIST.?_*\" ; exit 1" \ + trap "echo -e \" terminated. Please remove them manually:\nrm $LIST*.?_*\" ; exit 1" \ SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM echo -n -e "${GR}Build finished correctly. Removing temporary files...${NO} " for i in . . . . . . . . . . ; do @@ -259,11 +358,12 @@ else sleep 1 done echo - rm $LIST.?_* - echo "You can re-run this script to verify that all libraries and binaries" + rm $LIST.[1-2]_* + rm $LLIST.[3-9]_* + echo "You can re-run revdep-rebuild to verify that all libraries and binaries" echo "are fixed. If some inconsistency remains, it can be orphaned file, deep" echo "dependency, binary package or specially evaluated library." else - echo -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run the script.${NO}" + echo -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.${NO}" fi fi diff --git a/app-admin/gentoolkit/files/scripts/revdep-rebuild-1 b/app-admin/gentoolkit/files/scripts/revdep-rebuild-1 deleted file mode 100644 index a81902d02357..000000000000 --- a/app-admin/gentoolkit/files/scripts/revdep-rebuild-1 +++ /dev/null @@ -1,351 +0,0 @@ -#! /bin/bash - -# Copyright 1999-2003 Gentoo Technologies, Inc. -# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/files/scripts/revdep-rebuild-1,v 1.1 2003/06/30 20:54:18 utx Exp $ - -# revdep-rebuild: Reverse dependency rebuilder. -# Author: Stanislav Brabec <utx@gentoo.org> - -# requires: qpkg - -# Known problems: -# -# In exact ebuild mode revdep-rebuild can fails to get order packages, -# which are not up to date. This is because emerge first tries to -# merge latest package and last in resort it tries to degrade. -# http://bugs.gentoo.org/show_bug.cgi?id=23018 -# -# Rebuild in --package-names mode should be default, but emerge has no -# feature to update to latest version of defined SLOT. -# http://bugs.gentoo.org/show_bug.cgi?id=4698 - -# Mask of specially evaluated libraries (exactly one space separated). -LD_LIBRARY_MASK="libodbcinst.so libodbc.so libjava.so libjvm.so" - -# List of directories to be searched (feel free to edit it) -# Note /usr/libexec and /usr/local/subprefix cotradicts FHS, but are present -# /var/something is for cgi and similar scripts -SEARCH_DIRS="/lib /bin /sbin /usr/lib /usr/bin /usr/sbin /usr/libexec /usr/X11R6/lib /usr/X11R6/bin /usr/X11R6/sbin /usr/e1* /usr/local /usr/qt* /usr/kde/*/lib /usr/*-*-linux-gnu /opt /var/qmail /var/vpopmail /home/httpd/cgi-bin" - -# Base of temporary files names. -LIST=~/.revdep-rebuild - -shopt -s nullglob -shopt -s expand_aliases -unalias -a - -NO="\x1b[0;0m" -BR="\x1b[0;01m" -CY="\x1b[36;01m" -GR="\x1b[32;01m" -RD="\x1b[31;01m" -YL="\x1b[33;01m" -BL="\x1b[34;01m" - -alias echo_v=echo - -PACKAGE_NAMES=false -SONAME="not found" -SONAME_GREP=fgrep -SEARCH_BROKEN=true - -while : ; do - case "$1" in - -h | --help ) - echo "Usage: $0 [OPTIONS] [--] [EMERGE_OPTIONS]" - echo - echo "Broken reverse dependency rebuilder." - echo - echo " -X, --package-names recompile based on package names, not exact versions" - echo " --soname SONAME recompile packages using library with SONAME instead" - echo " of broken library" - echo " --soname-regexp SONAME" - echo " the same as --soname, but accepts grep-style regexp" - echo " -q, --quiet be less verbose" - echo - echo "Calls emerge, all other options are used for it (e. g. -p, --pretend)." - echo - echo "Report bugs to <utx@gentoo.org>" - exit 0 - ;; - -X | --package-names ) - PACKAGE_NAMES=true - shift - ;; - -q | --quiet ) - alias echo_v=: - shift - ;; - --soname=* ) - SONAME="${1#*=}" - SEARCH_BROKEN=false - shift - ;; - --soname ) - SONAME="$2" - SEARCH_BROKEN=false - shift 2 - ;; - --soname-regexp=* ) - SONAME="${1#*=}" - SONAME_GREP=grep - SEARCH_BROKEN=false - shift - ;; - --soname-regexp ) - SONAME="$2" - SONAME_GREP=grep - SEARCH_BROKEN=false - shift 2 - ;; - -- ) - shift - break - ;; - * ) - break - ;; - esac -done - -function set_trap () { - trap "rm_temp $1" SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -} - -function rm_temp () { - echo " terminated." - echo "Removing incomplete $1." - rm $1 - echo - exit 1 -} - -if $SEARCH_BROKEN ; then - SONAME_SEARCH="$SONAME" - LLIST=$LIST - HEAD_TEXT="broken by any package update" - OK_TEXT="Dynamic linking on your system is consistent" - WORKING_TEXT=" consistency" -else - SONAME_SEARCH=" $SONAME " - LLIST=${LIST}_$(echo "$SONAME_SEARCH$SONAME" | md5sum | head -c 8) - HEAD_TEXT="using given shared object name" - OK_TEXT="There are no dynamic links to $SONAME" - WORKING_TEXT="" -fi - -echo -echo "Checking reverse dependencies..." -echo "Packages containing binaries and libraries $HEAD_TEXT," -echo "will be recompiled." - -echo -echo -n -e "${GR}Collecting system binaries and libraries...${NO}" -if [ -f $LIST.1_files ] ; then - echo " using existing $LIST.1_files." -else - set_trap "$LIST.1_files" - find $SEARCH_DIRS -type f \( -perm +u+x -o -name '*.so' -o -name '*.so.*' \) 2>/dev/null >$LIST.1_files - echo -e " done.\n ($LIST.1_files)" -fi - -if $SEARCH_BROKEN ; then - echo - echo -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" - if [ -f $LIST.2_ldpath ] ; then - echo " using existing $LIST.2_ldpath." - else - set_trap "$LIST.2_ldpath" - ( - grep '.*\.so\(\|\..*\)$' <$LIST.1_files | sed 's:/[^/]*$::' - sed '/^#/d;s/#.*$//' </etc/ld.so.conf - ) | uniq | sort | uniq | - tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath - echo -e " done.\n ($LIST.2_ldpath)" - fi - export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" -fi - -echo -echo -n -e "${GR}Checking dynamic linking$WORKING_TEXT...${NO}" -if [ -f $LLIST.3_rebuild ] ; then - echo " using existing $LLIST.3_rebuild." -else - echo_v - set_trap "$LLIST.3_rebuild" - LD_MASK="\\( $(echo "$LD_LIBRARY_MASK" | sed 's/\./\\./g;s/ / \\| /g') \\)" - echo -n >$LLIST.3_rebuild - cat $LIST.1_files | while read FILE ; do -# Note: double checking seems to be faster than single -# with complete path (special add ons are rare). - if ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - $SONAME_GREP -q "$SONAME_SEARCH" ; then - if $SEARCH_BROKEN ; then - if LD_LIBRARY_PATH="$COMPLETE_LD_LIBRARY_PATH" \ - ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - $SONAME_GREP -q "$SONAME_SEARCH" ; then - echo "$FILE" >>$LLIST.3_rebuild - echo_v " broken $FILE (requires $(ldd "$FILE" | sed -n 's/ \(.*\) => not found$/\1/p' | tr '\n' ' ' | sed 's/ $//' ))" - fi - else - echo "$FILE" >>$LLIST.3_rebuild - echo_v " found $FILE" - fi - fi - done - echo -e " done.\n ($LLIST.3_rebuild)" -fi - -if $PACKAGE_NAMES ; then - EXACT_EBUILDS=false - - echo - echo -n -e "${GR}Assigning files to packages...${NO}" - if [ -f $LLIST.4_packages_raw ] ; then - echo " using existing $LLIST.4_packages_raw." - else - set_trap "$LLIST.4_packages_raw" - echo -n >$LLIST.4_packages_raw - echo -n >$LLIST.4_package_owners - cat $LLIST.3_rebuild | while read FILE ; do - PKG="$(qpkg -nc -f "$FILE")" - if [ -z "$PKG" ] ; then - echo -n -e "\n ${RD}*** $FILE not owned by any package is broken! ***${NO}" - echo "$FILE -> (none)" >> $LLIST.4_package_owners - echo_v -n -e "\n $FILE -> (none)" - else - echo "$PKG" >> $LLIST.4_packages_raw - echo "$FILE -> $PKG" >> $LLIST.4_package_owners - echo_v -n -e "\n $FILE -> $PKG" - fi - done - echo_v - echo -e " done.\n ($LLIST.4_packages_raw, $LLIST.4_package_owners)" - fi - - echo - echo -n -e "${GR}Cleaning list of packages to rebuild...${NO}" - if [ -f $LLIST.5_packages ] ; then - echo " using existing $LLIST.5_packages." - else - set_trap "$LLIST.5_packages" - sort <$LLIST.4_packages_raw | uniq >$LLIST.5_packages - echo -e " done.\n ($LLIST.5_packages)" - fi - - RAW_REBUILD_LIST="$(cat $LLIST.5_packages | tr '\n' ' ')" - -else - EXACT_EBUILDS=true - - echo - echo -n -e "${GR}Assigning files to ebuilds...${NO}" - if [ -f $LLIST.4_ebuilds ] ; then - echo " using existing $LLIST.4_ebuilds." - else - set_trap "$LLIST.4_ebuilds" - cat $LLIST.3_rebuild | sed 's/^/obj /;s/$/ /' | - ( - cd /var/db/pkg - fgrep -l -f - */*/CONTENTS - ) | sed s:/CONTENTS:: > $LLIST.4_ebuilds - echo -e " done.\n ($LLIST.4_ebuilds)" - fi - - RAW_REBUILD_LIST="$(cat $LLIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" -fi - -echo -echo -n -e "${GR}Evaluating package order...${NO}" -if [ -f $LLIST.5_order ] ; then - echo " using existing $LLIST.5_order." -else - if [ ! -z "$RAW_REBUILD_LIST" ] ; then - REBUILD_GREP="^\\($(emerge --nospinner --pretend --oneshot --nodeps $RAW_REBUILD_LIST | sed -n 's/\./\\&/g;s/ //g;s/$/\\/;s/^.*\]//p' | tr '\n' '|' | sed 's/|$//'))\$" - emerge --nospinner --pretend --oneshot --emptytree $RAW_REBUILD_LIST | sed -n 's/ //g;s/^.*\]//p' | grep "$REBUILD_GREP" >$LLIST.5_order - else - echo -n "" >$LLIST.5_order - fi - echo -e " done.\n ($LLIST.5_order)" -fi - -REBUILD_LIST="$(cat $LLIST.5_order | sed s/^/=/ | tr '\n' ' ')" - -trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM - -if [ -z "$REBUILD_LIST" ] ; then - echo -e "\n${GR}$OK_TEXT... All done.${NO} " - rm $LIST.[1-2]_* - rm $LLIST.[3-9]_* - exit 0 -fi - -IS_REAL_MERGE=true -echo " $* " | grep -q '\( -p \| --pretend \)' && IS_REAL_MERGE=false - -echo -echo -e "${GR}All prepared. Starting rebuild...${NO}" -echo "emerge --oneshot --nodeps $@ $REBUILD_LIST" -if $IS_REAL_MERGE ; then - for i in . . . . . . . . . . ; do - echo -n -e '\a.' - sleep 1 - done - echo -fi - -#if $EXACT_EBUILDS ; then -# Uncomment following, if you want to recompile masked ebuilds. -## FIXME: Check for PORTDIR_OVERLAY -# echo -e "${GR}Temporarilly disablink package mask...${NO}" -# trap "mv -i /usr/portage/profiles/package.mask.hidden /usr/portage/profiles/package.mask ; echo -e "\\n\\nTerminated." ; exit 1" \ -# SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -# mv -i /usr/portage/profiles/package.mask /usr/portage/profiles/package.mask.hidden -#fi - -# Run in background to correctly handle Ctrl-C -( - emerge --oneshot --nodeps $@ $REBUILD_LIST - echo $? >$LLIST.6_status -) & -wait - -#if $EXACT_EBUILDS ; then -# mv -i /usr/portage/profiles/package.mask.hidden /usr/portage/profiles/package.mask -# trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -#fi - -if [ "$(cat $LLIST.6_status)" -gt 0 ] ; then - echo - echo -e "${RD}Result is not OK, you have following chances:${NO}" - echo "- if emerge failed during build, fix the problems and re-run revdep-rebuild" - echo " or" - echo "- use -X or --package-names as first argument (try to rebuild package, not exact" - echo " ebuild - ignores SLOT!)" - echo " or" - echo "- modify the above emerge command and run it manually" - echo " or" - echo "- compile or unmerge unsatisfied packages manually, remove temporary files and" - echo " try again (you can edit package/ebuild list first)" - echo - echo -e "${GR}To remove temporary files, please run:${NO}" - echo "rm $LIST*.?_*" -else - if $IS_REAL_MERGE ; then - trap "echo -e \" terminated. Please remove them manually:\nrm $LIST*.?_*\" ; exit 1" \ - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM - echo -n -e "${GR}Build finished correctly. Removing temporary files...${NO} " - for i in . . . . . . . . . . ; do - echo -n -e '.' - sleep 1 - done - echo - rm $LIST.[1-2]_* - rm $LLIST.[3-9]_* - echo "You can re-run revdep-rebuild to verify that all libraries and binaries" - echo "are fixed. If some inconsistency remains, it can be orphaned file, deep" - echo "dependency, binary package or specially evaluated library." - else - echo -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.${NO}" - fi -fi diff --git a/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 b/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 deleted file mode 100644 index c8b449498e1f..000000000000 --- a/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 +++ /dev/null @@ -1,369 +0,0 @@ -#! /bin/bash - -# Copyright 1999-2003 Gentoo Technologies, Inc. -# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/files/scripts/revdep-rebuild-2,v 1.1 2003/07/09 16:46:58 utx Exp $ - -# revdep-rebuild: Reverse dependency rebuilder. -# Author: Stanislav Brabec <utx@gentoo.org> - -# requires: qpkg - -# Known problems: -# -# In exact ebuild mode revdep-rebuild can fails to get order packages, -# which are not up to date. This is because emerge first tries to -# merge latest package and last in resort it tries to degrade. -# http://bugs.gentoo.org/show_bug.cgi?id=23018 -# -# Rebuild in --package-names mode should be default, but emerge has no -# feature to update to latest version of defined SLOT. -# http://bugs.gentoo.org/show_bug.cgi?id=4698 - -# Mask of specially evaluated libraries (exactly one space separated). -LD_LIBRARY_MASK="libodbcinst.so libodbc.so libjava.so libjvm.so" - -# List of directories to be searched (feel free to edit it) -# Note /usr/libexec and /usr/local/subprefix cotradicts FHS, but are present -# /var/something is for cgi and similar scripts -SEARCH_DIRS="/lib /bin /sbin /usr/lib /usr/bin /usr/sbin /usr/libexec /usr/X11R6/lib /usr/X11R6/bin /usr/X11R6/sbin /usr/e1* /usr/local /usr/qt* /usr/kde/*/lib /usr/*-*-linux-gnu /opt /var/qmail /var/vpopmail /home/httpd/cgi-bin" - -# Base of temporary files names. -LIST=~/.revdep-rebuild - -shopt -s nullglob -shopt -s expand_aliases -unalias -a - -NO="\x1b[0;0m" -BR="\x1b[0;01m" -CY="\x1b[36;01m" -GR="\x1b[32;01m" -RD="\x1b[31;01m" -YL="\x1b[33;01m" -BL="\x1b[34;01m" - -alias echo_v=echo - -PACKAGE_NAMES=false -SONAME="not found" -SONAME_GREP=fgrep -SEARCH_BROKEN=true - -while : ; do - case "$1" in - -h | --help ) - echo "Usage: $0 [OPTIONS] [--] [EMERGE_OPTIONS]" - echo - echo "Broken reverse dependency rebuilder." - echo - echo " -X, --package-names recompile based on package names, not exact versions" - echo " --soname SONAME recompile packages using library with SONAME instead" - echo " of broken library" - echo " --soname-regexp SONAME" - echo " the same as --soname, but accepts grep-style regexp" - echo " -q, --quiet be less verbose" - echo - echo "Calls emerge, all other options are used for it (e. g. -p, --pretend)." - echo - echo "Report bugs to <utx@gentoo.org>" - exit 0 - ;; - -X | --package-names ) - PACKAGE_NAMES=true - shift - ;; - -q | --quiet ) - alias echo_v=: - shift - ;; - --soname=* ) - SONAME="${1#*=}" - SEARCH_BROKEN=false - shift - ;; - --soname ) - SONAME="$2" - SEARCH_BROKEN=false - shift 2 - ;; - --soname-regexp=* ) - SONAME="${1#*=}" - SONAME_GREP=grep - SEARCH_BROKEN=false - shift - ;; - --soname-regexp ) - SONAME="$2" - SONAME_GREP=grep - SEARCH_BROKEN=false - shift 2 - ;; - -- ) - shift - break - ;; - * ) - break - ;; - esac -done - -function set_trap () { - trap "rm_temp $1" SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -} - -function rm_temp () { - echo " terminated." - echo "Removing incomplete $1." - rm $1 - echo - exit 1 -} - -if $SEARCH_BROKEN ; then - SONAME_SEARCH="$SONAME" - LLIST=$LIST - HEAD_TEXT="broken by any package update" - OK_TEXT="Dynamic linking on your system is consistent" - WORKING_TEXT=" consistency" -else - SONAME_SEARCH=" $SONAME " - LLIST=${LIST}_$(echo "$SONAME_SEARCH$SONAME" | md5sum | head -c 8) - HEAD_TEXT="using given shared object name" - OK_TEXT="There are no dynamic links to $SONAME" - WORKING_TEXT="" -fi - -echo -echo "Checking reverse dependencies..." -echo "Packages containing binaries and libraries $HEAD_TEXT," -echo "will be recompiled." - -echo -echo -n -e "${GR}Collecting system binaries and libraries...${NO}" -if [ -f $LIST.1_files ] ; then - echo " using existing $LIST.1_files." -else - set_trap "$LIST.1_files" - find $SEARCH_DIRS -type f \( -perm +u+x -o -name '*.so' -o -name '*.so.*' \) 2>/dev/null >$LIST.1_files - echo -e " done.\n ($LIST.1_files)" -fi - -if $SEARCH_BROKEN ; then - echo - echo -n -e "${GR}Collecting complete LD_LIBRARY_PATH...${NO}" - if [ -f $LIST.2_ldpath ] ; then - echo " using existing $LIST.2_ldpath." - else - set_trap "$LIST.2_ldpath" - ( - grep '.*\.so\(\|\..*\)$' <$LIST.1_files | sed 's:/[^/]*$::' - sed '/^#/d;s/#.*$//' </etc/ld.so.conf - ) | uniq | sort | uniq | - tr '\n' : | tr -d '\r' | sed 's/:$//' >$LIST.2_ldpath - echo -e " done.\n ($LIST.2_ldpath)" - fi - export COMPLETE_LD_LIBRARY_PATH="$(cat $LIST.2_ldpath)" -fi - -echo -echo -n -e "${GR}Checking dynamic linking$WORKING_TEXT...${NO}" -if [ -f $LLIST.3_rebuild ] ; then - echo " using existing $LLIST.3_rebuild." -else - echo_v - set_trap "$LLIST.3_rebuild" - LD_MASK="\\( $(echo "$LD_LIBRARY_MASK" | sed 's/\./\\./g;s/ / \\| /g') \\)" - echo -n >$LLIST.3_rebuild - cat $LIST.1_files | while read FILE ; do -# Note: double checking seems to be faster than single -# with complete path (special add ons are rare). - if ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - $SONAME_GREP -q "$SONAME_SEARCH" ; then - if $SEARCH_BROKEN ; then - if LD_LIBRARY_PATH="$COMPLETE_LD_LIBRARY_PATH" \ - ldd "$FILE" 2>/dev/null | grep -v "$LD_MASK" | - $SONAME_GREP -q "$SONAME_SEARCH" ; then - echo "$FILE" >>$LLIST.3_rebuild - echo_v " broken $FILE (requires $(ldd "$FILE" | sed -n 's/ \(.*\) => not found$/\1/p' | tr '\n' ' ' | sed 's/ $//' ))" - fi - else - echo "$FILE" >>$LLIST.3_rebuild - echo_v " found $FILE" - fi - fi - done - echo -e " done.\n ($LLIST.3_rebuild)" -fi - -if $PACKAGE_NAMES ; then - EXACT_EBUILDS=false - - echo - echo -n -e "${GR}Assigning files to packages...${NO}" - if [ -f $LLIST.4_packages_raw ] ; then - echo " using existing $LLIST.4_packages_raw." - else - set_trap "$LLIST.4_packages_raw" - echo -n >$LLIST.4_packages_raw - echo -n >$LLIST.4_package_owners - cat $LLIST.3_rebuild | while read FILE ; do - PKG="$(qpkg -nc -f "$FILE")" - if [ -z "$PKG" ] ; then - echo -n -e "\n ${RD}*** $FILE not owned by any package is broken! ***${NO}" - echo "$FILE -> (none)" >> $LLIST.4_package_owners - echo_v -n -e "\n $FILE -> (none)" - else - echo "$PKG" >> $LLIST.4_packages_raw - echo "$FILE -> $PKG" >> $LLIST.4_package_owners - echo_v -n -e "\n $FILE -> $PKG" - fi - done - echo_v - echo -e " done.\n ($LLIST.4_packages_raw, $LLIST.4_package_owners)" - fi - - echo - echo -n -e "${GR}Cleaning list of packages to rebuild...${NO}" - if [ -f $LLIST.5_packages ] ; then - echo " using existing $LLIST.5_packages." - else - set_trap "$LLIST.5_packages" - sort <$LLIST.4_packages_raw | uniq >$LLIST.5_packages - echo -e " done.\n ($LLIST.5_packages)" - fi - - RAW_REBUILD_LIST="$(cat $LLIST.5_packages | tr '\n' ' ')" - -else - EXACT_EBUILDS=true - - echo - echo -n -e "${GR}Assigning files to ebuilds...${NO}" - if [ -f $LLIST.4_ebuilds ] ; then - echo " using existing $LLIST.4_ebuilds." - else - set_trap "$LLIST.4_ebuilds" - cat $LLIST.3_rebuild | sed 's/^/obj /;s/$/ /' | - ( - cd /var/db/pkg - fgrep -l -f - */*/CONTENTS - ) | sed s:/CONTENTS:: > $LLIST.4_ebuilds - echo -e " done.\n ($LLIST.4_ebuilds)" - fi - - RAW_REBUILD_LIST="$(cat $LLIST.4_ebuilds | sed s/^/=/ | tr '\n' ' ')" -fi - -echo -echo -n -e "${GR}Evaluating package order...${NO}" -if [ -f $LLIST.5_order ] ; then - echo " using existing $LLIST.5_order." -else - if [ ! -z "$RAW_REBUILD_LIST" ] ; then - REBUILD_GREP="^\\($( (emerge --nospinner --pretend --oneshot --nodeps $RAW_REBUILD_LIST ; echo $? >$LLIST.5_status ) | sed -n 's/\./\\&/g;s/ //g;s/$/\\/;s/\[[^]]*\]//gp' | tr '\n' '|' | sed 's/|$//'))\$" - if [ $(cat $LLIST.5_status) -gt 0 ] ; then - echo "" - echo -e "${RD}Warning: Failed to resolve package order." - echo -e "Will merge in \"random\" order!${NO}" - echo "Possible reasons:" - echo "- Some ebuilds are no more in portage tree." - echo "- Some ebuilds are masked, try to change ACCEPT_KEYWORDS=\"~<your platform>\"" - echo " and/or use /etc/portage/package.unmask" - for i in . . . . . ; do - echo -n -e '\a.' - sleep 1 - done - ln -f $LLIST.4_ebuilds $LLIST.5_order - else - emerge --nospinner --pretend --oneshot --emptytree $RAW_REBUILD_LIST | sed -n 's/ //g;s/^.*\]//p' | grep "$REBUILD_GREP" >$LLIST.5_order - fi - else - echo -n "" >$LLIST.5_order - fi - echo -e " done.\n ($LLIST.5_order)" -fi - -REBUILD_LIST="$(cat $LLIST.5_order | sed s/^/=/ | tr '\n' ' ')" - -trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM - -if [ -z "$REBUILD_LIST" ] ; then - echo -e "\n${GR}$OK_TEXT... All done.${NO} " - rm $LIST.[1-2]_* - rm $LLIST.[3-9]_* - exit 0 -fi - -IS_REAL_MERGE=true -echo " $* " | grep -q '\( -p \| --pretend \)' && IS_REAL_MERGE=false - -echo -echo -e "${GR}All prepared. Starting rebuild...${NO}" -echo "emerge --oneshot --nodeps $@ $REBUILD_LIST" -if $IS_REAL_MERGE ; then - for i in . . . . . . . . . . ; do - echo -n -e '\a.' - sleep 1 - done - echo -fi - -#if $EXACT_EBUILDS ; then -# Uncomment following, if you want to recompile masked ebuilds. -## FIXME: Check for PORTDIR_OVERLAY -# echo -e "${GR}Temporarilly disablink package mask...${NO}" -# trap "mv -i /usr/portage/profiles/package.mask.hidden /usr/portage/profiles/package.mask ; echo -e "\\n\\nTerminated." ; exit 1" \ -# SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -# mv -i /usr/portage/profiles/package.mask /usr/portage/profiles/package.mask.hidden -#fi - -# Run in background to correctly handle Ctrl-C -( - emerge --oneshot --nodeps $@ $REBUILD_LIST - echo $? >$LLIST.6_status -) & -wait - -#if $EXACT_EBUILDS ; then -# mv -i /usr/portage/profiles/package.mask.hidden /usr/portage/profiles/package.mask -# trap - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM -#fi - -if [ "$(cat $LLIST.6_status)" -gt 0 ] ; then - echo - echo -e "${RD}Result is not OK, you have following chances:${NO}" - echo "- if emerge failed during build, fix the problems and re-run revdep-rebuild" - echo " or" - echo "- use -X or --package-names as first argument (try to rebuild package, not exact" - echo " ebuild - ignores SLOT!)" - echo " or" - echo "- set ACCEPT_KEYWORDS=\"~<your platform>\" and/or /etc/portage/package.unmask" - echo " (and remove $LLIST.5_order to be evaluated again)" - echo " or" - echo "- modify the above emerge command and run it manually" - echo " or" - echo "- compile or unmerge unsatisfied packages manually, remove temporary files and" - echo " try again (you can edit package/ebuild list first)" - echo - echo -e "${GR}To remove temporary files, please run:${NO}" - echo "rm $LIST*.?_*" -else - if $IS_REAL_MERGE ; then - trap "echo -e \" terminated. Please remove them manually:\nrm $LIST*.?_*\" ; exit 1" \ - SIGHUP SIGINT SIGQUIT SIGABRT SIGTERM - echo -n -e "${GR}Build finished correctly. Removing temporary files...${NO} " - for i in . . . . . . . . . . ; do - echo -n -e '.' - sleep 1 - done - echo - rm $LIST.[1-2]_* - rm $LLIST.[3-9]_* - echo "You can re-run revdep-rebuild to verify that all libraries and binaries" - echo "are fixed. If some inconsistency remains, it can be orphaned file, deep" - echo "dependency, binary package or specially evaluated library." - else - echo -e "${GR}Now you can remove -p (or --pretend) from arguments and re-run revdep-rebuild.${NO}" - fi -fi diff --git a/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild b/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild index 2179c4504437..978d09229d75 100644 --- a/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild +++ b/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild @@ -1,6 +1,6 @@ # Copyright 1999-2003 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild,v 1.3 2003/07/14 19:47:17 utx Exp $ +# $Header: /var/cvsroot/gentoo-x86/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild,v 1.4 2003/07/18 16:16:14 mholzer Exp $ DESCRIPTION="Collection of unofficial administration scripts for Gentoo" HOMEPAGE="http://www.gentoo.org/" @@ -38,8 +38,7 @@ src_install() { fowners root:wheel /usr/bin/dep-clean fperms 0750 /usr/bin/dep-clean - dobin ${FILESDIR}/scripts/revdep-rebuild-2 - mv ${D}${DESTTREE}/bin/revdep-rebuild-2 ${D}${DESTTREE}/bin/revdep-rebuild + dobin ${FILESDIR}/scripts/revdep-rebuild fperms 0750 /usr/bin/revdep-rebuild dobin ${FILESDIR}/scripts/etcat |