From: karltk Date: Sat, 26 Jul 2003 20:50:03 +0000 (-0000) Subject: Preparing for Gentoolkit relaunch; added basic gentoolkit library. X-Git-Tag: gentoolkit-0.2.4.3~470 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4071f33e9b356f18e8c04c9234188ec6b83ef4fa;p=gentoolkit.git Preparing for Gentoolkit relaunch; added basic gentoolkit library. svn path=/; revision=32 --- diff --git a/trunk/ChangeLog b/trunk/ChangeLog index a32edde..6f1bc41 100644 --- a/trunk/ChangeLog +++ b/trunk/ChangeLog @@ -1,4 +1,16 @@ +2003-06-26 Karl Trygve Kalleberg + * 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 * Renamed pkg-size to gentool-package-size * Renamed pst-package-count to gentool-package-count diff --git a/trunk/TODO b/trunk/TODO index 8b13789..f85718a 100644 --- a/trunk/TODO +++ b/trunk/TODO @@ -1 +1,13 @@ - +- 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 diff --git a/trunk/src/dep-clean/dep-clean b/trunk/src/dep-clean/dep-clean index 5ab317c..b71042c 100644 --- a/trunk/src/dep-clean/dep-clean +++ b/trunk/src/dep-clean/dep-clean @@ -1,4 +1,4 @@ -#!/bin/bash +#! /bin/bash #Shows unrequired packages and missing dependencies. #Author/Maintainer: Brandon Low #Author: Jerry Haltom diff --git a/trunk/src/echangelog/AUTHORS b/trunk/src/echangelog/AUTHORS new file mode 100644 index 0000000..36d5bfd --- /dev/null +++ b/trunk/src/echangelog/AUTHORS @@ -0,0 +1 @@ +Aron Griffis diff --git a/trunk/src/echangelog/README b/trunk/src/echangelog/README new file mode 100644 index 0000000..5bb0444 --- /dev/null +++ b/trunk/src/echangelog/README @@ -0,0 +1,20 @@ +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. diff --git a/trunk/src/echangelog/echangelog b/trunk/src/echangelog/echangelog new file mode 100644 index 0000000..f9fcba1 --- /dev/null +++ b/trunk/src/echangelog/echangelog @@ -0,0 +1,168 @@ +#!/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 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, '; } + 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 = ; } + 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/; + $text =~ s//$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 () { + /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"; diff --git a/trunk/src/echangelog/echangelog.1 b/trunk/src/echangelog/echangelog.1 new file mode 100644 index 0000000..487fcfc --- /dev/null +++ b/trunk/src/echangelog/echangelog.1 @@ -0,0 +1,270 @@ +.\" 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 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 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 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 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 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 \*(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 . Bugs +found should be filed against me at http://bugs.gentoo.org/ diff --git a/trunk/src/echangelog/echangelog.pod b/trunk/src/echangelog/echangelog.pod new file mode 100644 index 0000000..0612aa9 --- /dev/null +++ b/trunk/src/echangelog/echangelog.pod @@ -0,0 +1,131 @@ +=head1 NAME + +echangelog - update portage ChangeLogs + +=head1 SYNOPSIS + +echangelog [ I ] + +=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 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 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 metalog-0.1-r1.ebuild : + + Bump revision to fix bug #999 + + + *metalog-0.1 (23 Feb 2003) + + 23 Feb 2003; Aron Griffis 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 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 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 " + +=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 . Bugs +found should be filed against me at http://bugs.gentoo.org/ diff --git a/trunk/src/ekeyword/AUTHORS b/trunk/src/ekeyword/AUTHORS new file mode 100644 index 0000000..36d5bfd --- /dev/null +++ b/trunk/src/ekeyword/AUTHORS @@ -0,0 +1 @@ +Aron Griffis diff --git a/trunk/src/ekeyword/README b/trunk/src/ekeyword/README new file mode 100644 index 0000000..ec7ff5e --- /dev/null +++ b/trunk/src/ekeyword/README @@ -0,0 +1,20 @@ +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. diff --git a/trunk/src/ekeyword/ekeyword b/trunk/src/ekeyword/ekeyword new file mode 100644 index 0000000..f5eb133 --- /dev/null +++ b/trunk/src/ekeyword/ekeyword @@ -0,0 +1,38 @@ +#!/usr/bin/perl -w +# +# Copyright 2003, Gentoo Technologies, Inc. +# Author: Aron Griffis +# +# 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 () { + /^KEYWORDS/ or print, next; + s/[-~]?$arch/$kw/ || s/(.*?['"].*?)\s*(?=['"])/$1 $kw/; + print $_, 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"; +} diff --git a/trunk/src/etc-update/etc-update b/trunk/src/etc-update/etc-update new file mode 100755 index 0000000..a92159b --- /dev/null +++ b/trunk/src/etc-update/etc-update @@ -0,0 +1,72 @@ +#! /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!"