diff options
author | Stanislav Brabec <utx@gentoo.org> | 2003-07-09 16:47:10 +0000 |
---|---|---|
committer | Stanislav Brabec <utx@gentoo.org> | 2003-07-09 16:47:10 +0000 |
commit | d57043a7cc9e7207fa70c59c348aee88fe8ca748 (patch) | |
tree | d0291b5757f8d51592a0d6a163661e7afb3a506a /app-admin | |
parent | dep cleanup (diff) | |
download | historical-d57043a7cc9e7207fa70c59c348aee88fe8ca748.tar.gz historical-d57043a7cc9e7207fa70c59c348aee88fe8ca748.tar.bz2 historical-d57043a7cc9e7207fa70c59c348aee88fe8ca748.zip |
revdep-rebuild: help text fixes and package order evaluation fixes
Diffstat (limited to 'app-admin')
-rw-r--r-- | app-admin/gentoolkit/Manifest | 6 | ||||
-rw-r--r-- | app-admin/gentoolkit/files/digest-gentoolkit-0.1.30 | 0 | ||||
-rw-r--r-- | app-admin/gentoolkit/files/scripts/revdep-rebuild-2 | 369 | ||||
-rw-r--r-- | app-admin/gentoolkit/gentoolkit-0.1.30.ebuild | 87 |
4 files changed, 459 insertions, 3 deletions
diff --git a/app-admin/gentoolkit/Manifest b/app-admin/gentoolkit/Manifest index 6f14968fa58a..c76d85cb55b6 100644 --- a/app-admin/gentoolkit/Manifest +++ b/app-admin/gentoolkit/Manifest @@ -1,5 +1,5 @@ -MD5 8c53e23114a9a52ec64be3ba99827c3e gentoolkit-0.1.30.ebuild 2808 -MD5 a11aebf8bdefa1f4139af63c934b5cc0 ChangeLog 19290 +MD5 31f7857dd17f72689e70bfabc3c8c4aa gentoolkit-0.1.30.ebuild 2808 +MD5 2588e9e8abc6a4ecfa4d2591617e3f69 ChangeLog 19290 MD5 2342f8711f0a4ecb063556c25fde9add metadata.xml 605 MD5 6982901224029f461c9c155f5620e084 gentoolkit-0.1.28.ebuild 2727 MD5 df6bcbacbdaf9e7ecb72677b98d91fae gentoolkit-0.1.29.ebuild 2808 @@ -18,7 +18,7 @@ MD5 66c792cf569cddd351bcccedd69d659f files/scripts/echangelog 6106 MD5 990536b35649142ebeddebd3f411efee files/scripts/ChangeLog 2215 MD5 ae1ecff118b5583eac443b6afbccb0fd files/scripts/dep-clean.1 5645 MD5 08871c6fedbd9385ef8a55e1f72f3a14 files/scripts/ekeyword 917 -MD5 e18962f2953c0a78c4aba5c405f7a453 files/scripts/revdep-rebuild-2 11302 +MD5 49d23a87d7fbdf8ca1b2f78a0d6f188c files/scripts/revdep-rebuild-2 11304 MD5 907aec00ccefd07a5801e35f135ed83f files/scripts/echangelog.1 9275 MD5 63305561ae679ea9ae5db64252c0b296 files/scripts/echangelog.pod 5055 MD5 54e3eb30d548e0e816163b2e899877be files/scripts/etcat 33700 diff --git a/app-admin/gentoolkit/files/digest-gentoolkit-0.1.30 b/app-admin/gentoolkit/files/digest-gentoolkit-0.1.30 new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/app-admin/gentoolkit/files/digest-gentoolkit-0.1.30 diff --git a/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 b/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 new file mode 100644 index 000000000000..c8b449498e1f --- /dev/null +++ b/app-admin/gentoolkit/files/scripts/revdep-rebuild-2 @@ -0,0 +1,369 @@ +#! /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 new file mode 100644 index 000000000000..08b7df939117 --- /dev/null +++ b/app-admin/gentoolkit/gentoolkit-0.1.30.ebuild @@ -0,0 +1,87 @@ +# 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.1 2003/07/09 16:46:58 utx Exp $ + +DESCRIPTION="Collection of unofficial administration scripts for Gentoo" +HOMEPAGE="http://www.gentoo.org/" +SRC_URI="" + +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~mips ~hppa ~arm" + +DEPEND=">=dev-lang/python-2.0 + >=dev-util/dialog-0.7 + >=dev-lang/perl-5.6 + >=sys-apps/grep-2.5-r1" + +src_install() { + dodir /usr/share/gentoolkit + + insinto /usr/share/gentoolkit + doins ${FILESDIR}/portage-statistics/histogram.awk + + dobin ${FILESDIR}/gentool/gentool-bump-revision + dobin ${FILESDIR}/gentool/gentool-total-coverage + dobin ${FILESDIR}/gentool/gentool-author-coverage + dobin ${FILESDIR}/gentool/gentool-package-count + docinto gentool + dodoc ${FILESDIR}/gentool/ChangeLog + + dobin ${FILESDIR}/scripts/qpkg + doman ${FILESDIR}/scripts/qpkg.1 + fowners root:wheel /usr/bin/qpkg + fperms 0750 /usr/bin/qpkg + + dobin ${FILESDIR}/scripts/dep-clean + doman ${FILESDIR}/scripts/dep-clean.1 + 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-1 ${D}${DESTTREE}/bin/revdep-rebuild + fperms 0750 /usr/bin/revdep-rebuild + + dobin ${FILESDIR}/scripts/etcat + doman ${FILESDIR}/scripts/etcat.1 + + dobin ${FILESDIR}/scripts/pkg-size +# 2002-08-06: karltk +# This utility currently does more harm than good. I'm not including it +# until it has been fixed properly. See #5777 in particular. +# dobin ${FILESDIR}/scripts/useflag +# doman ${FILESDIR}/scripts/useflag.1 + + dobin ${FILESDIR}/euse/euse + doman ${FILESDIR}/euse/euse.1 + docinto euse + dodoc ${FILESDIR}/euse/{ChangeLog,README} + + dosbin ${FILESDIR}/scripts/pkg-clean + dosbin ${FILESDIR}/scripts/mkebuild + +# dobin ${FILESDIR}/lintool/lintool +# doman ${FILESDIR}/lintool/lintool.1 +# docinto lintool +# dodoc ${FILESDIR}/lintool/{checklist-for-ebuilds,ChangeLog} + + dobin ${FILESDIR}/scripts/echangelog + doman ${FILESDIR}/scripts/echangelog.1 + dobin ${FILESDIR}/scripts/ekeyword +} + +pkg_postinst() { + ewarn "The 'useflag' utility has been removed, pending an overhaul. It has proven to be too brittle to be used safely." + einfo "" + einfo "since epm is now it's own package please emerge it yourself sys-apps/epm" + einfo "" + einfo "if you are upgrading from gentoolkit-0.1.17-r7 or earlier and" + einfo "you're using mkebuild, please remove ~/.mkebuild to update your settings" + einfo "" + einfo "dep-clean has been re-incarnated at the request of dragon. The new version" + einfo "is much faster and better than the old one, and is included herein" + einfo "" + einfo "emerge-webrsync is now in sys-apps/portage (2.0.47+) included" + einfo "" + +} |