From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Thu, 29 Apr 2004 23:11:19 +0400 From: Alexey Tourbin To: devel@altlinux.ru Message-ID: <20040429191119.GW1895@solemn.turbinal.org> Mail-Followup-To: devel@altlinux.ru Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="uWPcrH1o85ekjD8l" Content-Disposition: inline Subject: [devel] preview: buildreq.pl X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.4 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Apr 2004 19:13:21 -0000 Archived-At: List-Archive: List-Post: --uWPcrH1o85ekjD8l Content-Type: multipart/mixed; boundary="ka8pmxPp9qZnI4DD" Content-Disposition: inline --ka8pmxPp9qZnI4DD Content-Type: text/plain; charset=koi8-r Content-Disposition: inline Content-Transfer-Encoding: quoted-printable <...> =EE=D5=D6=CE=CF =D0=C9=D3=C1=D4=D8 =D0=CF =CF=C4=CE=CF=CA =D0=C5=D2=CC=CF= =D7=CF=CA =D0=D2=CF=C7=D2=C1=CD=CD=C5 =D7 =C4=C5=CE=D8, =D4=CF=C7=C4=C1 =D6= =C9=DA=CE=D8 =CE=C1=CC=C1=C4=C9=D4=D3=D1. =F7 =DE=C1=D3=D4=CE=CF=D3=D4=C9, =C5=D3=D4=D8 =C9=C4=C5=D1 =D0=C5=D2=C5=D2= =C1=C2=CF=D4=C1=D4=D8 buildreq =C9 =C4=D2=D5=C7=C9=C5 =D5=D4=C9=CC=C9=D4=D9= =C9=DA =DC=D4=CF=C7=CF =CB=CF=CD=D0=CC=C5=CB=D4=C1, =DE=D4=CF=C2=D9 =D7=CF=DA=CE=C9=CB=C1=CC=CF = =CD=C5=CE=D8=DB=C5 =D7=CF=D0=D2=CF=D3=CF=D7. =EB =D3=CF=D6=C1=CC=C5=CE=C9=C0, =DA=C1 =C4=C5=CE=D8 =D7=D3=C5=C7=CF =D3=C4= =C5=CC=C1=D4=D8 =CE=C5 =D5=C4=C1=C5=D4=D3=D1. =F0=D2=C9=CD=C5=D2=D9 =C9=D3=D0=CF=CC=D8=DA=CF=D7=C1=CE=C9=D1 =D4=CF=C7=CF,= =DE=D4=CF =D5=D6=C5 =CE=C1=D2=C9=D3=CF=D7=C1=CE=CF, =D0=D2=C9=D7=C5=C4=C5= =CE=D9 =CE=C9=D6=C5. =F2=C1=C2=CF=D4=C1=C5=D4 =C2=D9=D3=D4=D2=CF (=D0=C5=D2=CC =D7=CF=CF=C2=DD= =C5 =D2=C1=C2=CF=D4=C1=C5=D4 =CE=C1 =D2=C5=C4=CB=CF=D3=D4=D8 =C2=D9=D3=D4= =D2=CF). =FA=C1=D7=D4=D2=C1 =CE=D5=D6=CE=CF =D0=CF=C4=D5=CD=C1=D4=D8 =CE=C1=C4 =C1= =CC=C7=CF=D2=C9=D4=CD=CF=CD =C1=D7=D4=CF=CD=C1=D4=C9=DE=C5=D3=CB=CF=CA =CF= =D0=D4=C9=CD=C9=DA=C1=C3=C9=C9 =DA=C1=D7=C9=D3=C9=CD=CF=D3=D4=C5=CA. =EB=C1=CB =D7=D9 =D0=CF=CD=CE=C9=D4= =C5, =C4=C5=CC=CF =C2=D9=CC=CF =D7 =D4=CF=CD, =DE=D4=CF =D0=CF=CC=D5=DE=C1= =C0=D4=D3=D1 =CE=C5 =C4=C5=D2=C5=D7=D8=D1 =DA=C1=D7=C9=D3=C9=CD=CF=D3=D4=C5=CA (=DE=C5=C7=CF = =C8=CF=D4=C5=CC=CF=D3=D8 =C2=D9), =C1 =C7=D2=C1=C6 =DA=C1=D7=C9=D3=C9=CD=CF= =D3=D4=C5=CA (=C9 =CE=C5=D0=CF=CE=D1=D4=CE=CF, =D3 =CB=C1=CB=CF=CA =D7=C5=D2=DB=C9=CE=D9 =CE=C1=DE=C9=CE=C1=D4=D8 =C5=C7= =CF "=D2=C1=DA=CD=C1=D4=D9=D7=C1=D4=D8"). =E2=D9=CC=C1 =D4=C1=CB=D6=C5 =CF=D4=C4=C5=CC=D8=CE=C1=D1 =D0=D2=CF=C2=CC=C5= =CD=C1 =D3 =D7=C9=D2=D4=D5=C1=CC=D8=CE=D9=CD=C9 =D0=C1=CB=C5=D4=C1=CD=C9. =F7 =C9=C4=C5=C1=CC=C5, =CE=D5=D6=CE=CF =C9=DA=C2=C1=D7=C9=D4=D8=D3=D1 =CF= =D4 =D0=D2=C5=C4=C9=CB=C1=D4=CE=CF=CA =CB=D5=D7=C1=CC=C4=D9=20 /etc/buildreqs/packages/essential. :) =E5=D3=CC=C9 =CB=D4=CF-=CE=C9=C2=D5=C4=D8 =CD=CF=D6=C5=D4 =D0=CF=C4=D3=CB= =C1=DA=C1=D4=D8 =DE=D4=CF-=CE=C9=C2=D5=C4=D8 =C4=C5=CC=D8=CE=CF=C5 =CE=C1 = =D5=D2=CF=D7=CE=C5 =C1=CC=C7=CF=D2=C9=D4=CD=C1, =D0=D2=CF=DB=D5 =D0=CF=C4=D3=CB=C1=DA=C1=D4=D8. =EB=D4=CF =CE=C5 =D7 =CB= =D5=D2=D3=C5 =C9 =CB=CF=CD=D5 =C9=CE=D4=C5=D2=C5=D3=CE=CF, =C9=D3=CB=C1=D4= =D8 Date: Sun, 16 Nov 2003 17:58:30 +0300 Subject: [devel] packagereq/buildreq proposal Message-ID: <20031116145830.GC1863@julia.office.altlinux.ru> =EF=D4=C4=C5=CC=D8=CE=D9=CA =D7=CF=D0=D2=CF=D3 -- =CB=C1=CB =DC=D4=CF =CE= =C1=DA=D7=C1=D4=D8. :) $ ~/bin/buildreq.pl --packageof /bin/date coreutils $ ~/bin/buildreq.pl --packagereq /bin/date coreutils glibc-core glibc-core-i686 glibc-gconv-modules glibc-locales $ ~/bin/buildreq.pl --packagereq --explain /bin/date coreutils /bin/date glibc-core /etc/localtime glibc-core-i686 /lib/i686/libc.so.6 /lib/i686/libpthread.so.0 /lib/i686/librt.so.1 glibc-gconv-modules /usr/lib/gconv/gconv-modules.cache glibc-locales /usr/lib/locale/ru_RU.CP1251/LC_COLLATE /usr/lib/locale/ru_RU.CP1251/LC_CTYPE /usr/lib/locale/ru_RU.CP1251/LC_MONETARY /usr/lib/locale/ru_RU.CP1251/LC_NUMERIC $ ~/bin/buildreq.pl --packagereq -- rpm -bc ~/RPM/SPECS/perl-YAML.spec <...> + exit 0 GConf2 bzip2 bzlib control coreutils findutils glibc-core glibc-core-i686 glibc-gconv-modules glibc-locales glibc-nss grep libalternatives-devel libbeecrypt libdb4.2 libpam0-devel libpopt librpm librpmbuild libruby-devel libxmms-devel make perl-XML-SAX perl-base perl-devel perl-pod rpm rpm-build rpm-build-perl setup sh tar texinfo yelp zlib $ --=20 =F0=C5=D2=C5=D0=C9=DB=C9=D4=C5 FAM =C9 =C4=C1=D7=C1=CA=D4=C5 =C9=D3=CB=C1= =D4=D8 =CB=CF=DB=C5=CC=C5=CB =D0=CF=C4 root. -- Markov chain after fortunes-ALT --ka8pmxPp9qZnI4DD Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="buildreq.pl" #!/usr/bin/perl # $Id$ use strict; #use diagnostics; sub filereq (@) { my @strace = qw(strace -kqfF -e file -o |cat --); # okay, I love cat(1) open my $fh, "-|", @strace, @_ or die "@strace @_ failed\n"; my %trace; my %files; local $_; while (<$fh>) { chomp; if (s/^(\d+)(\s+)(.*)\s+$/$1$2$3/) { die "pid $1 unfinished twice\n" if defined $trace{$1}; $trace{$1} = $_; next; } elsif (s/^(\d+)\s+<\.\.\.\s+\w+\s+resumed>//) { die "pid $1 resumed without being unfinished\n" if not defined $trace{$1}; $_ = delete($trace{$1}) . $_; } $files{$1}++ if /^\d+\s+\w+\("(\/.+?)"/; } return \%files; } use RPM::Database; my $rpmdb = RPM::Database->new or die "rpmdb: $RPM::err\n"; sub packageof ($) { my $hdr = $rpmdb->find_by_file($_[0]); $hdr ? $$hdr{NAME} : undef; } sub packagereq (@) { my $files = filereq @_; my %packages; while (my ($file, undef) = each %$files) { next unless -f $file; my $package = packageof $file; next unless $package; push @{$packages{$package}}, $file; } return \%packages; } use Getopt::Long qw(GetOptions); GetOptions explain => \my $explain, filereq => \my $filereq, packageof => \my $packageof, packagereq => \my $packagereq; $filereq ^ $packageof ^ $packagereq or die "usage: $0 --mode arguments\n"; sub out ($) { my $tbl = shift; foreach my $k (sort keys %$tbl) { print $k . "\n"; next unless $explain; foreach my $v (sort @{$$tbl{$k}}) { print "\t$v\n"; } } } $filereq and out filereq @ARGV or $packageof and print packageof($ARGV[0]) . "\n" or $packagereq and out packagereq @ARGV; --ka8pmxPp9qZnI4DD-- --uWPcrH1o85ekjD8l Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.4 (GNU/Linux) iD8DBQFAkVNWfBKgtDjnu0YRAmC4AKDBSmYa5+TceX4aIh7vNYn7rKnrPQCgytP7 wfA810NSawPRK959ln9snLg= =nt+E -----END PGP SIGNATURE----- --uWPcrH1o85ekjD8l--