From c819d146be6bce86d97019494173253e71b85d2f Mon Sep 17 00:00:00 2001 From: fuzzyray Date: Tue, 5 May 2009 17:39:24 +0000 Subject: Rearrange trunk to support gentoolkit version 0.3. Split into gentoolkit, gentoolkit-dev, and deprecated. Import djanderson's work on the gentoolkit library and equery svn path=/trunk/gentoolkit/; revision=589 --- src/eclean/AUTHORS | 1 + src/eclean/ChangeLog | 27 ++ src/eclean/Makefile | 24 ++ src/eclean/THANKS | 7 + src/eclean/TODO | 16 + src/eclean/distfiles.exclude | 5 + src/eclean/eclean | 838 +++++++++++++++++++++++++++++++++++++++++++ src/eclean/eclean.1 | 176 +++++++++ src/eclean/packages.exclude | 4 + 9 files changed, 1098 insertions(+) create mode 100644 src/eclean/AUTHORS create mode 100644 src/eclean/ChangeLog create mode 100644 src/eclean/Makefile create mode 100644 src/eclean/THANKS create mode 100644 src/eclean/TODO create mode 100644 src/eclean/distfiles.exclude create mode 100644 src/eclean/eclean create mode 100644 src/eclean/eclean.1 create mode 100644 src/eclean/packages.exclude (limited to 'src/eclean') diff --git a/src/eclean/AUTHORS b/src/eclean/AUTHORS new file mode 100644 index 0000000..9263cbb --- /dev/null +++ b/src/eclean/AUTHORS @@ -0,0 +1 @@ +Thomas de Grenier de Latour (tgl) diff --git a/src/eclean/ChangeLog b/src/eclean/ChangeLog new file mode 100644 index 0000000..36d9a28 --- /dev/null +++ b/src/eclean/ChangeLog @@ -0,0 +1,27 @@ +2005-12-19 Paul Varner + * Add support for reqular expression matching for file names in the + exclude files. + +2005-08-28 Thomas de Grenier de Latour (tgl) + * Version 0.4.1 + * added support for some "eclean-dist" and "eclean-pkg" symlinks on eclean + (and thus refactored command-line parsing and help screen code) + * accept file names in exclude files for specific distfiles protection + (useful to protect the OOo i18n files for instance, which are not in + $SRC_URI but put there manually) + * minor rewrite of some findDistfiles() code + * added /usr/lib/portage/pym python path, just to be sure it comes first + (after all, "ouput" is a pretty generic name for a python module...) + * updated manpage + +2005-08-27 Thomas de Grenier de Latour (tgl) + * Version 0.4 + * added exclusion files support + * added time limit option + * added size limit option (for distfiles only) + * added fetch-restricted distfile optionnal protection + * added --package-names option for protection of all versions of installed + packages. + * removed support of multiple actions on command-line. That would have been + hell with action-specific options. + * updated manpage diff --git a/src/eclean/Makefile b/src/eclean/Makefile new file mode 100644 index 0000000..79c5895 --- /dev/null +++ b/src/eclean/Makefile @@ -0,0 +1,24 @@ +# Copyright 2004 Karl Trygve Kalleberg +# Copyright 2004 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# +# $Header$ + +include ../../makedefs.mak + +all: + +dist: + mkdir -p ../../$(distdir)/src/eclean + cp eclean eclean.1 Makefile *.exclude ../../$(distdir)/src/eclean + cp AUTHORS THANKS TODO ChangeLog ../../$(distdir)/src/eclean + +install: + install -m 0755 eclean $(bindir)/ + ln -sf eclean $(bindir)/eclean-pkg + ln -sf eclean $(bindir)/eclean-dist + install -d $(sysconfdir)/eclean + install -m 0644 distfiles.exclude packages.exclude $(sysconfdir)/eclean/ + install -d $(docdir)/eclean + install -m 0644 AUTHORS THANKS TODO ChangeLog $(docdir)/eclean/ + install -m 0644 eclean.1 $(mandir)/ diff --git a/src/eclean/THANKS b/src/eclean/THANKS new file mode 100644 index 0000000..6b8dc2e --- /dev/null +++ b/src/eclean/THANKS @@ -0,0 +1,7 @@ +The starting point ideas were found here: +http://forums.gentoo.org/viewtopic.php?t=3011 + +Thanks to eswanson and far for their contributions, and to wolf31o2 for his +support. Thanks also to karltk, some of this code was at some point inspired +by his "equery" tool. And thanks to people who had a look on bug #33877: +Benjamin Braatz, fuzzyray, genone, etc. diff --git a/src/eclean/TODO b/src/eclean/TODO new file mode 100644 index 0000000..04e64ca --- /dev/null +++ b/src/eclean/TODO @@ -0,0 +1,16 @@ +- exclusion file syntax could be improved (maybe it should support real + dep-atoms, or wildcards, etc.) + +- some policy to keep the X latest versions of a package (in each of its + SLOT maybe) would be really cool... + +- add an option to protect system binary packages + => yup, but later... (needs some portage modifications to be done right) + +- add actions for PORT_LOGDIR and/or /var/tmp/portage cleaning? + => bah, don't know... imho tmpreaper or find+rm onliners are enough here + +- cleanup of DISTDIR/cvs-src when action=distfiles + => i never use cvs ebuilds, i should check what it does exactly + +- rewrite for a decent Portage API if there ever is one diff --git a/src/eclean/distfiles.exclude b/src/eclean/distfiles.exclude new file mode 100644 index 0000000..a31be55 --- /dev/null +++ b/src/eclean/distfiles.exclude @@ -0,0 +1,5 @@ +# /etc/eclean/distfiles.exclude +# In this file you can list some categories or cat/pkg-name for which you want +# to protect distfiles from "ecleaning". You can also name some specific files. +# See `man eclean` for syntax details. +metadata.dtd diff --git a/src/eclean/eclean b/src/eclean/eclean new file mode 100644 index 0000000..55cc2a7 --- /dev/null +++ b/src/eclean/eclean @@ -0,0 +1,838 @@ +#!/usr/bin/python +# Copyright 2003-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +from __future__ import with_statement + +############################################################################### +# Meta: +__author__ = "Thomas de Grenier de Latour (tgl)" +__email__ = "degrenier@easyconnect.fr" +__version__ = "0.4.1" +__productname__ = "eclean" +__description__ = "A cleaning tool for Gentoo distfiles and binaries." + + +############################################################################### +# Python imports: + +import sys +import os, stat +import re +import time +import getopt +import fpformat +import signal +try: + import portage +except ImportError: + sys.path.insert(0, "/usr/lib/portage/pym") + import portage +try: + from portage.output import * +except ImportError: + from output import * + +listdir = portage.listdir + +############################################################################### +# Misc. shortcuts to some portage stuff: +port_settings = portage.settings +distdir = port_settings["DISTDIR"] +pkgdir = port_settings["PKGDIR"] + +############################################################################### +# printVersion: +def printVersion(): + print "%s (version %s) - %s" \ + % (__productname__, __version__, __description__) + print "Author: %s <%s>" % (__author__,__email__) + print "Copyright 2003-2005 Gentoo Foundation" + print "Distributed under the terms of the GNU General Public License v2" + + +############################################################################### +# printUsage: print help message. May also print partial help to stderr if an +# error from {'options','actions'} is specified. +def printUsage(error=None,help=None): + out = sys.stdout + if error: out = sys.stderr + if not error in ('actions', 'global-options', \ + 'packages-options', 'distfiles-options', \ + 'merged-packages-options', 'merged-distfiles-options', \ + 'time', 'size'): + error = None + if not error and not help: help = 'all' + if error == 'time': + eerror("Wrong time specification") + print >>out, "Time specification should be an integer followed by a"+ \ + " single letter unit." + print >>out, "Available units are: y (years), m (months), w (weeks), "+ \ + "d (days) and h (hours)." + print >>out, "For instance: \"1y\" is \"one year\", \"2w\" is \"two"+ \ + " weeks\", etc. " + return + if error == 'size': + eerror("Wrong size specification") + print >>out, "Size specification should be an integer followed by a"+ \ + " single letter unit." + print >>out, "Available units are: G, M, K and B." + print >>out, "For instance: \"10M\" is \"ten megabytes\", \"200K\" "+ \ + "is \"two hundreds kilobytes\", etc." + return + if error in ('global-options', 'packages-options', 'distfiles-options', \ + 'merged-packages-options', 'merged-distfiles-options',): + eerror("Wrong option on command line.") + print >>out + elif error == 'actions': + eerror("Wrong or missing action name on command line.") + print >>out + print >>out, white("Usage:") + if error in ('actions','global-options', 'packages-options', \ + 'distfiles-options') or help == 'all': + print >>out, " "+turquoise(__productname__), \ + yellow("[global-option] ..."), \ + green(""), \ + yellow("[action-option] ...") + if error == 'merged-distfiles-options' or help in ('all','distfiles'): + print >>out, " "+turquoise(__productname__+'-dist'), \ + yellow("[global-option, distfiles-option] ...") + if error == 'merged-packages-options' or help in ('all','packages'): + print >>out, " "+turquoise(__productname__+'-pkg'), \ + yellow("[global-option, packages-option] ...") + if error in ('global-options', 'actions'): + print >>out, " "+turquoise(__productname__), \ + yellow("[--help, --version]") + if help == 'all': + print >>out, " "+turquoise(__productname__+"(-dist,-pkg)"), \ + yellow("[--help, --version]") + if error == 'merged-packages-options' or help == 'packages': + print >>out, " "+turquoise(__productname__+'-pkg'), \ + yellow("[--help, --version]") + if error == 'merged-distfiles-options' or help == 'distfiles': + print >>out, " "+turquoise(__productname__+'-dist'), \ + yellow("[--help, --version]") + print >>out + if error in ('global-options', 'merged-packages-options', \ + 'merged-distfiles-options') or help: + print >>out, "Available global", yellow("options")+":" + print >>out, yellow(" -C, --nocolor")+ \ + " - turn off colors on output" + print >>out, yellow(" -d, --destructive")+ \ + " - only keep the minimum for a reinstallation" + print >>out, yellow(" -e, --exclude-file=")+ \ + " - path to the exclusion file" + print >>out, yellow(" -i, --interactive")+ \ + " - ask confirmation before deletions" + print >>out, yellow(" -n, --package-names")+ \ + " - protect all versions (when --destructive)" + print >>out, yellow(" -p, --pretend")+ \ + " - only display what would be cleaned" + print >>out, yellow(" -q, --quiet")+ \ + " - be as quiet as possible" + print >>out, yellow(" -t, --time-limit=