+2003-06-26 Karl Trygve Kalleberg <karltk@gentoo.org>
+ * Added echangelog, by agenkin
+ * Added ekeyword, by agenkin
+ * Added gentoolkit, the common python library for all Gentoolkit
+ tools.
+ * Revived pkg-size as a testbed for the gentoolkit library
+ * Fixed some minor issues in qpkg
+ * Added revdep-rebuild-1
+ * Added revdep-rebuild-2
+ * Restructuring etcat
+ * Fixed some minor issues in dep-clean
+
2002-11-21 Karl Trygve Kalleberg <karltk@gentoo.org>
* Renamed pkg-size to gentool-package-size
* Renamed pst-package-count to gentool-package-count
-
+- merge dep-clean and pkg-clean, use portage
+- rewrite ekeywords and echangelog to use portage
+- extract helper code from etcat
+- rewrite qpkg to use portage
+- rewrite epm to use portage
+- merge emerge-rsync and emerge-webrsync
+- drop pkg-size (callfwd to etcat size)
+- merge change and echangelog
+- merge useflag and euse
+- rewrite revdep-rebuild to use portage
+- rewrite distfiles-clean to use portage
+- rewrite etc-update to use portage, add UI
+- add genlop
-#!/bin/bash
+#! /bin/bash
#Shows unrequired packages and missing dependencies.
#Author/Maintainer: Brandon Low <lostlogic@gentoo.org>
#Author: Jerry Haltom <ssrit@larvalstage.net>
--- /dev/null
+Aron Griffis <agriffis@gentoo.org>
--- /dev/null
+Package : echangelog
+Version : 0.1.0
+Author : See AUTHORS
+
+MOTIVATION
+
+Update the ChangeLog for an ebuild.
+
+MECHANICS
+
+N/A
+
+IMPROVEMENTS
+
+- Should rewrite to Python, and use Portage directly to select candidate
+ ebuild catalogs.
+- Should check the well-formedness of the current ChangeLog.
+
+For improvements, send a mail to agriffis@gentoo.org or make out a bug at
+bugs.gentoo.org.
--- /dev/null
+#!/usr/bin/perl -w
+#
+# echangelog: Update the ChangeLog for an ebuild. For example:
+#
+# $ echangelog 'Add ~alpha to KEYWORDS'
+# 4a5,7
+# > 10 Feb 2003; Aron Griffis <agriffis@gentoo.org> oaf-0.6.8-r1.ebuild :
+# > Add ~alpha to KEYWORDS
+# >
+
+use strict;
+use POSIX qw(strftime getcwd setlocale);
+
+# Fix bug 21022 by restricting to C locale
+setlocale(&POSIX::LC_ALL, "C");
+
+use Text::Wrap;
+$Text::Wrap::columns = 79;
+$Text::Wrap::unexpand = 0;
+
+my @files = ();
+my ($input, $entry, $user, $date, $text, $version);
+my %versions = ();
+
+# Read the current ChangeLog
+if (-f 'ChangeLog') {
+ open I, '<ChangeLog' or die "Can't open ChangeLog for input: $!\n";
+ { local $/ = undef; $text = <I>; }
+ close I;
+} else {
+ # No ChangeLog here, maybe we should make one...
+ if (<*.ebuild>) {
+ open I, '<../../skel.ChangeLog'
+ or die "Can't open ../../skel.ChangeLog for input: $!\n";
+ { local $/ = undef; $text = <I>; }
+ close I;
+ my ($cwd) = getcwd();
+ $cwd =~ m|.*/(\w+-\w+)/([^/]+)|
+ or die "Can't figure out category/package.. sorry!\n";
+ my ($category, $package_name) = ($1, $2);
+ $text =~ s/^\*.*//ms; # don't need the fake entry
+ $text =~ s/<CATEGORY>/$category/;
+ $text =~ s/<PACKAGE_NAME>/$package_name/;
+ # Okay, now we have a starter ChangeLog to work with.
+ # The entry will be added just like with any other ChangeLog.
+ } else {
+ die "This should be run in a directory with ebuilds...\n";
+ }
+}
+
+# Figure out what has changed around here
+open C, 'cvs diff --brief 2>&1 |' or die "Can't run cvs diff: $!\n";
+while (<C>) {
+ /ChangeLog/ and next;
+ if (/^cvs.*?: (([^\/]*?)\.ebuild) was removed/) {
+ push @files, $1;
+ $versions{$2} = 0; # existing ebuild that was removed
+ }
+ elsif (/^cvs.*?: (\S+) was removed/) {
+ push @files, $1;
+ # existing file that has been removed
+ }
+ elsif (/^Index: (([^\/]*?)\.ebuild)\s*$/) {
+ push @files, $1;
+ $versions{$2} = 0; # existing ebuild that has changed
+ }
+ elsif (/^Index: (\S+)/) {
+ push @files, $1;
+ # existing file, but not an ebuild, so no %version entry
+ }
+ elsif (/^cvs.*?: (([^\/]*?)\.ebuild) is a new entry/) {
+ push @files, $1;
+ $versions{$2} = -1; # new ebuild, will create a new entry
+ }
+ elsif (/^cvs.*?: (\S+) is a new entry/) {
+ push @files, $1;
+ # new file, but not an ebuild, so no %version entry
+ }
+ # other cvs output is ignored
+}
+close C;
+die "No changed files found (did you forget to cvs add?)\n" unless @files;
+
+# Get the input from the cmdline or stdin
+if ($ARGV[0]) {
+ $input = "@ARGV";
+} else {
+ local $/ = undef;
+ print "Please type the log entry, finish with ctrl-d\n";
+ $input = <>;
+}
+die "Empty entry; aborting\n" unless $input =~ /\S/;
+
+# If there are any long lines, then wrap the input at $columns chars
+# (leaving 2 chars on each end after adding indentation below).
+$input =~ s/^\s*(.*?)\s*\z/$1/s; # trim whitespace
+$input = Text::Wrap::fill('', '', $input) if ($input =~ /^.{80}/m);
+$input =~ s/^/ /gm; # add indentation
+
+# Prepend the user info to the input
+$user = $ENV{'ECHANGELOG_USER'} ||
+ sprintf("%s <%s\@gentoo.org>", (getpwuid($<))[6,0]);
+# Make sure that we didn't get "root"
+die "Please set ECHANGELOG_USER or run as non-root\n" if $user =~ / root@/;
+$date = strftime("%d %b %Y", localtime);
+$entry = "$date; $user ";
+$entry .= join ', ', grep !/files.digest|Manifest/, @files; # don't list digests
+$entry .= ':';
+$entry = Text::Wrap::fill(' ', ' ', $entry); # does not append a \n
+$entry .= "\n$input"; # append user input
+
+# Find the version that's highest in the file (or determine if we're
+# adding a new version). Note that existing ebuilds have version=0,
+# new ebuilds have version=-1 to make them automatically rise to the
+# top.
+if (%versions) {
+ for (keys %versions) {
+ $versions{$_} = index $text, $_ unless $versions{$_};
+ }
+ $version = (sort { $versions{$a} <=> $versions{$b} } keys %versions)[0];
+}
+
+# Each one of these regular expressions will eat the whitespace
+# leading up to the next entry (except the two-space leader on the
+# front of a dated entry), so it needs to be replaced with a
+# double carriage-return. This helps to normalize the spacing in
+# the ChangeLogs.
+#
+# NOTE: The first two branches here are disabled via '&& 0'
+# because they use the new but unsanctioned ChangeLog format.
+if (0 && !defined $version) { # <--- NOTE disabled via '0'
+ # Changing a patch or something, not an ebuild, so put the entry
+ # after the first *version line (really guessing)
+ $text =~ s/^( \*.*? ) # find the *version line
+ \s*\n(?=\ \ \d|\*|\z) # suck up trailing whitespace
+ /$1\n\n$entry\n\n/mx
+ or die "Failed to insert new entry (1)\n";
+} elsif (0 && $versions{$version} > -1) { # <--- NOTE disabled via '0'
+ # Insert after the *version line
+ $text =~ s/^( \*\Q$version\E ) # find the *version line = $1
+ (?:\.|\.ebuild)? # some poorly formed entries
+ \s+ ( \(.*\) ) # (date) = $2
+ \s*\n(?=\ \ \d|\*|\z) # suck up trailing whitespace
+ /$1 $2\n\n$entry\n\n/mx
+ or die "Failed to insert new entry (2)\n";
+} elsif (!defined $version || $versions{$version} > -1) {
+ # Changing an existing patch or ebuild, no new version marker
+ # required
+ $text =~ s/^( .*? ) # grab header
+ \s*\n(?=\ \ \d|\*|\z) # suck up trailing whitespace
+ /$1\n\n$entry\n\n/sx
+ or die "Failed to insert new entry (3)\n";
+} else {
+ # Insert at the top with a new version marker
+ $text =~ s/^( .*? ) # grab header
+ \s*\n(?=\ \ \d|\*|\z) # suck up trailing whitespace
+ /$1\n\n*$version ($date)\n\n$entry\n\n/sx
+ or die "Failed to insert new entry (4)\n";
+}
+
+# Write the new ChangeLog
+open O, '>ChangeLog.new' or die "Can't open ChangeLog.new for output: $!\n";
+print O $text or die "Can't write ChangeLog.new: $!\n";
+close O or die "Can't close ChangeLog.new: $!\n";
+
+# Move things around
+system 'diff -Nu ChangeLog ChangeLog.new';
+rename 'ChangeLog.new', 'ChangeLog' or die "Can't rename: $!\n";
--- /dev/null
+.\" Automatically generated by Pod::Man v1.34, Pod::Parser v1.13
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sh \" Subsection heading
+.br
+.if t .Sp
+.ne 5
+.PP
+\fB\\$1\fR
+.PP
+..
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" Set up some character translations and predefined strings. \*(-- will
+.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
+.\" double quote, and \*(R" will give a right double quote. | will give a
+.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
+.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
+.\" expand to `' in nroff, nothing in troff, for use with C<>.
+.tr \(*W-|\(bv\*(Tr
+.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.ie n \{\
+. ds -- \(*W-
+. ds PI pi
+. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
+. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
+. ds L" ""
+. ds R" ""
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds -- \|\(em\|
+. ds PI \(*p
+. ds L" ``
+. ds R" ''
+'br\}
+.\"
+.\" If the F register is turned on, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. nr % 0
+. rr F
+.\}
+.\"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.hy 0
+.if n .na
+.\"
+.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
+.\" Fear. Run. Save yourself. No user-serviceable parts.
+. \" fudge factors for nroff and troff
+.if n \{\
+. ds #H 0
+. ds #V .8m
+. ds #F .3m
+. ds #[ \f1
+. ds #] \fP
+.\}
+.if t \{\
+. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
+. ds #V .6m
+. ds #F 0
+. ds #[ \&
+. ds #] \&
+.\}
+. \" simple accents for nroff and troff
+.if n \{\
+. ds ' \&
+. ds ` \&
+. ds ^ \&
+. ds , \&
+. ds ~ ~
+. ds /
+.\}
+.if t \{\
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
+. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
+. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
+. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
+. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
+.\}
+. \" troff and (daisy-wheel) nroff accents
+.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
+.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
+.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
+.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
+.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
+.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
+.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
+.ds ae a\h'-(\w'a'u*4/10)'e
+.ds Ae A\h'-(\w'A'u*4/10)'E
+. \" corrections for vroff
+.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
+.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
+. \" for low resolution devices (crt and lpr)
+.if \n(.H>23 .if \n(.V>19 \
+\{\
+. ds : e
+. ds 8 ss
+. ds o a
+. ds d- d\h'-1'\(ga
+. ds D- D\h'-1'\(hy
+. ds th \o'bp'
+. ds Th \o'LP'
+. ds ae ae
+. ds Ae AE
+.\}
+.rm #[ #] #H #V #F C
+.\" ========================================================================
+.\"
+.IX Title "ECHANGELOG 1"
+.TH ECHANGELOG 1 "2003-04-27" "perl v5.8.0" "User Contributed Perl Documentation"
+.SH "NAME"
+echangelog \- update portage ChangeLogs
+.SH "SYNOPSIS"
+.IX Header "SYNOPSIS"
+echangelog [ \fItext\fR ]
+.SH "DESCRIPTION"
+.IX Header "DESCRIPTION"
+This tool provides an easy way to create or update portage ChangeLogs
+in Gentoo. The tool scans the current directory, which is assumed to
+be a package directory such as /usr/portage/app\-editors/vim, finds
+what files have been changed or added, and inserts the appropriate
+entry to ChangeLog. If \fItext\fR is not provided on the command\-line,
+echangelog prompts for it.
+.PP
+All modifications should occur before running echangelog so that it
+can include the appropriate file information in the ChangeLog entry.
+For example, you should run \*(L"cvs add\*(R" on your files, otherwise
+echangelog won't know those files are part of the update.
+.PP
+If your text would cause the ChangeLog entry to exceed 80 columns, it
+will be rewrapped to keep the ChangeLog neat. If you need special
+formatting in the ChangeLog, then you can either (1) run echangelog
+with no text on the command\-line, and make sure that your text won't
+be too wide, (2) edit the ChangeLog manually. If you prefer (2), I'd
+recommend something like \*(L"echangelog blah\*(R" so that the header lines
+are computed correctly, then edit and change \*(L"blah\*(R" to your preferred
+text.
+.SH "OPTIONS"
+.IX Header "OPTIONS"
+Presently echangelog is simple enough that it supplies no options.
+Probably I'll add \fB\-\-help\fR and \fB\-\-version\fR in the future, but for
+now it's enough to track the gentoolkit version.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+To create a ChangeLog for a completely new package. The header is
+parsed from skel.ebuild.
+.PP
+.Vb 2
+\& $ cvs add metalog-0.1.ebuild
+\& cvs server: use 'cvs commit' to add this file permanently
+.Ve
+.PP
+.Vb 13
+\& $ echangelog 'New ebuild, thanks to Harvey McGillicuddy'
+\& --- ChangeLog 1969-12-31 19:00:00.000000000 -0500
+\& +++ ChangeLog.new 2003-02-23 14:04:06.000000000 -0500
+\& @@ -0,0 +1,9 @@
+\& +# ChangeLog for app-admin/metalog
+\& +# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+\& +# $Header$
+\& +
+\& +*metalog-0.1 (23 Feb 2003)
+\& +
+\& + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+\& + New ebuild, thanks to Harvey McGillicuddy
+\& +
+.Ve
+.PP
+To bump a revision. Note you need to \*(L"cvs add\*(R" so that echangelog
+will notice the new file.
+.PP
+.Vb 2
+\& $ cvs add metalog-0.1-r1.ebuild
+\& cvs server: use 'cvs commit' to add this file permanently
+.Ve
+.PP
+.Vb 6
+\& $ echangelog 'Bump revision to fix bug #999'
+\& --- ChangeLog 2003-02-23 14:04:06.000000000 -0500
+\& +++ ChangeLog.new 2003-02-23 14:07:48.000000000 -0500
+\& @@ -2,6 +2,11 @@
+\& # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+\& # $Header$
+.Ve
+.PP
+.Vb 6
+\& +*metalog-0.1-r1 (23 Feb 2003)
+\& +
+\& + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1-r1.ebuild :
+\& + Bump revision to fix bug #999
+\& +
+\& *metalog-0.1 (23 Feb 2003)
+.Ve
+.PP
+.Vb 1
+\& 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+.Ve
+.PP
+For a multi-line entry, omit the command-line arg.
+.PP
+.Vb 10
+\& $ echangelog
+\& Please type the log entry, finish with ctrl-d
+\& Bump revision to fix bug #999. Necessary to bump the revision because
+\& the problem appears at run-time, not compile-time. This should also
+\& give users the updated default configuration file.
+\& --- ChangeLog 2003-02-23 14:09:12.000000000 -0500
+\& +++ ChangeLog.new 2003-02-23 14:12:43.000000000 -0500
+\& @@ -2,6 +2,13 @@
+\& # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+\& # $Header$
+.Ve
+.PP
+.Vb 8
+\& +*metalog-0.1-r1 (23 Feb 2003)
+\& +
+\& + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1-r1.ebuild :
+\& + Bump revision to fix bug #999. Necessary to bump the revision because
+\& + the problem appears at run-time, not compile-time. This should also
+\& + give users the updated default configuration file.
+\& +
+\& *metalog-0.1 (23 Feb 2003)
+.Ve
+.PP
+.Vb 1
+\& 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+.Ve
+.SH "ENVIRONMENT VARIABLES"
+.IX Header "ENVIRONMENT VARIABLES"
+.IP "\s-1ECHANGELOG_USER\s0" 4
+.IX Item "ECHANGELOG_USER"
+If echangelog can't figure out your username for the entry, you should
+set \s-1ECHANGELOG_USER\s0. For example, export ECHANGELOG_USER=\*(L"Aron
+Griffis <agriffis@gentoo.org>\*(R"
+.SH "NOTES"
+.IX Header "NOTES"
+As of the most recent version of echangelog (when this man-page
+appeared), echangelog puts all new entries at the top of the file
+instead of finding the appropriate *version line within the file.
+This is because that \*(L"new\*(R" ChangeLog format was never agreed upon by
+the Gentoo developers. Unfortunately the existence of both formats
+will undoubtedly cause much confusion.
+.PP
+This also means that the examples above are wrong, since I just copied
+them from some old email. However they're not much wrong. ;\-)
+.PP
+This tool was written by Aron Griffis <agriffis@gentoo.org>. Bugs
+found should be filed against me at http://bugs.gentoo.org/
--- /dev/null
+=head1 NAME
+
+echangelog - update portage ChangeLogs
+
+=head1 SYNOPSIS
+
+echangelog [ I<text> ]
+
+=head1 DESCRIPTION
+
+This tool provides an easy way to create or update portage ChangeLogs
+in Gentoo. The tool scans the current directory, which is assumed to
+be a package directory such as /usr/portage/app-editors/vim, finds
+what files have been changed or added, and inserts the appropriate
+entry to ChangeLog. If I<text> is not provided on the command-line,
+echangelog prompts for it.
+
+All modifications should occur before running echangelog so that it
+can include the appropriate file information in the ChangeLog entry.
+For example, you should run "cvs add" on your files, otherwise
+echangelog won't know those files are part of the update.
+
+If your text would cause the ChangeLog entry to exceed 80 columns, it
+will be rewrapped to keep the ChangeLog neat. If you need special
+formatting in the ChangeLog, then you can either (1) run echangelog
+with no text on the command-line, and make sure that your text won't
+be too wide, (2) edit the ChangeLog manually. If you prefer (2), I'd
+recommend something like "echangelog blah" so that the header lines
+are computed correctly, then edit and change "blah" to your preferred
+text.
+
+=head1 OPTIONS
+
+Presently echangelog is simple enough that it supplies no options.
+Probably I'll add B<--help> and B<--version> in the future, but for
+now it's enough to track the gentoolkit version.
+
+=head1 EXAMPLES
+
+To create a ChangeLog for a completely new package. The header is
+parsed from skel.ebuild.
+
+ $ cvs add metalog-0.1.ebuild
+ cvs server: use 'cvs commit' to add this file permanently
+
+ $ echangelog 'New ebuild, thanks to Harvey McGillicuddy'
+ --- ChangeLog 1969-12-31 19:00:00.000000000 -0500
+ +++ ChangeLog.new 2003-02-23 14:04:06.000000000 -0500
+ @@ -0,0 +1,9 @@
+ +# ChangeLog for app-admin/metalog
+ +# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+ +# $Header$
+ +
+ +*metalog-0.1 (23 Feb 2003)
+ +
+ + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+ + New ebuild, thanks to Harvey McGillicuddy
+ +
+
+To bump a revision. Note you need to "cvs add" so that echangelog
+will notice the new file.
+
+ $ cvs add metalog-0.1-r1.ebuild
+ cvs server: use 'cvs commit' to add this file permanently
+
+ $ echangelog 'Bump revision to fix bug #999'
+ --- ChangeLog 2003-02-23 14:04:06.000000000 -0500
+ +++ ChangeLog.new 2003-02-23 14:07:48.000000000 -0500
+ @@ -2,6 +2,11 @@
+ # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+ # $Header$
+
+ +*metalog-0.1-r1 (23 Feb 2003)
+ +
+ + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1-r1.ebuild :
+ + Bump revision to fix bug #999
+ +
+ *metalog-0.1 (23 Feb 2003)
+
+ 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+
+For a multi-line entry, omit the command-line arg.
+
+ $ echangelog
+ Please type the log entry, finish with ctrl-d
+ Bump revision to fix bug #999. Necessary to bump the revision because
+ the problem appears at run-time, not compile-time. This should also
+ give users the updated default configuration file.
+ --- ChangeLog 2003-02-23 14:09:12.000000000 -0500
+ +++ ChangeLog.new 2003-02-23 14:12:43.000000000 -0500
+ @@ -2,6 +2,13 @@
+ # Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2
+ # $Header$
+
+ +*metalog-0.1-r1 (23 Feb 2003)
+ +
+ + 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1-r1.ebuild :
+ + Bump revision to fix bug #999. Necessary to bump the revision because
+ + the problem appears at run-time, not compile-time. This should also
+ + give users the updated default configuration file.
+ +
+ *metalog-0.1 (23 Feb 2003)
+
+ 23 Feb 2003; Aron Griffis <agriffis@gentoo.org> metalog-0.1.ebuild :
+
+=head1 ENVIRONMENT VARIABLES
+
+=over
+
+=item ECHANGELOG_USER
+
+If echangelog can't figure out your username for the entry, you should
+set ECHANGELOG_USER. For example, export ECHANGELOG_USER="Aron
+Griffis <agriffis@gentoo.org>"
+
+=back
+
+=head1 NOTES
+
+As of the most recent version of echangelog (when this man-page
+appeared), echangelog puts all new entries at the top of the file
+instead of finding the appropriate *version line within the file.
+This is because that "new" ChangeLog format was never agreed upon by
+the Gentoo developers. Unfortunately the existence of both formats
+will undoubtedly cause much confusion.
+
+This also means that the examples above are wrong, since I just copied
+them from some old email. However they're not much wrong. ;-)
+
+This tool was written by Aron Griffis <agriffis@gentoo.org>. Bugs
+found should be filed against me at http://bugs.gentoo.org/
--- /dev/null
+Aron Griffis <agriffis@gentoo.org>
--- /dev/null
+Package : ekeyword
+Version : 0.1.0
+Author : See AUTHORS
+
+MOTIVATION
+
+Update the KEYWORDS in an ebuild.
+
+MECHANICS
+
+N/A
+
+IMPROVEMENTS
+
+- Should rewrite to Python, and use Portage directly to select candidate
+ ebuilds.
+- Should add entry to ChangeLog.
+
+For improvements, send a mail to agriffis@gentoo.org or make out a bug at
+bugs.gentoo.org.
--- /dev/null
+#!/usr/bin/perl -w
+#
+# Copyright 2003, Gentoo Technologies, Inc.
+# Author: Aron Griffis <agriffis@gentoo.org>
+#
+# ekeyword: Update the KEYWORDS in an ebuild. For example:
+#
+# $ ekeyword ~alpha oaf-0.6.8-r1.ebuild
+# 12c12
+# < KEYWORDS="x86 ppc sparc"
+# ---
+# > KEYWORDS="x86 ppc sparc ~alpha"
+
+
+die "syntax: ekeyword { arch | ~arch | -arch } ebuild...\n" unless @ARGV > 1;
+
+my $kw = shift @ARGV;
+(my $arch = $kw) =~ s|^[-~]||;
+
+die "$kw doesn't look like a keyword to me\n" unless $arch =~ /^\w+$/;
+
+for my $f (@ARGV) {
+ open I, "<$f" or die "Can't read $f: $!\n";
+ open O, ">$f.new" or die "Can't create $f.new: $!\n";
+ select O;
+
+ while (<I>) {
+ /^KEYWORDS/ or print, next;
+ s/[-~]?$arch/$kw/ || s/(.*?['"].*?)\s*(?=['"])/$1 $kw/;
+ print $_, <I> or die "Can't write $f.new: $!\n";
+ }
+
+ close I;
+ close O;
+
+ system "diff $f $f.new"; # don't die because the files might be the same
+ rename "$f.new", "$f" or die "Can't rename: $!\n";
+}
--- /dev/null
+#! /usr/bin/python
+#
+# $Header$
+#
+# Distributed under the terms of the GNU General Public License v2
+# Copyright (c) 2003 Karl Trygve Kalleberg
+
+import portage
+import re
+import os
+
+globals = portage.settings.configdict["globals"]
+
+for i in globals["CONFIG_PROTECT"].split():
+ print i
+
+# list all files in all CONFIG_PROTECT dirs
+# list them in the gui
+# one-by-one:
+# - is update to header only?
+# - is the original unmodified from the previous package? (not checkable - duh!)
+# -
+
+class Config:
+ pass
+
+def loadConfig():
+ cfg = Config()
+ globals = portage.settings.configdict["globals"]
+ cfg.config_protect = globals["CONFIG_PROTECT"].split()
+ return cfg
+
+def _recurseFiles(path):
+ files = []
+ if os.path.exists(path):
+ try:
+ tmpfiles = os.listdir(path)
+ for i in tmpfiles:
+ fn = path + "/" + i
+ if os.path.isdir(fn):
+ files += _recurseFiles(fn)
+ elif os.path.isfile(fn):
+ m = re.search("\._cfg...._",fn)
+ if m:
+ files.append(fn)
+ else:
+ print "What is this anyway?:", fn
+ except OSError:
+ print "Access denied:", path
+
+ return files
+
+def findAllFiles(config):
+ files = []
+ for i in config.config_protect:
+ files += _recurseFiles(i)
+ return files
+
+def displayFiles(config,files):
+ print files
+
+def main():
+ config = loadConfig()
+ files = findAllFiles(config)
+ displayFiles(config,files)
+
+
+if __name__ == "__main__":
+ try:
+ main()
+ except KeyboardInterrupt:
+ print "Operation aborted!"