diff options
author | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:41:49 +0000 |
---|---|---|
committer | Dexter Morgan <dmorgan@mageia.org> | 2011-06-02 20:41:49 +0000 |
commit | 6d626d6f0c3a3313b55a865c084f16a762d60713 (patch) | |
tree | 8f77945253ea4e76b2c674c45b97d53a64032e13 | |
download | rpmtools-distro/mga1.tar rpmtools-distro/mga1.tar.gz rpmtools-distro/mga1.tar.bz2 rpmtools-distro/mga1.tar.xz rpmtools-distro/mga1.zip |
Branch for updatesdistro/mga1
-rw-r--r-- | ChangeLog | 2142 | ||||
-rw-r--r-- | MANIFEST | 12 | ||||
-rw-r--r-- | Makefile.PL | 55 | ||||
-rw-r--r-- | NEWS | 84 | ||||
-rwxr-xr-x | dumpdistribconf | 75 | ||||
-rwxr-xr-x | editdistrib | 256 | ||||
-rwxr-xr-x | gendistrib | 396 | ||||
-rw-r--r-- | genhdlist-old | 193 | ||||
-rw-r--r-- | genhdlist2 | 647 | ||||
-rwxr-xr-x | packdrake | 189 | ||||
-rw-r--r-- | packdrake.pm | 182 | ||||
-rw-r--r-- | patches/faster-gendistrib.patch | 112 | ||||
-rwxr-xr-x | t/01packdrake.t | 66 |
13 files changed, 4409 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog new file mode 100644 index 0000000..f76384e --- /dev/null +++ b/ChangeLog @@ -0,0 +1,2142 @@ +2006-08-22 01:29 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - discret change in the order of index generation, + this would avoid link breakage when a distrib use index that can + generated by another (srpms, noarch or biarch...) + +2006-08-21 23:33 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - split works to increase lazyness + +2006-08-21 15:11 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update ChangeLog + +2006-08-21 15:06 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile.PL, rpmtools.spec: - do no longer use + specfile from here + +2006-08-21 15:00 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - exit on error + +2006-08-21 14:58 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - nochkdep is default, use chkdep + - die ASAP if no work need + - make more error fatal, using Distribconf::Checks + +2006-08-21 15:06 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile.PL, rpmtools.spec: - do no longer use + specfile from here + +2006-08-21 15:00 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - exit on error + +2006-08-21 14:58 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - nochkdep is default, use chkdep + - die ASAP if no work need + - make more error fatal, using Distribconf::Checks + +2006-07-13 11:53 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: This man page is about gendistrib, not genhdlist. + Also, fix $VERSION under svn. + +2006-06-12 13:11 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: RPMTAG_SOURCEPACKAGE is deprecated, use + RPMTAG_SOURCERPM + +2006-03-20 13:45 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.28 + +2006-03-20 12:52 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Add a --norecursive option to genhdlist (Michael + Scherer) + +2006-03-01 11:22 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Fix compilation warning + +2006-01-16 15:15 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.27-1mdk + +2006-01-16 15:10 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Replace serial by epoch everywhere, to be able to + build with rpm 4.4.4. + The --serial switch is still recognized, but not documented. + Update Copyright. + +2006-01-16 14:51 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Use mktemp for temp files. Error checking when + opening files. Fix comments. Update copyright. + +2006-01-16 14:34 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Revert Titi's last commit and reindent properly + +2006-01-13 11:02 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Add BuildRequires for regression tests + +2006-01-11 14:37 Thierry Vignaud <tvignaud at mandriva.com> + + * gendistrib: fix obvious bug + +2005-12-30 16:06 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.26-2mdk + +2005-12-30 15:53 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Fix typo; update copyright + +2005-12-30 15:34 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Make it clear that genhdlist always generates a + synthesis. + Update copyright notice. + +2005-12-05 18:15 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL, rpmtools.spec: Don't install empty manpages + +2005-12-05 17:26 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Trust automatic requires. + +2005-11-16 16:20 Thierry Vignaud <tvignaud at mandriva.com> + + * rpmtools.spec: bump conflicts due to file moves + +2005-11-16 14:46 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.26-1mdk + +2005-11-16 14:28 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * editdistrib: Add a version command + +2005-11-16 14:22 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * editdistrib: Fix a few typos; add a "quit" command + +2005-11-16 13:57 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL, rpmtools.spec: Put packdrake(1) manpage in the + packdrake rpm, not in the rpmtools rpm. + Don't install manpages in section 3 for obsolete modules. + +2005-11-16 13:56 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Don't leave empty sections in manpage + +2005-11-16 13:15 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Fix the location where the MD5SUM files are + generated (thanks joeghi) + +2005-11-15 12:42 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake.pm: Remove wrapper overhead, use directly new module + +2005-11-15 12:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm, Distribconf/Build.pm, Packdrakeng.pm, + Packdrakeng/zlib.pm: Replace modules by wrappers around new + MDV:: namespace. Add a deprecation warning. + +2005-11-15 12:19 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * t/01packdrakeng.t: use_ok must be done at compile time for + imports to work + +2005-11-15 11:22 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * dumpdistribconf, gendistrib: Use modules in the new namespace + MDV:: + +2005-11-15 11:16 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * MANIFEST: Add editdistrib to the MANIFEST + +2005-11-15 11:10 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ., .cvsignore: Ignore MakeMaker build files and compiled binaries + +2005-10-18 15:41 Olivier Blin <oblin at mandriva.com> + + * packdrake: fix syntax error + +2005-10-14 01:49 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * editdistrib: - add del/save/set/check + +2005-10-11 21:23 Pascal Terjan <pterjan at mandriva.com> + + * gendistrib: Fix typo + +2005-10-11 06:32 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * editdistrib: - factorize code + +2005-10-10 23:26 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * editdistrib: - add addmedia() + - use MDV::... + +2005-10-10 12:42 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * editdistrib: - add + +2005-10-04 12:07 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Make perl-devel dependency portable (thanks to + Buchan) + +2005-10-03 17:00 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.25-1mdk + +2005-10-03 16:00 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Make Pod::Usage optional, for dependency reasons + +2005-10-03 15:40 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng/zlib.pm: Disarm warnings + +2005-10-03 15:09 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Add --version. Doc clarification. + +2005-10-03 14:08 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Use Pod::Usage + +2005-10-03 12:49 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Begin cleanup. + +2005-10-03 11:25 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL: Don't depend on MDK::Common + +2005-09-30 16:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Put license in POD + +2005-09-30 15:56 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Use a random temp directory. Remove --headersdir + option. + +2005-09-30 15:23 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Put license in doc. More code cleanup. + +2005-09-30 15:14 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Don't create a list file, unless explicitly told so + (with --list) + +2005-09-30 14:59 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Add a --subdir option + +2005-09-30 14:32 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: More docs and cleanup + +2005-09-30 14:07 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Well, if tempdir doesn't exist, that's okay too + +2005-09-30 14:04 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Safety check: make sur temporary directory is owned + by user + +2005-09-30 13:39 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Add an option --md5sum + +2005-09-30 12:45 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: TODO + +2005-09-30 12:43 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm, dumpdistribconf: Use meaningful return values + for DistribConf::load() + +2005-09-30 12:29 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Factorize + +2005-09-30 12:26 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * dumpdistribconf: Don't give two meanings to -h + +2005-09-29 16:38 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * t/01packdrakeng.t: Test cleanup + +2005-09-29 16:08 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * dumpdistribconf: Use Pod::Usage + +2005-09-29 15:51 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * dumpdistribconf: Use Distribconf::Build, or else it will go boom + +2005-09-29 15:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf/Build.pm: More docs and minor fixes + +2005-09-29 14:16 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf/Build.pm: Don't repeat copyright put in Distribconf + +2005-09-29 14:14 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm: Avoid uninitialized warnings. Licensing terms. + TODO and XXX notations. + +2005-09-29 13:44 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm: More docs for Distribconf + +2005-09-29 13:43 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf/Build.pm: Reports errors on STDERR, not STDOUT + +2005-09-29 12:28 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm: More, more docs + * gendistrib: Add SEE ALSO + * Distribconf/Build.pm: Spell check error message + +2005-09-28 16:17 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Spec cleanup + +2005-09-28 16:05 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng/zlib.pm: Add version, fix typo + +2005-09-28 16:01 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm, Distribconf/Build.pm: Add in Distribconf modules + +2005-09-28 15:58 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Add a description, typo fixes + +2005-09-28 15:11 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib, genhdlist: Sort manpage by alphabetical order + +2005-09-28 15:09 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Remove unnecessary, misnamed, undocumented and + deprecated option --distrib + +2005-09-28 14:29 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Use Pod::Usage + +2005-09-28 14:19 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Code cleanup + +2005-09-28 13:44 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Add a manpage for gendistrib(1) + +2005-09-28 12:06 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL, gendistrib, rpmtools.spec: Use Pod::Usage for + gendistrib + +2005-09-28 10:38 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Add --version option. Suppress idiotic -s option + alias. + +2005-09-28 10:32 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: First POD draft. + +2005-09-28 09:54 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL, rpm2header.c: Remove obsolete code + +2005-09-28 08:50 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm, gendistrib: Documentation nits. Fix some fatal + error messages. + +2005-09-14 15:05 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: -add %check + +2005-09-14 15:04 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog, rpmtools.spec: - 5.0.24 + +2005-09-14 01:02 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - skip hdlist rebuild per media when not need + +2005-09-07 09:33 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - add --blind option / rebuild even it is not need + +2005-09-07 06:41 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - do not rebuild hdlist if not need + +2005-09-06 23:48 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: add --destdir option + +2005-09-06 19:46 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm, Distribconf/Build.pm, Packdrakeng.pm, + dumpdistribconf, packdrake.pm: - s/mandrake/mandriva/ + +2005-09-06 16:58 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - make empty media non fatal, use --noemptymedia to + back old behaviour + - add --mediacfg in --help + - die if header dir can't be recreate + +2005-09-06 15:56 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - show all missing directory before dying when + --skipmissingdir is not specified + +2005-08-23 12:57 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * t/01packdrakeng.t: Test fix to go along with the previous + change. Be more TAP compliant. + Die early of errors. + +2005-08-23 12:50 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.23-1mdk + +2005-08-23 12:47 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: If extracting an archive to an undefined + directory, output to stdout. + (used by urpmq) + +2005-08-22 17:59 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.22 + +2005-08-22 16:54 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Use destdir = "." if not specified. + Don't use warnings. + +2005-08-19 15:33 Thierry Vignaud <tvignaud at mandriva.com> + + * Packdrakeng.pm: let it pass perl_checker + * .perl_checker: blacklist a few packages in order to be able to + run perl_checker over Packadrake + +2005-08-19 15:30 Thierry Vignaud <tvignaud at mandriva.com> + + * Packdrakeng.pm: (tempfile) display which file we failed to create + +2005-06-20 10:14 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 4.0.21 + +2005-06-16 01:01 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Create temp file in $TMPDIR instead of $TMP, and + warn when creation failed + +2005-05-26 09:32 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf/Build.pm: Fix error messages + +2005-05-10 09:24 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.20-2mdk + +2005-04-15 15:48 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Be less dependant on distribution name + +2005-04-04 15:31 Pixel <pixel at mandriva.com> + + * Packdrakeng.pm, rpmtools.spec: packdrake: remove dirty message + when decompressing without Compress::Zlib + +2005-03-29 15:45 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.19-1mdk + +2005-03-29 15:37 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Remove redundant code + +2005-03-29 15:24 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Create the directory "thismediainfo" if it doesn't + exist + +2005-03-14 13:01 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.18-1mdk + +2005-03-14 12:47 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Build hdlists in temporary locations + +2005-03-07 15:06 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: 5.0.17-1mdk + +2005-03-07 15:00 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Factorisation of paths + +2005-03-07 14:20 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Generate media-specific MD5SUM files in + 'thismediainfo' dir, not 'mediainfo' + +2005-03-07 13:45 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Distribconf.pm: Doc and POD fixes + +2005-03-07 10:59 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Spelling fix + +2005-03-01 11:46 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.16-1mdk + +2005-03-01 11:33 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Output help to stdout + +2005-03-01 11:31 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Patch by Leon Brooks to add an --sql option to + dump output as SQL INSERT + statements, and an --url option to get the rpm's URL tag. + +2005-02-28 11:37 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: POD fixes. + +2005-02-28 11:32 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: toc_f_count wasn't stored in the Packdrakeng + object, and it's used by + rpmdrake's search progress bar. (bug 14008) + +2005-02-23 18:32 Pablo Saratxaga <pablo at mandriva.com> + + * ChangeLog: converted to UTF-8 + +2005-02-22 20:25 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: -update + +2005-02-22 20:24 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile.PL, rpmtools.spec: - 5.0.15 + +2005-02-22 20:15 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - --skipmissingdir + - preform a simple on the distrib + - die ealier on missing media dir + - generate VERSION it self + +2005-02-22 20:12 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf, Distribconf.pm, Distribconf/Build.pm: - split + Distribconf with Build + - add write_VERSION + +2005-02-22 12:52 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm: - don't add a 'm' to size in hdlists + +2005-02-21 21:40 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm: - add getfullpath + - s![ /]*!_! in default path + - add check() + +2005-02-21 21:36 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - add a "\n" to beautify output + +2005-02-21 15:45 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + * rpmtools.spec: - 5.0.14 + +2005-02-21 15:42 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: -fix wrong commit + +2005-02-21 15:34 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm, gendistrib: Distribconf + +2005-02-21 13:15 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + +2005-02-21 13:14 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - 5.0.13 + * Distribconf.pm: - add doc for pubkey + +2005-02-21 13:11 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm: - lowercase media name in file name + - manage pubkey + +2005-02-21 12:47 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm: - avoid error message about non existing + media.cfg + +2005-02-21 00:10 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + +2005-02-21 00:06 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - s/getpath/getvalue/ + +2005-02-21 00:05 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + +2005-02-21 00:04 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - 5.0.12 + +2005-02-21 00:03 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib: - skip media genration if suppl or askmedia + +2005-02-20 23:36 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - remove prefix tag + +2005-02-20 23:20 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib, rpmtools.spec: - don't create existing dir + - minor fix + - 5.8.11 + +2005-02-20 21:44 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile.PL: - add Districonf and co + +2005-02-20 21:15 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Distribconf.pm, dumpdistribconf: - initials release for managing + mandrakelinux distro tree + +2005-02-17 12:58 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.10-1mdk + +2005-02-17 12:30 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Ensure links are done + +2005-02-17 11:26 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Spelling fixes in usage + +2005-02-17 10:57 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Generate MD5SUM files + +2005-02-17 10:23 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: More cleanup + +2005-02-17 09:58 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Add creation of links to hdlist/synthesis in + media_info subdirectories + (and add a command line option to disable it) + +2005-02-17 09:09 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Code cleanup + +2005-02-17 08:16 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Handle new hdlists format (with sizes) + +2005-02-02 11:28 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Remove redundant and bogus require on perl-base + +2005-01-17 13:26 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.9-1mdk + +2005-01-17 13:01 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * genhdlist: Add a "follow" option to the File::Find call, to + follow symlinks, as + suggested by Steven Shiau. Plus some tidying up and perl_checker + fixes. + +2005-01-07 12:38 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: More filehandle cleanup + +2005-01-03 21:52 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng/zlib.pm: Fix warning messages (english grammar, plus + final \n) + +2005-01-03 16:55 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update for 5.0.8 + +2005-01-03 16:54 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, rpmtools.spec: - Fix options parsing + - 5.0.8 + +2005-01-03 16:38 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, Packdrakeng/zlib.pm: - fix data read detection + when using cache + +2004-12-30 16:00 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + * rpmtools.spec: - 5.0.7 + +2004-12-30 15:55 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, Packdrakeng/zlib.pm: - speedup uncompress + function + - factorize code + +2004-12-21 23:14 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng/zlib.pm: -really fix syswrite + +2004-12-21 22:29 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng/zlib.pm: - check data are really writen + +2004-12-20 12:25 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, t/01packdrakeng.t: - add infofile() function + - more doc + +2004-12-17 16:04 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: perl_checker fixes + +2004-12-17 13:32 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.6-1mdk + +2004-12-17 13:24 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm, Packdrakeng/zlib.pm: Ensure Packdrakeng::zlib + loads properly, and is not used if Compress::Zlib + is not available + +2004-12-17 13:13 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * t/01packdrakeng.t, t/02packdrake.t: Neatier test labels + +2004-12-17 10:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Simplify optional module loading + +2004-12-16 15:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake.pm: At least show a warning when an archive can't be + found + +2004-12-16 15:03 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Don't invoke compression/decompression + subroutines as methods + +2004-12-16 12:50 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Makefile.PL: - add tag command + +2004-12-15 19:52 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm: - more docs + +2004-12-14 19:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.5-1mdk + +2004-12-14 19:16 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Fix indentation and capitalize some warning + messages + +2004-12-14 19:13 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Use $pack->{log}() instead of warn(), so --quiet + works again + +2004-12-14 10:38 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL: Don't hardcode version in several places + +2004-12-14 10:27 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.4 + +2004-12-14 10:25 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Don't require Compress::Zlib (only suggest :) + +2004-12-14 10:24 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake.pm: extract_archive() should do nothing in no files + are specified. + Add an extract_all_archive function. + +2004-12-14 01:44 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm: - fix mkpath + +2004-12-14 00:23 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update for 5.0.3 + +2004-12-14 00:22 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Makefile.PL, Packdrakeng.pm, rpmtools.spec: - 5.0.3 + - fix mkpath + +2004-12-14 00:02 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, t/01packdrakeng.t: - don't use File::* modules + +2004-12-13 17:54 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: Fix a misplaced Provides in the specfile. + +2004-12-13 16:17 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Explicit import list for POSIX + +2004-12-13 15:57 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - add conflicts to help update + +2004-12-13 15:49 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + +2004-12-13 15:48 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Makefile.PL, rpmtools.spec: - add missing file zlib.pm + +2004-12-13 15:29 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - cosmetic change, make rpmlint happy + +2004-12-13 15:26 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Makefile.PL: - version is 5.0.1 + +2004-12-13 15:20 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: - update + +2004-12-13 15:13 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST: - add Packdrakeng/zlib.pm + +2004-12-13 15:10 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng, Packdrakeng/zlib.pm: - externalize Compress::Zlib + * Packdrakeng.pm: - s/use/eval {require}/ on Compress::Zlib, so it + can works without it + +2004-12-13 15:06 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - split package + - 5.0.1 + +2004-12-09 13:04 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 5.0.0-2mdk + +2004-12-09 12:56 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL: Refine "rpm" make target + +2004-12-09 12:46 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Pull $VERSION from CVS + +2004-12-09 12:43 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake: Adjust copyright + +2004-12-09 12:34 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake.pm: POD fixes. + +2004-12-07 10:19 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * t/01packdrakeng.t: - minor fix + +2004-12-07 09:57 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * t/02packdrake.t: Compare strings with eq, not == + +2004-12-07 09:47 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: POD fix + +2004-12-07 09:34 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Packdrakeng.pm: Minor doc fixes + +2004-12-07 08:10 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile.PL: Improve distclean make target + +2004-12-06 23:29 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog, MANIFEST: - ChangeLog + +2004-12-06 23:27 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile, Makefile.PL, Packdrakeng.pm, packdrake.pm, + rpmtools.spec, t/02packdrake.t: - 5.0.0 + - more test and fix + +2004-12-06 16:42 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, t/01packdrakeng.t: - fix dir / symlink creation + - add test + +2004-12-06 15:40 Michael Scherer <misc at mandriva.org> + + * Packdrakeng.pm: - fix small typos in docs + +2004-12-06 11:15 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * distriblint: - removing this ugly script + +2004-12-06 11:11 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * MANIFEST, Makefile, Makefile.PL, packdrake-pm, packdrake.pm, + rpmtools.spec: - bump to packdrakeng + +2004-12-05 21:05 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, t/01packdrakeng.t: - fix data length detection + in extern_compress + - add test + +2004-12-05 16:36 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Packdrakeng.pm, packdrakeng.pm: - rename packdrakeng.pm to + Packdrakeng.pm to follow perl policy + +2004-12-05 07:13 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm, t/01packdrakeng.t: - fix data length to write + - test: use strict ;) then fix it !! + +2004-12-04 04:32 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm, t/01packdrakeng.t: - add external call to + compress programs + - clean code + - fix bugs... + - start doc + - add test + +2004-11-29 10:11 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * t, t/01packdrakeng.t: - first commit + +2004-11-29 08:45 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm: - managed more than one file by bloc + - add few comment + +2004-11-29 00:30 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrake-pm/packdrake.pm: - cosmectic fix + +2004-11-27 14:08 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm: - fix compressed size read + - some return on error add + +2004-11-26 00:34 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm: - Update errors + +2004-11-25 22:27 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * packdrakeng.pm: - first commit for this wonderfull packdrake ng + pm file + +2004-11-18 12:48 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Logging nits + +2004-11-17 17:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * gendistrib: Fix usage notes + +2004-09-02 05:19 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 4.5-25mdk + +2004-09-02 05:03 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * distriblint, gendistrib: Make rpm tools handle new keywords in + hdlists file. + +2004-08-18 00:21 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 4.5-24mdk + +2004-08-18 00:15 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile: Install rpm2cpio.pl + +2004-08-17 23:57 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpm2cpio.pl: Minor adjustements + +2004-08-17 23:50 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpm2cpio.pl: Add a pure-perl version of rpm2cpio (for emergency + cases), + written by Roger Espel Llima. (from + http://www.iagora.com/~espel/rpm2cpio) + +2004-08-11 05:22 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 4.5-23mdk + +2004-08-11 05:10 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Don't include internal dependencies of the rpmlib + in the parsehdlist output + +2004-07-22 08:25 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * distriblint, gendistrib, packdrake-pm/packdrake.pm, + rpmtools.spec: 4.5-22mdk: Updates for the new media layout in + cooker + +2004-07-05 06:47 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * ChangeLog, rpmtools.spec: 4.5-21mdk + +2004-07-05 06:23 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Fix error message + +2004-07-05 05:40 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * parsehdlist.c: Minor fixes in help message + * Makefile: Add a rule for changelog generation + +2004-04-23 12:39 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * rpmtools.spec: 4.5-20mdk + +2004-04-23 09:04 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * Makefile: Fix CFLAGS in the Makefile for compilation with + versions of rpm >= 4.2. + +2004-04-23 08:49 Rafael Garcia-Suarez <rgarciasuarez at mandriva.com> + + * packdrake, packdrake-pm/packdrake.pm: Add a --quiet option to + packdrake + +2004-04-21 09:17 Warly <warly at mandriva.com> + + * gendistrib: make $ENV{TMPDIR} the default cache location + +2004-02-25 13:35 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: rebuild for perl + +2004-01-18 02:30 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * genhdlist: - Don't put wrong rpm in list file when using dontdie + +2004-01-16 18:05 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog: Generated by cvs2cl the 16_Jan + +2004-01-16 18:04 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * genhdlist, rpmtools.spec: fix genhdlist without arg + +2004-01-16 00:58 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * rpmtools.spec: - 17mdk + +2004-01-16 00:53 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * genhdlist: - add --dest option + - fix dir parsing + +2004-01-09 15:49 Warly <warly at mandriva.com> + + * rpmtools.spec: add provides perl(packdrake) + +2004-01-05 22:15 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * ChangeLog, rpmtools.spec: -15mdk + +2004-01-05 22:09 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * Makefile: use %_topdir instead /home/users/olivier + +2004-01-05 21:51 Olivier Thauvin <thauvin at aerov.jussieu.fr> + + * gendistrib, genhdlist: add somes feature + +2003-12-09 19:38 Fançois Pons + + * Makefile, rpmtools.spec: added RH 7.3 support + +2003-08-28 13:44 Fançois Pons + + * gendistrib: fixed MD5SUM files to be removed, added noarch for + %{ARCH} possible substitution. + +2003-08-28 13:40 Fançois Pons + + * rpmtools.spec: 4.5-13mdk + +2003-08-28 13:39 Fançois Pons + + * gendistrib: added %{ARCH} management + +2003-08-01 13:17 Fançois Pons + + * rpmtools.spec: final 4.5-12mdk + +2003-08-01 12:21 Fançois Pons + + * rpmtools.spec: 4.5-12mdk + +2003-05-19 15:26 Thierry Vignaud <tvignaud at mandriva.com> + + * packdrake-pm/packdrake.pm: perl_checker fixes + +2003-05-12 16:47 Guillaume Cottenceau + + * rpmtools.spec: rebuild for new perl requires/provides + +2003-04-29 20:19 Frederic Lepied <flepied at mandriva.com> + + * rpmtools.spec: 4.5-10mdk + +2003-04-29 20:18 Frederic Lepied <flepied at mandriva.com> + + * Makefile: use rpmbuild instead of rpm + +2003-04-29 20:17 Frederic Lepied <flepied at mandriva.com> + + * rpm2header.c: added rpm 4.2 support + +2003-03-10 10:42 Fançois Pons + + * rpmtools.spec: added URL tag. + +2003-03-10 10:39 Fançois Pons + + * gendistrib, rpmtools.spec: 4.5-9mdk + +2003-02-20 15:54 Fançois Pons + + * packdrake-pm/packdrake.pm, rpmtools.spec: 4.5-8mdk + +2002-12-05 23:43 Pixel <pixel at mandriva.com> + + * packdrake-pm/packdrake.pm, rpmtools.spec: fix a bug in an error + message (as detected by perl_checker) + +2002-12-04 21:44 Pixel <pixel at mandriva.com> + + * packdrake-pm/packdrake.pm, rpmtools.spec: packdrake.pm is now + perl_checker compliant + +2002-11-28 01:01 Pixel <pixel at mandriva.com> + + * packdrake-pm/packdrake.pm, rpmtools.spec: packdrake.pm is now + perl_checker compliant + +2002-11-26 18:30 Pixel <pixel at mandriva.com> + + * packdrake-pm/packdrake.pm, rpmtools.spec: packdrake.pm is now + perl_checker compliant + +2002-11-26 14:12 Fançois Pons + + * packdrake-pm/packdrake.pm: fix of pixel from perl-checker. + +2002-10-16 14:08 Fançois Pons + + * rpmtools.spec: updated spec file with obsoletes changed by + conflicts. + +2002-10-16 14:07 Fançois Pons + + * gendistrib, packdrake-pm/packdrake.pm, rpmtools.spec: 4.5-3mdk + +2002-08-05 19:04 Pixel <pixel at mandriva.com> + + * Makefile, Makefile.PL, build_archive, extract_archive, + genbasefiles, gendepslist2.cc, genfilelist, genhdlist_cz2, + genhdlists, hdlist2files.cc, hdlist2groups.cc, hdlist2names.cc, + hdlist2prereq.cc, packdrake-pm, packdrake-pm/Makefile.PL, + packdrake-pm/packdrake.pm, packdrake.pm, rpm-find-leaves.c, + rpmtools.pm, rpmtools.spec, rpmtools.xs: - remove obsolete stuff + - move packdrake.pm in its own directory to make MakeMaker happy + +2002-08-05 15:05 Guillaume Cottenceau + + * Makefile, parsehdlist.c, rpmtools.spec: add --fileswinfo query + to parsehdlist so that we can know more + informations on the package for which we print the files (needed + by + upcoming rpmdrake supporting searching in files) + +2002-07-23 18:43 Fançois Pons + + * rpmtools.spec: 4.4-1mdk + +2002-07-23 18:31 Fançois Pons + + * Makefile, rpmtools.pm, rpmtools.spec: 4.4-1mdk + +2002-07-09 11:00 Pixel <pixel at mandriva.com> + + * rpmtools.spec: adapt to perl 5.8.0 + +2002-06-28 07:10 Fançois Pons + + * distriblint, rpmtools.spec: 4.3-5mdk + +2002-06-27 18:28 Fançois Pons + + * Makefile, rpmtools.spec: 4.3-4mdk (forget installation of + distriblint) + +2002-06-27 18:27 Fançois Pons + + * distriblint, rpmtools.spec: 4.3-4mdk + +2002-06-18 16:02 Fançois Pons + + * Makefile, rpmtools.spec: fixes for real addition and + installation. + +2002-06-18 15:57 Fançois Pons + + * genhdlist, rpmtools.spec: 4.3-3mdk (added genhdlist) + +2002-06-03 12:04 Fançois Pons + + * gendistrib: added missing log removed since gendistrib use + perl-URPM. + +2002-06-03 11:06 Fançois Pons + + * gendistrib, rpmtools.spec: synced gendistrib with URPM 0.02 or + later. + +2002-05-31 10:58 Fançois Pons + + * Makefile, gendistrib, rpmtools.pm, rpmtools.spec: start using + perl-URPM + +2002-05-29 08:11 Fançois Pons + + * rpmtools.spec: latest rpmtools 4.2. + +2002-05-29 08:10 Fançois Pons + + * rpmtools.xs: back fix from URPM module. + +2002-04-22 15:59 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: improved generation of + synthesis (smaller) + +2002-04-15 13:25 Fançois Pons + + * packdrake.pm, rpmtools.spec: fixed with NIS and packdrake + --extract. + +2002-04-10 14:33 Fançois Pons + + * packdrake.pm, rpmtools.pm, rpmtools.spec: compatible with perl + 5.005 and above. + +2002-03-20 19:58 Frederic Lepied <flepied at mandriva.com> + + * rpmtools.spec: 4.2-9mdk + +2002-03-06 18:59 Fançois Pons + + * rpmtools.pm, rpmtools.spec: 4.2-8mdk, now final 8.2 ? + +2002-03-06 18:51 Fançois Pons + + * rpmtools.pm, rpmtools.spec: 4.2-7mdk, final ? + +2002-02-27 11:02 Fançois Pons + + * rpmtools.spec, rpmtools.xs: 4.2-6mdk + +2002-02-18 10:54 Fançois Pons + + * parsehdlist.c, rpmtools.spec: 4.2-4mdk + +2002-02-14 16:26 Fançois Pons + + * rpmtools.spec, rpmtools.xs: 4.2-3mdk, memory leak fixed. + +2002-02-11 13:32 Fançois Pons + + * rpmtools.spec: update date changelog. + +2002-02-08 17:06 Fançois Pons + + * rpmtools.spec, rpmtools.xs: 4.2-2mdk + +2002-02-08 16:55 Fançois Pons + + * Makefile, parsehdlist.c, rpmtools.pm, rpmtools.spec: 4.2-1mdk + +2002-02-05 16:55 Fançois Pons + + * rpmtools.pm, rpmtools.spec: 4.1-4mdk + +2002-01-30 11:45 Fançois Pons + + * rpmtools.pm, rpmtools.spec: 4.1-3mdk + +2002-01-24 09:39 Fançois Pons + + * rpmtools.spec, rpmtools.xs: 4.1-2mdk + +2002-01-22 18:39 Fançois Pons + + * Makefile, gendistrib, rpmtools.pm, rpmtools.spec: new 4.1 + version. + +2002-01-17 12:01 Fançois Pons + + * parsehdlist.c, rpmtools.spec, rpmtools.xs: 4.0-7mdk + +2002-01-17 10:05 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: 4.0-6mdk + +2002-01-16 18:21 Fançois Pons + + * rpmtools.pm, rpmtools.spec: 4.0-5mdk + +2002-01-15 17:08 Fançois Pons + + * parsehdlist.c, rpmtools.pm, rpmtools.spec: 4.0-4mdk + +2002-01-10 09:27 Fançois Pons + + * rpmtools.pm, rpmtools.spec: fixed stupid bug in read_hdlist. + +2002-01-09 16:32 Fançois Pons + + * gendistrib, rpmtools.pm, rpmtools.spec: first snapshot candidate + for first alpha of 8.2. + +2001-12-05 16:42 Fançois Pons + + * Makefile, gendistrib, rpmtools.pm, rpmtools.spec, rpmtools.xs: + 4.0 release (changes of provides internally). + +2001-12-05 14:42 Fançois Pons + + * parsehdlist.c: fixed bad alloca size. + +2001-12-05 11:24 Fançois Pons + + * Makefile, parsehdlist.c, rpmtools.pm, rpmtools.spec: 3.2 for + newer urpmi. + +2001-11-26 17:46 Fançois Pons + + * rpmtools.pm, rpmtools.spec: fixes for alpha. + +2001-11-26 16:54 Fançois Pons + + * rpmtools.pm, rpmtools.spec: fixed compss file reading. + +2001-11-16 14:01 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-11-16 09:32 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-11-14 20:15 Fançois Pons + + * rpmtools.spec: new release. + +2001-11-14 20:14 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-11-14 20:11 Fançois Pons + + * parsehdlist.c: fixed core dump when name is given with other + argument on some case. + changed --name behaviour to give filename along with fullname. + +2001-08-09 16:47 Pixel <pixel at mandriva.com> + + * rpmtools.spec: *** empty log message *** + +2001-07-25 15:12 Fançois Pons + + * Makefile: avoid using version_compare. + +2001-07-25 14:59 Fançois Pons + + * Makefile.PL, rpmtools.pm, rpmtools.spec, rpmtools.xs: use rpmlib + version comparison function, force destiny. + +2001-07-23 15:15 Fançois Pons + + * Makefile, rpmtools.pm, rpmtools.spec, rpmtools.xs: first 3.1 + major relase, with fullname in info hash. + +2001-07-21 10:34 Warly <warly at mandriva.com> + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: add sourcerpm tag + +2001-07-18 12:50 Fançois Pons + + * Makefile, Makefile.PL, rpmtools.spec: new release with new rpm. + +2001-07-05 13:32 Fançois Pons + + * rpmtools.pm, rpmtools.spec: added compute_id method. + +2001-07-02 12:39 Fançois Pons + + * parsehdlist.c, rpmtools.spec: added arch support for parsehdlist. + +2001-06-28 16:40 Fançois Pons + + * rpmtools.pm: dependencies is right. + +2001-06-28 15:42 Fançois Pons + + * rpmtools.pm, rpmtools.spec: cleaned rpmtools. + +2001-06-27 15:18 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-06-27 09:53 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-06-26 15:10 Fançois Pons + + * rpmtools.pm, rpmtools.spec: fixes for bad behaviour of + build_hdlist. + added better relocation code. + +2001-06-25 12:55 Fançois Pons + + * rpmtools.spec: late time fix. + +2001-06-25 12:54 Fançois Pons + + * rpmtools.pm: updated to use @ separator char instead of : in + provides file. + +2001-06-25 11:54 Fançois Pons + + * rpmtools.spec: fix version_compare 3.0-2mdk + +2001-06-25 11:49 Fançois Pons + + * rpmtools.pm: fix version compare for string like "0.beta4" + compared to "0.rc1", the latest + should be the greatest on comparing "beta" and "rc". + +2001-06-21 16:25 Fançois Pons + + * Makefile, Makefile.PL, parsehdlist.c, rpmtools.pm, + rpmtools.spec, rpmtools.xs: new 3.0 release, see rpmtools.spec. + +2001-06-14 08:59 Fançois Pons + + * Makefile, Makefile.PL, rpmtools.spec: *** empty log message *** + +2001-06-06 13:34 Fançois Pons + + * rpmtools.pm, rpmtools.spec: fix ordering of packages to avoid + some nasty loop in prerequisite chain + as for GConf and libGConf currently. + +2001-05-22 13:36 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: added arch support. + +2001-04-16 16:47 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-04-16 16:46 Fançois Pons + + * parsehdlist.c: added back kill to child process as some report + of locking ? + +2001-04-14 14:27 Fançois Pons + + * rpmtools.spec: final for 8.0 ? + +2001-04-14 14:23 Fançois Pons + + * rpmtools.pm: fixed absurd mismatch of use <=> and cmp. + +2001-04-14 11:55 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-04-14 11:52 Fançois Pons + + * parsehdlist.c: fixed interactive mode with provides tag to + return flags and version, + commented print_list no more used. + +2001-04-14 11:47 Fançois Pons + + * parsehdlist.c: simplified header construction and fixed + --compact to match exactly what + is needed for synthesis file. + +2001-04-12 12:58 Fançois Pons + + * packdrake.pm, rpmtools.spec: *** empty log message *** + +2001-04-03 12:50 Fançois Pons + + * parsehdlist.c, rpmtools.pm, rpmtools.spec: *** empty log message + *** + +2001-03-26 15:14 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-03-26 13:39 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-03-23 14:20 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-03-23 14:14 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: *** empty log message + *** + +2001-03-23 13:37 Fançois Pons + + * parsehdlist.c: added --compact option to help producing + synthesis file (need s/:/@/g). + +2001-03-23 13:36 Fançois Pons + + * rpmtools.xs: try to be cleaner for subscript but not enough. + +2001-03-23 13:35 Fançois Pons + + * rpmtools.pm: workarount hashes subscript error of perl. + * rpmtools.spec: 2.3-13mdk. + +2001-03-12 15:25 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-03-12 15:21 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-03-12 15:20 Fançois Pons + + * packdrake.pm, parsehdlist.c, rpmtools.spec: *** empty log + message *** + +2001-03-12 14:02 Frederic Lepied <flepied at mandriva.com> + + * Makefile.PL: don't link explicitly with db libs. + +2001-03-08 17:15 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-03-07 15:34 Fançois Pons + + * parsehdlist.c, rpmtools.spec: *** empty log message *** + +2001-03-05 13:40 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-03-04 18:22 Warly <warly at mandriva.com> + + * Makefile: add db1 and db-3.1 to the static build for + rpm2header_static + +2001-03-01 17:06 Fançois Pons + + * gendistrib, rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-02-27 17:05 Fançois Pons + + * gendistrib, rpmtools.spec: *** empty log message *** + +2001-02-26 15:06 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-02-19 16:45 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: *** empty log message + *** + +2001-02-19 14:56 Fançois Pons + + * rpmtools.pm, rpmtools.spec, rpmtools.xs: *** empty log message + *** + +2001-02-16 13:00 Fançois Pons + + * parsehdlist.c, rpmtools.spec, rpmtools.xs: *** empty log message + *** + +2001-02-14 13:29 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-02-14 13:20 Fançois Pons + + * Makefile, rpmtools.pm, rpmtools.spec, rpmtools.xs: *** empty log + message *** + +2001-02-13 15:01 Fançois Pons + + * Makefile, rpmtools.pm, rpmtools.spec, rpmtools.xs: added faster + method to rpmtools.xs, fixed code and added exit too. + +2001-01-30 17:47 Fançois Pons + + * rpmtools.spec: *** empty log message *** + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2001-01-23 19:30 Fançois Pons + + * rpmtools.spec: 2.1-9mdk + +2001-01-23 19:20 Fançois Pons + + * gendistrib: updated to use new build_hdlist. + +2001-01-23 19:18 Fançois Pons + + * packdrake, packdrake.pm, rpmtools.pm, rpmtools.spec: added --dir + and -d flag for packdrake*. + management of specific directory for building archive. + +2001-01-22 17:35 Fançois Pons + + * rpmtools.pm: added base selection in choices, for glibc. + so when glibc or compat-glibc are required, only glibc is + requested. + +2001-01-22 12:53 Fançois Pons + + * genhdlists: modified to use rpmtools module. + +2001-01-17 15:51 Fançois Pons + + * Makefile: added gendistrib and removed obsolete tools. + +2001-01-17 15:50 Fançois Pons + + * gendistrib: initial revision. + +2001-01-17 15:47 Fançois Pons + + * rpmtools.pm: fixed volative current working directory in + build_hdlist + and use of noclean options. + +2001-01-17 15:46 Fançois Pons + + * rpmtools.spec: added gendistrib in %files and removed + genhdlists, genhdlist_cz2 and genbasefiles. + +2001-01-17 15:45 Fançois Pons + + * rpmtools.spec: 2.1-8mdk + +2001-01-16 16:40 Fançois Pons + + * packdrake.pm: fixed use of white space in archive name. + +2001-01-16 16:39 Fançois Pons + + * parsehdlist.c: added --output options. + * rpmtools.pm: add build_hdlist method. + increase version to 0.03. + +2001-01-16 16:38 Fançois Pons + + * rpmtools.spec: 2.1-7mdk snapshot. + +2001-01-05 15:54 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2001-01-05 15:24 Fançois Pons + + * packdrake.pm: really fixe exit in child process (when used with + DrakX, exit is not allowed) + +2001-01-05 14:40 Fançois Pons + + * packdrake.pm: changed exit by exec 'true' + +2001-01-05 10:54 Fançois Pons + + * packdrake.pm: fixed printing to STDOUT while extracting (usefull + if extracting to STDOUT :-) + +2001-01-04 18:36 Fançois Pons + + * parsehdlist.c: removed need of packdrake, so live update will be + nicer + +2001-01-04 15:20 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-12-08 15:50 Fançois Pons + + * packdrake, packdrake.pm, parsehdlist.c, rpmtools.pm, + rpmtools.spec, rpmtools.xs: *** empty log message *** + +2000-11-23 18:14 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-11-23 18:12 Fançois Pons + + * parsehdlist.c: fixed memory leaks that were causing problems if + used interactively. + +2000-11-23 18:11 Fançois Pons + + * rpmtools.pm: fixed deadlock in some case on version_compare. + +2000-11-20 18:47 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-11-20 18:46 Fançois Pons + + * parsehdlist.c: removed extra log on stdout (killer this one) + +2000-11-20 17:17 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-11-20 17:15 Fançois Pons + + * Makefile, parsehdlist.c: fixed big bug for execvl (thanks to + francis) + +2000-11-20 16:32 Fançois Pons + + * parsehdlist.c: added fflush after (avoid deadock with DrakX) + +2000-11-20 15:25 Fançois Pons + + * Makefile: *** empty log message *** + +2000-11-20 14:44 Fançois Pons + + * Makefile, rpmtools.spec: *** empty log message *** + +2000-11-20 14:12 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-11-20 13:59 Fançois Pons + + * parsehdlist.c: adding interactive mode for DrakX client/server + approach. + +2000-11-16 16:28 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2000-11-15 13:25 Pixel <pixel at mandriva.com> + + * rpmtools.spec: *** empty log message *** + +2000-10-19 15:28 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2000-10-19 12:26 Frederic Lepied <flepied at mandriva.com> + + * rpm-find-leaves.c, rpmtools.xs: use iterators. + * rpmtools.spec: 2.0-1mdk + +2000-10-19 12:25 Frederic Lepied <flepied at mandriva.com> + + * Makefile, Makefile.PL: added new lib for rpm. + +2000-09-15 10:55 Pixel <pixel at mandriva.com> + + * ChangeLog, build_archive, genhdlist_cz2, packdrake, + rpmtools.spec: use TMPDIR if available + +2000-09-04 16:41 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2000-09-03 17:28 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-09-03 17:18 Fançois Pons + + * rpmtools.pm: *** empty log message *** + +2000-09-03 17:03 Fançois Pons + + * genbasefiles, rpmtools.pm, rpmtools.spec: *** empty log message + *** + +2000-09-03 14:43 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2000-08-29 15:50 Fançois Pons + + * rpmtools.pm, rpmtools.spec: *** empty log message *** + +2000-08-29 13:51 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-08-29 12:35 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-08-28 15:00 Fançois Pons + + * packdrake: *** empty log message *** + +2000-08-28 10:24 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-08-28 08:58 Fançois Pons + + * Makefile, Makefile.PL, rpmtools.spec: *** empty log message *** + +2000-08-25 15:33 Fançois Pons + + * Makefile, rpmtools.pm: *** empty log message *** + +2000-08-25 14:49 Fançois Pons + + * Makefile, Makefile.PL, genbasefiles, rpmtools.pm, rpmtools.spec, + rpmtools.xs: *** empty log message *** + +2000-08-24 16:20 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-08-24 16:13 Fançois Pons + + * parsehdlist.c: *** empty log message *** + +2000-08-24 16:04 Fançois Pons + + * ChangeLog, Makefile, gendepslist2.cc, genhdlist_cz2, + rpm2header.c, rpmtools.spec: *** empty log message *** + +2000-08-11 17:18 Fançois Pons + + * packdrake: *** empty log message *** + +2000-08-05 18:03 Pixel <pixel at mandriva.com> + + * ChangeLog, gendepslist2.cc, rpmtools.spec: no_comment + +2000-07-27 18:23 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-07-27 18:01 Pixel <pixel at mandriva.com> + + * ChangeLog, gendepslist2.cc: no_comment + +2000-07-12 10:17 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-07-12 10:16 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-06-13 19:02 Pixel <pixel at mandriva.com> + + * ChangeLog, gendepslist2.cc, rpmtools.spec: no_comment + +2000-06-08 09:14 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-05-25 15:59 Fançois Pons + + * genhdlist_cz2: *** empty log message *** + +2000-05-22 18:44 Fançois Pons + + * build_archive, gendepslist2.cc, genhdlist_cz2: *** empty log + message *** + +2000-05-02 13:11 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-05-02 13:02 Fançois Pons + + * extract_archive: *** empty log message *** + +2000-05-02 12:52 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-04-28 02:56 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: *** empty log message *** + +2000-04-20 18:48 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-04-20 18:45 Fançois Pons + + * build_archive, extract_archive, genfilelist, rpmtools.spec: *** + empty log message *** + +2000-04-19 12:42 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: no_comment + +2000-04-19 12:38 Fançois Pons + + * rpmtools.spec: *** empty log message *** + +2000-04-17 12:35 Pixel <pixel at mandriva.com> + + * extract_archive, genhdlists, rpmtools.spec: no_comment + +2000-04-14 19:50 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-04-14 10:02 Fançois Pons + + * genhdlists: *** empty log message *** + +2000-04-04 13:08 Fançois Pons + + * genfilelist: *** empty log message *** + +2000-04-04 11:14 Fançois Pons + + * ChangeLog, extract_archive: *** empty log message *** + +2000-03-31 16:40 Fançois Pons + + * genfilelist: *** empty log message *** + +2000-03-31 15:05 Fançois Pons + + * Makefile, rpmtools.spec: *** empty log message *** + +2000-03-31 14:41 Pixel <pixel at mandriva.com> + + * gendepslist2.cc, hdlist2groups.cc, rpmtools.spec: no_comment + +2000-03-31 14:40 Pixel <pixel at mandriva.com> + + * ChangeLog: *** empty log message *** + +2000-03-31 14:37 Fançois Pons + + * ChangeLog, genfilelist, rpmtools.spec: *** empty log message *** + +2000-03-27 22:59 Pixel <pixel at mandriva.com> + + * Makefile, hdlist2names.cc, rpmtools.spec: no_comment + +2000-03-26 17:24 Pixel <pixel at mandriva.com> + + * ChangeLog, build_archive, gendepslist2.cc, rpmtools.spec: + no_comment + +2000-03-25 12:58 Pixel <pixel at mandriva.com> + + * rpmtools.spec: no_comment + +2000-03-24 14:29 Pixel <pixel at mandriva.com> + + * gendepslist2.cc, genhdlist_cz2, rpmtools.spec: no_comment + +2000-03-23 12:24 Fançois Pons + + * genhdlist_cz2: *** empty log message *** + +2000-03-23 12:20 Pixel <pixel at mandriva.com> + + * Makefile, gendepslist2.cc, genhdlist_cz2, rpmtools.spec: + no_comment + +2000-03-10 15:44 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: *** empty log message *** + +2000-03-10 15:38 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: *** empty log message *** + +2000-03-10 15:34 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: *** empty log message *** + +2000-03-10 14:39 Pixel <pixel at mandriva.com> + + * gendepslist2.cc: *** empty log message *** + +2000-03-10 14:34 Pixel <pixel at mandriva.com> + + * Makefile, gendepslist2.cc: no_comment + +2000-03-10 13:44 Pixel <pixel at mandriva.com> + + * gendepslist2.cc, rpmtools.spec: no_comment + +2000-03-10 12:36 Fançois Pons + + * ChangeLog, Makefile, genhdlists: *** empty log message *** + +2000-03-07 23:37 Pixel <pixel at mandriva.com> + + * build_archive, extract_archive, gendepslist2.cc, genhdlist_cz2, + hdlist2prereq.cc, rpmtools.spec: no_comment + +2000-03-07 23:36 Pixel <pixel at mandriva.com> + + * Makefile, rpmtools.spec: no_comment + +2000-03-07 23:32 Pixel <pixel at mandriva.com> + + * Makefile, gendepslist.cc, hdlist2files.cc, rpmtools.spec: + no_comment + +2000-02-23 17:49 Chmouel Boudjnah + + * ChangeLog, rpmtools.spec: "See_The_Changelog" + +2000-02-18 19:27 Chmouel Boudjnah + + * ., .cvsignore, ChangeLog, rpmtools.spec: "See_The_Changelog" + +2000-02-18 17:21 Frederic Lepied <flepied at mandriva.com> + + * gendepslist.cc, hdlist2files.cc: * new way to retrieve file + names in 3.0.4. + +2000-02-18 17:19 Frederic Lepied <flepied at mandriva.com> + + * rpm2header.c: * close files ! + * don't dup many times. + +2000-02-17 18:05 Chmouel Boudjnah + + * ChangeLog, Makefile, rpmtools.spec: "See_The_Changelog" + +2000-02-17 17:58 Chmouel Boudjnah + + * Makefile, gendepslist.cc, hdlist2files.cc, hdlist2names.cc, + rpm-find-leaves.c, rpm2header.c, rpmtools.spec: Initial revision + +2000-02-17 17:58 + + * soft/rpm/rpmtools/branches, soft/rpm/rpmtools/tags, .: New + repository initialized by cvs2svn. + diff --git a/MANIFEST b/MANIFEST new file mode 100644 index 0000000..b33d015 --- /dev/null +++ b/MANIFEST @@ -0,0 +1,12 @@ +ChangeLog +dumpdistribconf +editdistrib +gendistrib +genhdlist-old +genhdlist2 +Makefile.PL +MANIFEST +NEWS +packdrake +packdrake.pm +t/01packdrake.t diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..a8a47fb --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,55 @@ +# $Id: Makefile.PL 251926 2009-01-20 15:24:15Z pixel $ + +use strict; +use ExtUtils::MakeMaker; + +my $rpmtools_version = "5.9"; + +# where to find the rpm utility + +sub MY::postamble { + <<MAKEMAKEFILE; +.PHONY: ChangeLog + +cleanc: + rm -rf *.cz test + +ChangeLog: + LC_ALL=C svn2cl --accum --strip-prefix=soft/rpm/rpmtools/trunk + rm -f *.bak + +MAKEMAKEFILE +} + +WriteMakefile( + NAME => 'rpmtools', + VERSION => $rpmtools_version, + macro => { + RPMTOOLSVERSION => $rpmtools_version, + }, + depend => { + clean_subdirs => 'cleanc', + }, + PM => { + 'packdrake.pm' => '$(INST_LIBDIR)/packdrake.pm', + }, + EXE_FILES => [ qw(gendistrib genhdlist-old genhdlist2 packdrake dumpdistribconf) ], + C => [], + OBJECT => '', + CCFLAGS => '-Wall', + INC => '', + LIBS => [ '' ], + INSTALLDIRS => 'vendor', + MAN1PODS => { + dumpdistribconf => '$(INST_MAN1DIR)/dumpdistribconf.1', + gendistrib => '$(INST_MAN1DIR)/gendistrib.1', + 'genhdlist-old' => '$(INST_MAN1DIR)/genhdlist-old.1', + genhdlist2 => '$(INST_MAN1DIR)/genhdlist2.1', + packdrake => '$(INST_MAN1DIR)/packdrake.1', + }, + MAN3PODS => {}, + dist => { + COMPRESS => 'bzip2 --best', + SUFFIX => '.bz2', + }, +); @@ -0,0 +1,84 @@ +Version ?.? - ? ? 2009, by ? +- add support for custom compression filter used for xml-info & synthesis. + +Version 5.9 - 20 January 2008, by Pascal "Pixel" Rigaux + +- drop parsehdlist, rpm2header: unused, partially duplicated with perl-URPM +- drop rpm2cpio.pl (doesn't handle lzma payload which is the default) + +Version 5.8 - 30 September 2008, by Pascal "Pixel" Rigaux + +- gendistrib: + o don't call genhdlist2 with --no-md5sum for no good reason + +Version 5.7 - 23 September 2008, by Pascal "Pixel" Rigaux + +- genhdlist2: + o with --versioned, create "versioned" metadata + o add xml header to xml files generated +- gendistrib: + o if "xml-info" is set in media.cfg, pass --xml-info to genhdlist2 +- parsehdlist, rpm2header + o fix support for rpm5 + o update deprecated code +- genhdlist-old + o genhdlist is now renamed as genhdlist-old + +Version 5.6 - 18 March 2008, by Pascal "Pixel" Rigaux + +- gendistrib: + o "askmedia" and "suppl" must not modify gendistrib behaviour (#39017) + +Version 5.5 - 5 March 2008, by Pascal "Pixel" Rigaux + +- genhdlist2: + o use utf8:: functions instead of Encode + (to be able to work with only perl base modules) +- parsehdlist, rpm2header: + o add support for rpm5 + +Version 5.4 - 26 February 2008, by Pascal "Pixel" Rigaux + +- parsehdlist, rpm2header: + o do not add/use FILENAME_TAG and FILESIZE_TAG to/in hdlist anymore + +Version 5.3.6 - 5 February 2007, by Pascal "Pixel" Rigaux + +- genhdlist2: + o fix writing utf8 in xml info files (#37482) + +Version 5.3.5 - 15 January 2007, by Pascal "Pixel" Rigaux + +- genhdlist2: + o rename --xml-media-info into --xml-info + (to be coherent with urpmi) + +Version 5.3.4 - 18 December 2007, by Pascal "Pixel" Rigaux + +- genhdlist2: + o add --no-hdlist option (to be used by urpmi for --probe-rpms) + +Version 5.3.3 - 17 December 2007, by Pascal "Pixel" Rigaux + +- genhdlist2: + o generate {info,changelog,files}.xml.lzma when they already exist, + or when --xml-media-info is used + o error message when parse_hdlist (partially) fail + o handle old-rpms.lst (to be generated by youri) + which will allow keeping rpms for some time without having in hdlist + (useful for installs which expect the pkgs to be in sync in hdlist during + the full install time) + it will also allow keeping deprecated packages for some time + +Version 5.3.2 - 22 June 2007, by Pascal "Pixel" Rigaux + +- genhdlist2: + o add --allow-empty-media + o fix MD5SUM generation + o allow using this script with perl-URPM 1.47 (ie mdv2007.0) +- gendistrib: + o call genhdlist2 instead of doing things here + o media/media_info/hdlist_xxx_yyy.cz is now a symlink to media/xxx/yyy/media_info/hdlist.cz + o synthesis.hdlist_xxx_yyy.cz and pubkey_xxx_yyy are also symlinks now +- parsehdlist: + o display pkgsize with --all (Christiaan Welvaart) diff --git a/dumpdistribconf b/dumpdistribconf new file mode 100755 index 0000000..d05bb27 --- /dev/null +++ b/dumpdistribconf @@ -0,0 +1,75 @@ +#!/usr/bin/perl + +(our $VERSION) = q$Id: dumpdistribconf 12157 2005-11-15 11:22:04Z rgarciasuarez $ =~ /(\d+\.\d+)/; + +use strict; +use Getopt::Long; +use MDV::Distribconf::Build; +use Pod::Usage; + +sub usage () { + pod2usage({ -verbose => 1 }); + exit 0; +} + +my ($out, $outputtype) = (\*STDOUT, 'm'); +GetOptions( + s => sub { $outputtype = 's' }, + m => sub { $outputtype = 'm' }, + d => sub { undef $out }, + 'v|version' => sub { warn "$0 version $VERSION\n"; exit 0 }, + 'h|help' => \&usage, +); + +@ARGV or usage; + +foreach (@ARGV) { + warn "Using root $_...\n"; + my $d = MDV::Distribconf::Build->new($_); + $d->load or do { + warn "Can't load configuration from $_\n"; + next; + }; + if ($outputtype eq 's') { + $d->write_hdlists($out) or warn "Can't write hdlists file\n"; + } else { + $d->write_mediacfg($out) or warn "Can't write media.cfg file\n"; + } +} + +__END__ + +=head1 NAME + +dumpdistribconf - dumps a media.cfg from a distribution tree + +=head1 SYNOPSIS + + dumpdistribconf [-s|-m] [-d] path [path...] + +=head1 DESCRIPTION + +This will dump a F<media.cfg> (or an F<hdlists> file if B<-s> is +specified) from a Mandriva Linux distribution tree. By default +it's dumped to the standard output. + +=head1 OPTIONS + +=over 4 + +=item B<-s> + +Dump an F<hdlists> file. + +=item B<-m> + +Dump a F<media.cfg> file (default) + +=item B<-d> + +Instead of writing to the standard output, write to a file placed in the +standard location (e.g. F<< <root>/media/media_info/media.cfg >>). + +=back + +=cut diff --git a/editdistrib b/editdistrib new file mode 100755 index 0000000..a143810 --- /dev/null +++ b/editdistrib @@ -0,0 +1,256 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use MDV::Distribconf::Build; +use Term::ReadLine; +use Text::ParseWords; +use Getopt::Long; + +(our $VERSION) = q$Id: editdistrib 12165 2005-11-16 14:28:27Z rgarciasuarez $ =~ /(\d+\.\d+)/; + +my @distribs; + +# list of available commands +# name => coderef + +my $commands = { + + load => sub { + my ($param, @path) = @_; + if ($param->{current}{help}) { + print "unload path1 [path2 [...]]\n"; + print "Try to load distrib configuration from given path\n"; + return; + } + foreach (@path) { + my $dbuild = MDV::Distribconf::Build->new($_); + $dbuild->load() or do { + print STDERR "Can't load distrib from $_\n"; + next; + }; + push(@distribs, $dbuild); + } + }, + + unload => sub { + my ($param, @ids) = @_; + if ($param->{current}{help}) { + print "unload ID1 [ID2 [...]]\n"; + print "Unload tree\n"; + return; + } + my @new; + foreach my $id (0 .. $#distribs) { + grep { $id == $_ } @ids and next; + push(@new, $distribs[$id]); + } + @distribs = @new; + $param->{selected} = undef; + }, + + list => sub { + my ($param) = @_; + if ($param->{current}{help}) { + print "list current load distrib tree\n"; + return; + } + foreach (0 .. $#distribs) { + my $d = $distribs[$_]; + printf "%3d %s\n", $_, $d->getpath(undef, "root"); + } + }, + + show => sub { + my ($param) = shift(@_); + local @ARGV = @_; + GetOptions( + 'm=s' => \my @medias, + 'a' => \my $allmedia, + ); + + if ($param->{current}{help}) { + print "show [-m medianame [-m ...]] [-a] value\n"; + print "show a value for each distrib\n"; + print " -a list a value for all media\n"; + print " -m show the value only for given media\n"; + print "Default action is to give the global value\n"; + return; + } + + foreach (@{$param->{distrib}}) { + my $d = $distribs[$_]; + printf "%3d %s\n", $_, $d->getpath(undef, "root"); + my $m; + + if ($allmedia) { + $m = [ $d->listmedia ]; + } elsif (@medias) { + $m = \@medias; + } + if ($m) { + foreach my $med (@{$m}) { + foreach my $var (@ARGV) { + printf + " %10s [%10s]: %s\n", + $var, + $med ? $med : "(global)", + $d->getvalue($med, $var); + } + } + } else { + foreach my $var (@ARGV) { + printf + " %10s: %s\n", + $var, + $d->getvalue(undef, $var); + } + } + } + }, + + addmedia => sub { + my ($param, $m, $name) = @_; + foreach (@{$param->{distrib}}) { + $distribs[$_]->setvalue($m); + } + }, + + delmedia => sub { + my ($param, $m) = @_; + foreach (@{$param->{distrib}}) { + $distribs[$_]->delvalue($m); + } + }, + + sel => sub { + my $param = shift(@_); + local @ARGV = @_; + GetOptions( + e => \my $empty, + ); + if ($empty) { + $param->{selected} = {}; + } + + foreach (@ARGV) { + if ($_ < 0 || $_ > $#distribs) { + next; + } + $param->{selected}{$_} = 1; + } + }, + + set => sub { + my $param = shift(@_); + local @ARGV = @_; + GetOptions( + 'm=s' => \my $media, + 'a' => \my $allmedia, + ); + my ($var, $val) = @ARGV; + foreach my $d (@{$param->{distrib}}) { + if ($media || $allmedia) { + foreach my $m ($distribs[$d]->listmedia) { + if ($media && $m ne $media) { + next; + } + $distribs[$d]->setvalue($m, $var, $val); + } + } else { + $distribs[$d]->setvalue(undef, $var, $val); + } + } + }, + + del => sub { + my $param = shift(@_); + local @ARGV = @_; + GetOptions( + 'm=s' => \my $media, + 'a' => \my $allmedia, + ); + my ($var) = @ARGV; + foreach my $d (@{$param->{distrib}}) { + if ($media || $allmedia) { + foreach my $m ($distribs[$d]->listmedia) { + if ($media && $m ne $media) { + next; + } + $distribs[$d]->delvalue($m, $var); + } + } else { + $distribs[$d]->delvalue(undef, $var); + } + } + }, + + check => sub { + my $param = shift(@_); + local @ARGV = @_; + GetOptions( + ); + + foreach my $d (@{$param->{distrib}}) { + printf "%3d %s\n", $d, $distribs[$d]->getpath(undef, "root"); + $distribs[$d]->check(); + } + }, + + save => sub { + my $param = shift(@_); + local @ARGV = @_; + GetOptions( + ); + foreach my $d (@{$param->{distrib}}) { + $distribs[$d]->write_mediacfg(); + } + }, + + quit => sub { exit(0) }, + version => sub { print "version: $VERSION\n" }, + +}; + + +$commands->{load}->(undef, @ARGV); + +my $session_param; +my $term = new Term::ReadLine 'editdistrib'; +my $prompt = '(all) > '; +while ( defined ($_ = $term->readline($prompt)) ) { + local @ARGV = &shellwords($_); + my $command = shift(@ARGV); + $command ||= ""; # avoid undef + + if ($command eq 'help') { + print "Available commands:\n "; + print join(' ', sort keys %$commands) . "\n"; + next; + } + + $session_param->{current} = {}; + my $gl = new Getopt::Long::Parser config => [ qw(pass_through no_auto_abbrev) ]; + $gl->getoptions( + all => \$session_param->{current}{all}, + 'h|help' => \$session_param->{current}{help}, + ); + + + if ($session_param->{current}{all} || ! $session_param->{selected}) { + @{$session_param->{distrib}} = (0 .. $#distribs); + } else { + @{$session_param->{distrib}} = keys %{$session_param->{selected}}; + } + + if (defined($commands->{$command})) { + $commands->{$command}->($session_param, @ARGV); + } else { + print STDERR "Unknown command '$command'\n"; + } + + $prompt = sprintf("(%s) > ", + $session_param->{selected} ? join(' ', sort keys %{$session_param->{selected}}) : "all"); + +} diff --git a/gendistrib b/gendistrib new file mode 100755 index 0000000..a480f62 --- /dev/null +++ b/gendistrib @@ -0,0 +1,396 @@ +#!/usr/bin/perl + +(our $VERSION) = q(Id: gendistrib 20724 2006-11-30 13:13:27Z rafael ) =~ /(\d+)/; + +use strict; +use MDV::Distribconf::Build; +use Getopt::Long; + +sub usage () { + require Pod::Usage; + Pod::Usage::pod2usage({ '-verbose' => 1 }); + exit 0; +} + +my %urpmfiles; +my %old; + +GetOptions( + 'blind' => \my $blind, + 'clean' => \my $clean, + 'hdlists=s' => \$urpmfiles{hdlists}, + 'help|h' => \&usage, + 'mediacfg=s' => \$urpmfiles{mediacfg}, + 'nobadrpm' => \my $nobadrpm, + 'noemptymedia' => \my $noemptymedia, + 'nomd5sum' => \my $nomd5sum, + 'skipmissingdir' => \my $skipmissingdir, + 's' => \my $nooutput, + 'v|version' => sub { warn "$0 version $VERSION\n"; exit 0 }, + +# old stuff + 'chkdep' => \$old{chkdep}, + 'compss=s' => \$old{compss}, + 'depslist=s' => \$old{depslist}, + 'noclean' => \$old{noclean}, + 'provides=s' => \$old{provides}, + 'headersdir=s' => \$old{headersdir}, + 'nomediainfo' => \$old{nomediainfo}, +); + +foreach (qw(chkdep compss depslist noclean headersdir provides nomediainfo)) { + $old{$_} and warn "--$_ is obsolete (not used anymore)\n"; +} + +@ARGV == 1 or usage(); +my ($root) = @ARGV; + +my $distrib = MDV::Distribconf::Build->new($root); + +$distrib->loadtree or die "$root does not seem to be a distribution tree\n"; + +if (defined($urpmfiles{mediacfg})) { + $distrib->parse_mediacfg($urpmfiles{mediacfg}) or die "Can't read $urpmfiles{mediacfg}\n"; +} elsif (defined($urpmfiles{hdlists})) { + $distrib->parse_hdlists($urpmfiles{hdlists}) or die "Can't read $urpmfiles{hdlists}\n"; +} else { + $distrib->parse_mediacfg || $distrib->parse_hdlists or die "Can't read the distrib config\n"; +} + +my $destinfodir = $distrib->getfullpath(undef, "infodir"); +$urpmfiles{version} = $distrib->getfullpath(undef, "VERSION"), + +# Error which are fatale +my @fatal = qw(SAME_INDEX); +push @fatal, 'MISSING_MEDIADIR' if !$skipmissingdir; +my @IGNORE = qw(MISSING_INDEX); +my @fatalerrors; # fatales error show at the end +$distrib->check(sub { + my %info = @_; + grep { $_ eq $info{errcode} } @IGNORE and next; + if (grep { $_ eq $info{errcode} } @fatal) { + push(@fatalerrors, "$info{level}: $info{message}"); + } else { + printf STDERR "$info{level}: $info{message}\n" unless $nooutput; + } + } +); + +if (@fatalerrors) { + printf STDERR <<EOF; + +A fatal error has been detected, continueing is likely to produce an invalid +tree. (Missing directories can be ignored with --skipmissingdir.) +Fix the error in media.cfg and retry: + +EOF + print STDERR "$_\n" foreach @fatalerrors; + print STDERR "\n"; + exit(1); +} + +my @hdlists; +foreach my $m ($distrib->listmedia) { + my $path = $distrib->getfullpath($m, 'path'); + -d $path or next; # this has been checked earlier + + push @hdlists, { + media => $m, + dir => $distrib->getpath($m, 'path'), + path => $path, + descr => $distrib->getvalue($m, 'name'), + hdlist2 => $distrib->getfullpath($m, 'hdlist'), + synthesis2 => $distrib->getfullpath($m, 'synthesis'), + pubkey2 => $distrib->getfullpath($m, 'pubkey'), + hdlist => "$path/media_info/hdlist.cz", + synthesis => "$path/media_info/synthesis.hdlist" . $distrib->getvalue($m, 'synthesis-suffix'), + pubkey => "$path/media_info/pubkey", + noneedrebuild => $blind || $clean ? 0 : $distrib->check_index_sync($m, 'formedia'), + }; +} + +if (!-d $destinfodir) { + mkdir $destinfodir, 0755 + or die qq(Can't create directory "$destinfodir": $!\n); +} + +my $infodir = $distrib->getfullpath(undef, 'infodir'); + +foreach my $d ($infodir, map { "$_->{path}/media_info" } @hdlists) { + if (! -d $d) { + mkdir $d, 0755 or die qq(Can't create directory "$d": $!\n); + } +} + +foreach my $e (@hdlists) { + if ($e->{dir} =~ /%{ARCH}/) { + die "sorry, %{ARCH} not supported anymore\n"; + } + @{$e->{files}} = glob("$root/$e->{dir}/*.rpm") or do { + print STDERR "unable to find rpm files in $e->{dir}\n" unless $nooutput; + next; + }; +} + +if ($noemptymedia) { + if (grep { @{$_->{files}} == 0 } @hdlists) { + die "Empty media were found, stopping\n"; + } +} + +my $synthesis_filter = $distrib->getvalue(undef, 'synthesis-filter'); +my $xml_info_filter = $distrib->getvalue(undef, 'xml-info-filter'); +foreach my $e (grep { !$_->{noneedrebuild} } @hdlists) { + print STDERR qq(building hdlist & synthesis for medium "$e->{descr}"\n) unless $nooutput; + my $file_deps = "$destinfodir/file-deps"; + my $options = join(' ', + '--allow-empty-media', + $nooutput ? '--quiet' : (), + $clean ? '--clean' : (), + $nobadrpm ? '--no-bad-rpm' : (), + $nomd5sum ? "--no-md5sum" : (), + $distrib->getvalue($e->{media}, 'xml-info') ? '--xml-info' : (), + $synthesis_filter ? "--synthesis-filter \'$synthesis_filter\'" : (), + $xml_info_filter ? "--xml-info-filter \'$xml_info_filter\'" : (), + -e $file_deps ? "--file-deps $file_deps" : (), + ); + my $cmd = "genhdlist2 $options $e->{path}"; + print "running $cmd\n" unless $nooutput; + system($cmd) == 0 or die "$cmd failed\n"; +} + +foreach my $e (@hdlists) { + hdlist_alternate_location($e->{hdlist2}, $e->{hdlist}); + hdlist_alternate_location($e->{synthesis2}, $e->{synthesis}); + $e->{pubkey2} =~ s/ /_/g; # workaround MDV::Distribconf issue + hdlist_alternate_location($e->{pubkey2}, $e->{pubkey}); +} + +if (grep { ! $_->{noneedrebuild} } @hdlists) { + + if (-f $destinfodir . '/media.cfg') { + if (! -f "$destinfodir/hdlists" || + (stat($distrib->getfullpath(undef, 'infodir') . '/media.cfg'))[9] > + (stat($destinfodir . '/hdlists'))[9]) { + print STDERR "Write hdlists file\n" unless $nooutput; + $distrib->write_hdlists($destinfodir . '/hdlists') + or print STDERR "Can't write $destinfodir/hdlists file\n"; + } + } +} +if (grep { !$_->{noneedrebuild} } @hdlists) { + unlink "$destinfodir/MD5SUM"; #- safety cleaning + unless ($nomd5sum) { + # this MD5SUM is mostly obsolete, but is still needed up to 2007.1 + # (and even on cooker for existing urpmi.cfg) + my $md5sum = `cd $destinfodir ; /usr/bin/md5sum hdlist_* synthesis*`; + open my $md5sumfh, '>', "$destinfodir/MD5SUM" or die "Can't create $destinfodir/MD5SUM: $!\n"; + print $md5sumfh $md5sum; + } + + print STDERR "Calculating size of medias\n" unless $nooutput; + foreach my $e (@hdlists) { + my $size = 0; + foreach (@{$e->{files} || []}) { + $size += (stat($_))[7]; + } + my $blk = 1; + my $showsize = $size; + my @unit = (' ', qw(k m g)); + while (@unit) { + my $u = shift(@unit); + if ($size / $blk < 1) { + last; + } + $showsize = sprintf('%d%s', $size / $blk, $u); + $blk *= 1024; + } + $distrib->setvalue($e->{media}, 'size', $showsize); + } + + print STDERR "Rewriting media.cfg file\n" unless $nooutput; + $distrib->write_mediacfg($urpmfiles{mediacfg}); + + print STDERR "Building version file\n" unless $nooutput; + $distrib->write_version($urpmfiles{version}); +} + +sub hdlist_alternate_location { + my ($alternate, $main) = @_; + + if (! -e $main) { + print STDERR "missing $main, not creating alternate location $alternate\n"; + } elsif (-l $alternate && inode($alternate) == inode($main)) { + # ok + } else { + if (-l $alternate) { + print STDERR "bad alternate location " . readlink($alternate) . ", replacing it\n"; + unlink $alternate; + } elsif (-e $alternate) { + print STDERR "replacing existing plain file $alternate with a symlink\n"; + unlink $alternate; + } + print STDERR qq(link alternate location $alternate\n) unless $nooutput; + relative_symlink($main, $alternate); + } +} + +sub inode { + my ($f) = @_; + (stat($f))[1]; +} + +sub relative_symlink { + my ($src, $dest) = @_; + + # cleanup + foreach ($src, $dest) { + s!//!/!g; + s!/\./!/!g; + } + + my @src = split('/', $src); + my @dest = split('/', $dest); + pop @dest; + + while (@src && @dest && $src[0] eq $dest[0]) { + shift @src; + shift @dest; + } + symlink join('/', ('..') x @dest, @src), $dest; +} + +__END__ + +=head1 NAME + +gendistrib - generates a mirror tree for a distribution + +=head1 SYNOPSIS + + gendistrib [options] directory + +=head1 OPTIONS + +=over 4 + +=item --blind + +Always rebuild indexes, without checking whether it's needed. + +=item --clean + +Force rebuild of indexes from scratch. + +=item --hdlists file + +Path of the F<hdlists> file (defaults to F<media/media_info/hdlists>). This is +deprecated; if gendistrib finds a F<media.cfg> file, it will use it and ignore +the F<hdlists> file unless this option is given. + +=item --mediacfg file + +Use the specified F<media.cfg> file (defaults to F<media/media_info/media.cfg>). + +=item --nobadrpm + +Don't abort when encountering bad rpms. + +=item --noemptymedia + +Stop and abort if an empty media is found. + +=item --nomd5sum + +Don't generate MD5SUM files. + +=item --skipmissingdir + +If a media dir is missing, ignore it instead of aborting. + +=item -s + +Silent mode. + +=back + +=head1 DESCRIPTION + +F<gendistrib> is a tool that helps to generate the structure of a Mandriva +RPM repository, compatible with Mandriva tools (F<urpmi>, F<rpmdrake>, +etc.) + +=head2 General Structure of a Repository + +A typical repository, under a root directory F</ROOT/>, has the following +structure: + + ROOT/ - media/ + |- contrib/ + | `- media_info/ + |- main/ + | `- media_info/ + `- media_info/ + +In this example, we have two media, called I<main> and I<contrib>. The +RPMs packages are placed in the F<main> and F<contrib> subdirectories. +Repository metadata is contained in the top-level F<media_info> directory. +Per-media metadata are contained in the F<main/media_info> and +F<contrib/media_info> subdirectories. + +=head2 Configuration of the distribution tree + +Before using F<gendistrib>, you must create a file F<media_info/media.cfg> +to describe your repository. (An empty file will work, but this isn't +recommended.) The syntax of this file is reminiscent of F<.ini> files. + +A first section C<[media_info]> contains global information about the +repository: + + [media_info] + version=2006.0 + branch=Cooker + arch=i586 + +Then, supply one section per media. + + [main] + hdlist=hdlist_main.cz + name=Main + +Here, the C<hdlist> parameter specifies what will be the name of the +hdlist file in the top-level F<media_info> directory. C<name> is a human +readable label for the media. + +=head2 Operation + +F<gendistrib> should be passed the F<ROOT> directory as parameter. It will +then generate the hdlist and synthesis files and all other files needed +for proper repository operation. + +=head1 SEE ALSO + +genhdlist2(1), and MDV::Distribconf(3) for description of the format of the +F<media.cfg> file. + +=head1 COPYRIGHT + +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 MandrakeSoft SA + +Copyright (C) 2005, 2006 Mandriva SA + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=cut diff --git a/genhdlist-old b/genhdlist-old new file mode 100644 index 0000000..ec1e21e --- /dev/null +++ b/genhdlist-old @@ -0,0 +1,193 @@ +#!/usr/bin/perl + +(our $VERSION) = q$Id: genhdlist-old 246205 2008-09-22 07:58:49Z pixel $ =~ /(\d+\.\d+)/; + +use strict; +use URPM; +use URPM::Build; +use File::Find (); +use File::Path; +use Getopt::Long; +use Pod::Usage; +use File::Temp qw(tempdir); + +my ($nooutput, $nobadrpm, $md5sum, $subdir, $suffix, $dest) = (0, 0, 0, "", "", ""); +my $tmpdir_tpl = (-d "$ENV{HOME}/tmp" ? "$ENV{HOME}/tmp" : $ENV{TMPDIR} || "/tmp") . "/.build_hdlistXXXXX"; + +sub usage () { + pod2usage({ -verbose => 1 }); +} + +GetOptions( + 'dest=s' => \$dest, + 'help|h' => sub { usage(); exit 0 }, + list => \my $list, + nobadrpm => \$nobadrpm, + noclean => \my $noclean, + md5sum => \$md5sum, + norecursive => \my $norecursive, + s => \$nooutput, + 'subdir=s' => \$subdir, + 'suffix=s' => \$suffix, + 'v|version' => sub { warn "$0 version $VERSION\n"; exit 0 }, +); + +$list and die "--list is not handled anymore by urpmi, use hdlist/synthesis instead\n"; + +my $urpm = new URPM; +if ($subdir && $subdir !~ m{/$}) { $subdir .= '/' } +my $hdlist_base = "hdlist$suffix.cz"; +my $hdlist = $subdir . $hdlist_base; +my $synthesis_base = "synthesis.$hdlist_base"; +my $synthesis = $subdir . $synthesis_base; +my @dir = @ARGV ? @ARGV : ("."); + +grep { m!^/! } @dir and die "Directories to parse should be relative\n"; + +$dest and do { chdir $dest or die "Can't chdir in directory $dest\n" }; + +if ($subdir && !-e $subdir) { + mkdir $subdir + or die "Can't mkdir $subdir: $!n"; +} +if ($subdir) { + -d $subdir && -w _ && -x _ + or die "$subdir isn't a writable directory, bailing out\n"; +} +my $tmpdir = tempdir($tmpdir_tpl, CLEANUP => !$noclean); + +my @rpms; + +foreach my $dir (@dir) { + print "parsing $dir\n" unless $nooutput; + @rpms = (); + File::Find::find( + { + wanted => sub { + next if $norecursive && $File::Find::dir ne $dir; + if (/^.*\.rpm$/ && -f) { + push(@rpms, $File::Find::name); + } + }, + follow => 1, + }, $dir, + ); + $urpm->parse_rpms_build_headers( + dir => $tmpdir, + rpms => \@rpms, + dontdie => $nobadrpm, + silent => $nooutput, + packing => 1, + ); +} + +# create hdlist file +# No rpms, exit ! +#@{$urpm->{depslist}} or die "Nothing read, no file to write\n"; + +$urpm->build_hdlist( + start => 0, + end => $#{$urpm->{depslist}}, + dir => $tmpdir, + hdlist => $hdlist, + ratio => 9, +); + +# create synthesis file +$urpm->build_synthesis( + start => 0, + end => $#{$urpm->{depslist}}, + synthesis => $synthesis, +); + +if ($md5sum) { + my $m = qx(cd '$subdir' && /usr/bin/md5sum '$hdlist_base' '$synthesis_base'); + open my $f, '>', "${subdir}MD5SUM" or die "Can't write MD5SUM: $!\n"; + print $f $m; + close $f; +} + +__END__ + +=head1 NAME + +genhdlist-old - generates an hdlist and a synthesis file + +=head1 SYNOPSIS + + genhdlist-old [options] dir [dir...] + +=head1 OPTIONS + +=over 4 + +=item --dest dir + +Build indexes from this directory (that is, chdir's to this directory +before operation). + +=item --md5sum + +Generates an MD5SUM file. + +=item --nobadrpm + +Do not abort on bad rpms. + +=item --noclean + +Keep cache files. + +=item --norecursive + +Do not recurse in subdirectories. + +=item -s + +Silent mode. + +=item --subdir directory + +Write indexes in this subdirectory. + +=item --suffix SUFFIX + +Put a suffix on list/hdlist/synthesis names (for example, C<_main>). + +=back + +=head1 DESCRIPTION + +F<genhdlist-old> is used to generate an hdlist and an associated synthesis file +from a set of RPM packages found in the directories passed on the command-line. +By default it will put the hdlist and synthesis files in the current directory. + +If the option B<--list> is given, it will also generate a F<list> file containing +the relative paths to all RPMs. Consequently, the paths to the directories +passed to F<genhdlist-old> must be relative ones. + +=head1 SEE ALSO + +genhdlist2(1), gendistrib(1), parsehdlist(1) + +=head1 COPYRIGHT + +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 MandrakeSoft SA + +Copyright (C) 2005, 2006 Mandriva SA + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=cut diff --git a/genhdlist2 b/genhdlist2 new file mode 100644 index 0000000..0a64296 --- /dev/null +++ b/genhdlist2 @@ -0,0 +1,647 @@ +#!/usr/bin/perl + +(our $VERSION) = q(Id: genhdlist2 20460 2006-11-23 13:19:11Z pixel ) =~ /(\d+\.\d+)/; + +use URPM; +use MDV::Packdrakeng; +use Getopt::Long; + +main(); + +sub usage () { + require Pod::Usage; + Pod::Usage::pod2usage({ '-verbose' => 1 }); +} + +sub main() { + my %options = ( + synthesis_filter => '.cz:gzip -9', + xml_info => 'auto', + xml_info_filter => '.lzma:lzma -5', + versioned => 'auto' + ); + + GetOptions( + 'clean' => \$options{no_incremental}, + 'no-bad-rpm' => \$options{no_bad_rpm}, + 'no-md5sum' => \$options{no_md5sum}, + 'no-clean-old-rpms' => \$options{no_clean_old_rpms}, + 'only-clean-old-rpms' => \$options{only_clean_old_rpms}, + 'nolock' => \$options{nolock}, + 'no-hdlist' => \$options{no_hdlist}, + 'allow-empty-media' => \$options{allow_empty_media}, + 'file-deps=s' => \$options{file_deps}, + 'synthesis-filter=s' => \$options{synthesis_filter}, + 'xml-info!' => \$options{xml_info}, + 'xml-info-filter=s' => \$options{xml_info_filter}, + 'versioned!' => \$options{versioned}, + 'media_info-dir=s' => \$options{media_info_dir}, + 'h|help' => sub { usage(); exit 0 }, + 'q|quiet' => sub { $options{verbose} = -1 }, + 'v|verbose' => sub { $options{verbose}++ }, + 'version' => sub { warn "$0 version $VERSION\n"; exit 0 }, + ); + + @ARGV == 1 or usage(); + my $rpms_dir = $ARGV[0]; + + $options{no_incremental} ||= $options{no_hdlist}; + + do_it($rpms_dir, %options); +} + +# global vars +my ($no_bad_rpm, $verbose); +my $tmp_header; + +sub do_it { + my ($rpms_dir, %options) = @_; + + $verbose = $options{verbose}; + $no_bad_rpm = $options{no_bad_rpm}; + + my @rpms = grep { /\.rpm$/ } all($rpms_dir); + @rpms || $options{allow_empty_media} or die "no *.rpm found in $rpms_dir (use --allow-empty-media?)\n"; + + my $media_info_dir = $options{media_info_dir} || "$rpms_dir/media_info"; + -e $media_info_dir || mkdir $media_info_dir or die "Can't mkdir $media_info_dir: $!n"; + -d $media_info_dir && -w _ && -x _ or die "$media_info_dir isn't a writable directory, bailing out\n"; + + my ($synthesis_suffix, $synthesis_filter) = split(":", $options{synthesis_filter}); + my ($xml_info_suffix, $xml_info_filter) = split(":", $options{xml_info_filter}); + + my $synthesis = "$media_info_dir/synthesis.hdlist$synthesis_suffix"; + my $lock_file = "$media_info_dir/UPDATING"; + $tmp_header = "$media_info_dir/.tmp-header"; + + my $lock = !$options{nolock} && global_lock($lock_file); + + $SIG{INT} = sub { + unlink "$media_info_dir/hdlist.cz.tmp", "$synthesis.tmp", $tmp_header; + unlink $lock_file if $lock; + exit 1; + }; + END { unlink $lock_file if $lock } + + + #- handle old-rpms.lst + my $old_rpms_file = "$media_info_dir/old-rpms.lst"; + my $old_rpms = read_old_rpms_lst($old_rpms_file, $options{nolock}); + if ($old_rpms) { + filter_out_old_rpms($rpms_dir, $old_rpms, \@rpms); + if (!$options{no_clean_old_rpms}) { + clean_old_rpms($rpms_dir, $old_rpms); + write_old_rpms_lst($old_rpms, $old_rpms_file); + } + } + $options{only_clean_old_rpms} and return; + + + my %rpms_todo = map { /(.*)\.rpm/ => 1 } @rpms; + + my $urpm = new URPM; + + read_file_deps($urpm, $options{file_deps}) if $options{file_deps}; + + if ($options{xml_info} eq 'auto') { + $options{xml_info} = -e "$media_info_dir/info.xml$xml_info_suffix"; + } + my @xml_media_info = $options{xml_info} ? ('info', 'files', 'changelog') : (); + + build($urpm, \%rpms_todo, $media_info_dir, $rpms_dir, \@xml_media_info, $options{no_incremental}, $options{no_hdlist}, $xml_info_suffix, $xml_info_filter); + build_synthesis($urpm, "$synthesis.tmp", $synthesis_filter); + + if (1) { + my @media_info_files = ($options{no_hdlist} ? () : 'hdlist.cz', + "synthesis.hdlist$synthesis_suffix", map { "$_.xml$xml_info_suffix" } @xml_media_info); + foreach my $name (@media_info_files) { + print "replacing $media_info_dir/$name with $name.tmp\n" if $verbose >= 0; + rename "$media_info_dir/$name.tmp", "$media_info_dir/$name" or die "rename $media_info_dir/$name failed: $!\n"; + } + my $existed = remove_versioned_media_info($media_info_dir); + if ($options{versioned} && ($options{versioned} ne 'auto' || $existed)) { + push @media_info_files, generate_versioned_media_info($media_info_dir, \@media_info_files); + } + generate_md5sum($media_info_dir, \@media_info_files) if !$options{no_md5sum}; + } +} + +sub lock_file { + my ($file) = @_; + #- avoid putting a require on Fcntl ':flock' (which is perl and not perl-base). + my ($LOCK_EX, $LOCK_NB) = (2, 4); + + print "locking $file\n" if $verbose > 0; + open(my $lock, '>', $file) or die "lock_file $file failed\n"; + flock $lock, $LOCK_EX|$LOCK_NB or return; + $lock; +} +sub global_lock { + my ($file) = @_; + my $lock = lock_file($file) or die "another genhdlist2 already running\n"; + $lock; +} + +sub read_file_deps { + my ($urpm, $file_deps) = @_; + + -r $file_deps or die "can't read $file_deps: $?\n"; + + foreach (cat_($file_deps)) { + chomp; + # mark that this "file provide" is required: + $urpm->{provides}{$_} = undef; + } +} + +sub build { + my ($urpm, $rpms_todo, $media_info_dir, $rpms_dir, $xml_media_info, $b_no_incremental, $b_no_hdlist, $xml_info_suffix, $xml_info_filter) = @_; + + my $hdlist = "$media_info_dir/hdlist.cz"; + + my $out_hdlist; + if (!$b_no_hdlist) { + $out_hdlist = MDV::Packdrakeng->new( + archive => "$hdlist.tmp", + compress => "gzip", + uncompress => "gzip -d", + comp_level => 9, + ) or die "Can't create archive"; + } + + my $out = { + hdlist => $out_hdlist, + map { $_ => open_xml_filter("$media_info_dir/$_.xml${xml_info_suffix}.tmp", $xml_info_filter) } @$xml_media_info + }; + + if (-e $hdlist && !$b_no_incremental) { + print "filtering $hdlist into hdlist.cz.tmp\n" if $verbose >= 0; + filter_existing_hdlist($urpm, $rpms_todo, $hdlist, $out); + } + + add_new_rpms_to_hdlist($urpm, $rpms_todo, $out, $rpms_dir); + + close_xml($out->{$_}) foreach @$xml_media_info; +} + +sub filter_existing_hdlist { + my ($urpm, $rpms_todo, $in_hdlist, $out) = @_; + + if ($urpm->parse_hdlist($in_hdlist, packing => 1, callback => sub { + my (undef, $pkg) = @_; + my $fullname = $pkg->fullname; + if (delete $rpms_todo->{$fullname}) { + print "keeping $fullname\n" if $verbose > 1; + add_pkg($out, $pkg); + 1; # do keep in memory + } else { + print "removing $fullname\n" if $verbose > 0; + 0; # don't keep in memory + } + })) { + # ok + } else { + my $nb = @{$urpm->{depslist}}; + print STDERR "parse_hdlist has failed, keeping $nb headers successfully parsed\n" if $verbose >= 0; + } +} + +sub add_new_rpms_to_hdlist { + my ($urpm, $rpms_todo, $out, $rpms_dir) = @_; + + my @rpms = keys %$rpms_todo or return; + if ($verbose >= 0) { + if (@rpms > 100 || $verbose == 0) { + print "adding ", int(@rpms), " new rpms not available in existing hdlist\n"; + } else { + print "adding ", join(' ', @rpms), "\n"; + } + } + + foreach (@rpms) { + print "adding $_\n" if $verbose > 1; + + my $rpm = "$rpms_dir/$_.rpm"; + my ($id, undef) = $urpm->parse_rpm($rpm); + if (!defined $id) { + if ($no_bad_rpm) { + print STDERR "bad rpm $rpm\n"; + next; + } else { + die "bad rpm $rpm\n"; + } + } + my $pkg = $urpm->{depslist}[$id]; + add_pkg($out, $pkg); + + $pkg->pack_header; # for synthesis + } +} + +sub open_xml_filter { + my ($file, $xml_info_filter) = @_; + + open(my $F, "| $xml_info_filter > $file") or die "can't open $file\n"; + binmode $F, ':utf8'; + print $F qq(<?xml version="1.0" encoding="utf-8"?>\n); + print $F "<media_info>"; + $F; +} + +sub close_xml { + my ($F) = @_; + print $F "</media_info>\n"; +} + +sub ensure_utf8 { + if (utf8::is_utf8($_[0])) { + utf8::valid($_[0]) and return; + + utf8::encode($_[0]); #- disable utf8 flag + utf8::upgrade($_[0]); + } else { + utf8::decode($_[0]); #- try to set utf8 flag + utf8::valid($_[0]) and return; + warn "do not know what to with $_[0]\n"; + } +} + +sub encode_xml { + my ($s) = @_; + $s =~ s/&/&/g; + $s =~ s/</</g; + $s =~ s/>/>/g; + ensure_utf8($s); + $s; +} +sub encode_xml_attribute { + my ($s) = @_; + + $s = encode_xml($s); + + $s =~ /'/ or return qq('$s'); + $s =~ /"/ or return qq("$s"); + + # argh!! hum replacing " with '' :-D + $s =~ s/"/''/g; + print STDERR qq(encoding xml attribute: replacing " with '' for $s\n); + + qq("$s"); +} + +sub add_pkg { + my ($out, $pkg) = @_; + my $fullname = $pkg->fullname; + + if ($out->{hdlist}) { + add_pkg_header($out->{hdlist}, $pkg, $fullname); + } + + if ($out->{files}) { + my $F = $out->{files}; + print $F qq(<files fn="$fullname">\n); + print $F encode_xml($_), "\n" foreach $pkg->files; + print $F qq(</files>); + } + + if ($out->{info}) { + my $F = $out->{info}; + print $F qq(<info fn="$fullname"); + printf $F qq(\n $_=%s), encode_xml_attribute($pkg->$_) foreach qw(sourcerpm url license); + print $F qq(>\n); + print $F encode_xml($pkg->description), "\n"; + print $F qq(</info>); + } + + if ($out->{changelog} && $pkg->changelog_name) { + my $F = $out->{changelog}; + my @ti = $pkg->changelog_time; + my @na = $pkg->changelog_name; + my @te = $pkg->changelog_text; + + print $F qq(<changelogs fn="$fullname">\n); + foreach (0 .. $#ti) { + print $F qq(<log time="$ti[$_]">\n); + print $F qq(<log_name>), encode_xml($na[$_]), qq(</log_name>\n); + print $F qq(<log_text>), encode_xml($te[$_]), qq(</log_text>\n); + print $F qq(</log>); + } + print $F qq(</changelogs>); + } +} + +sub add_pkg_header { + my ($out, $pkg, $fullname) = @_; + { + open(my $fh, ">", $tmp_header); + $pkg->build_header(fileno $fh); + } + { + open(my $fh, "<", $tmp_header); + $out->add_virtual('f', $fullname, $fh); + } + unlink $tmp_header; +} + +sub build_synthesis { + my ($urpm, $synthesis, $synthesis_filter) = @_; + # for compatibility with perl-URPM < 1.48 (ie < 2007.1), + # creating empty synthesis by hand. This is only needed to run on old distros + if (@{$urpm->{depslist}} == 0) { + open(my $hsynth, "| $synthesis_filter > $synthesis"); + close $hsynth or die "Can't create empty synthesis $synthesis: $!\n"; + } else { + $urpm->build_synthesis( + start => 0, + end => $#{$urpm->{depslist}}, + synthesis => $synthesis, + filter => $synthesis_filter, + ) or die "build_synthesis failed (disk full?)\n"; + } +} + +sub remove_versioned_media_info { + my ($media_info_dir) = @_; + + my @l = grep { /^\d{8}-\d{6}-/ && -l "$media_info_dir/$_" } all($media_info_dir) or return; + + foreach (@l) { + print "removing previous versioned $_\n" if $verbose > 0; + unlink "$media_info_dir/$_"; + } + 1; +} + +sub generate_versioned_media_info { + my ($media_info_dir, $media_info_files) = @_; + + require POSIX; + my $version = POSIX::strftime("%Y%m%d-%H%M%S", gmtime); + + map { + print "creating versioned media_info $_: $version-$_\n" if $verbose > 0; + symlink $_, "$media_info_dir/$version-$_"; + "$version-$_"; + } @$media_info_files; +} + +sub generate_md5sum { + my ($media_info_dir, $media_info_files) = @_; + print "updating $media_info_dir/MD5SUM\n" if $verbose >= 0; + my $m = `cd '$media_info_dir' ; /usr/bin/md5sum @$media_info_files`; + unlink "$media_info_dir/MD5SUM"; # ensure no hard link is used + open(my $f, '>', "$media_info_dir/MD5SUM") or die "Can't write MD5SUM: $!\n"; + print $f $m; +} + + +################################################################################ +sub read_old_rpms_lst { + my ($file, $nolock) = @_; + + -e $file or return; + + my $lock = !$nolock && lock_file("$file.lock") + or $verbose >= 0 && print "lock failed, we simply won't write the modified file\n"; + + require Config::IniFiles; + my $lst = Config::IniFiles->new('-file' => $file) or die "invalid $file\n"; + { lst => $lst, lock => $lock }; +} + +sub write_old_rpms_lst { + my ($old_rpms, $file) = @_; + + if ($old_rpms->{lock}) { + sleep 10; + $old_rpms->{lst}->WriteConfig($file); # no need to use a temp file + rename since WriteConfig is doing so + + print "unlocking $file.lock\n" if $verbose > 0; + close(delete $old_rpms->{lock}); + unlink "$file.lock"; + } else { + # we don't have the lock, so don't write + } +} + +sub clean_old_rpms { + my ($rpms_dir, $old_rpms) = @_; + + my $lst = $old_rpms->{lst}; + foreach my $pkg ($lst->Parameters('Remove')) { + my $keep; + if (-e "$rpms_dir/$pkg") { + my $date = $lst->val('Remove', $pkg); + if ($date >= time()) { + $keep = 1; + print "[OLD-RPMS] keeping $pkg (it is scheduled for " . $lst->GetParameterComment('Remove', $pkg) . "# )\n" if $verbose > 0; + } else { + print "[OLD-RPMS] removing rpm file $pkg (was scheduled for " . $lst->GetParameterComment('Remove', $pkg) . "# )\n" if $verbose >= 0; + unlink "$rpms_dir/$pkg"; + } + } else { + print "[OLD-RPMS] $pkg already removed\n" if $verbose >= 0; + } + $keep or $old_rpms->{lst}->delval('Remove', $pkg); + } +} + +# 'Remove' + +sub clean_old_rpms { + my ($rpms_dir, $old_rpms) = @_; + + _apply_date_old_rpms($rpms_dir, $old_rpms, 'Remove', 'OLD-RPMS', sub { + my ($pkg, $date) = @_; + print "[OLD-RPMS] removing rpm file $pkg (was scheduled for $date)\n" if $verbose >= 0; + unlink "$rpms_dir/$pkg"; + }); +} + +sub _apply_date_old_rpms { + my ($rpms_dir, $old_rpms, $section, $section_tag, $do_it) = @_; + + my $lst = $old_rpms->{lst}; + foreach my $pkg ($lst->Parameters($section)) { + my $keep; + if (-e "$rpms_dir/$pkg") { + my $date = $lst->val($section, $pkg); + if ($date >= time()) { + $keep = 1; + print "[$section_tag] keeping $pkg (it is scheduled for " . $lst->GetParameterComment($section, $pkg) . "# )\n" if $verbose > 0; + } else { + $do_it->($pkg, $verbose >= 0 && $lst->GetParameterComment($section, $pkg)); + } + } else { + print "[$section_tag] $pkg already removed\n" if $verbose >= 0; + } + $keep or $old_rpms->{lst}->delval($section, $pkg); + } +} + +sub filter_out_old_rpms { + my ($rpms_dir, $old_rpms, $rpms_list) = @_; + + _apply_date_old_rpms($rpms_dir, $old_rpms, 'Keep-in-hdlist', 'KEEP-IN-HDLIST', sub { + my ($pkg, $date) = @_; + print "[KEEP-IN-HDLIST] removing $pkg from hdlist (was scheduled for $date)\n" if $verbose >= 0; + }); + + my %old = map { $_ => 1 } $old_rpms->{lst}->Parameters('Remove'); + delete $old{$_} foreach $old_rpms->{lst}->Parameters('Keep-in-hdlist'); + + @$rpms_list = grep { !$old{$_} } @$rpms_list; +} +################################################################################ + + +sub cat_ { my @l = map { my $F; open($F, '<', $_) ? <$F> : () } @_; wantarray() ? @l : join '', @l } + +sub all { + my $d = shift; + + local *F; + opendir F, $d or return; + my @l = grep { $_ ne '.' && $_ ne '..' } readdir F; + closedir F; + + @l; +} + +__END__ + +=head1 NAME + +genhdlist2 - generates an hdlist and a synthesis file + +=head1 SYNOPSIS + + genhdlist2 [options] dir + +=head1 OPTIONS + +=over 4 + +=item B<--clean> + +Do not use existing hdlist.cz, build hdlist from scratch. + +=item B<--file-deps> + +Use the given file to know which file dependencies are used by other media. +Here is an example of use: + + package foo in medium contrib requires /bin/bar + package bar in medium main has file /bin/bar + + % echo /bin/bar > media/media_info/file-deps + % genhdlist2 --file-deps media/media_info/file-deps media/main/release + + without file-deps, media/main/release/media_info/synthesis.hdlist.cz would not provide /bin/bar. + +This option is not needed for file-deps inside a same medium. + +=item B<--no-md5sum> + +Do not generate MD5SUM file. + +=item B<--no-bad-rpm> + +Do not abort on bad rpms. + +=item B<--no-clean-old-rpms> + +Take into account old-rpms.lst, but don't remove rpms from repository + +=item B<--only-clean-old-rpms> + +F<genhdlist2> will only clean old rpms from repository, it will not update +hdlist/synthesis. + +=item B<--nolock> + +Don't lock the media (can be useful when locks fail, eg NFS). Since the lock +is used to verify no other genhdlist2 process is running on the same media, it +is a dangerous option. + +=item B<--allow-empty-media> + +By default if no *.rpm files are found, F<genhdlist2> will exit on error. +To allow building empty media, use this option. + +=item B<--media_info-dir> I<directory> + +Write hdlist/synthesis in this directory instead of <dir>/media_info +(mostly useful for debugging) + +=item B<--synthesis-filter SUFFIX:FILTER> + +Use SUFFIX for filename suffix and filter through FILTER for compression. +By default genhdlist2 will use '.cz:gzip -9'. + +=item B<--xml-info> + +Force to generate xml info. By default genhdlist2 will only regenerate xml info files already there in media_info/ + +=item B<--xml-info-filter SUFFIX:FILTER> + +Use SUFFIX for filename suffix and filter through FILTER for compression. +By default genhdlist2 will use '.lzma:lzma -5'. + +=item B<--versioned> + +Force to generate versioned media info. + +=item B<-v> + +Be verbose. Use one more B<-v> to get even more verbose. + +=item B<--quiet> + +Quiet mode. + +=back + +=head1 DESCRIPTION + +F<genhdlist2> is used to generate an hdlist and an associated synthesis file +from a set of RPM packages found in the directory passed on the command-line. +It will put the hdlist and synthesis files in media_info/ sub-directory. + +Without B<--clean>, F<genhdlist2> is incremental, ie it will use existing +media_info/hdlist.cz: it will first remove package headers for packages that +are no more in the directory. It will then add new packages. This makes an +important assumption: name-version-release-arch is enough to uniquely +indentify a package. So if foo-1-1 is in hdlist, genhdlist2 will keep it and +not bother verifying if it really is the same package. + +Contrary to F<gendistrib>, F<genhdlist2> doesn't have to be work on all media +at once. For this, it assumes no inter media file dependencies are used. If +you still have inter media file dependencies, you can use option +B<--file-deps>. + +=head1 SEE ALSO + +gendistrib(1), parsehdlist(1) + +=head1 COPYRIGHT + +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 MandrakeSoft SA + +Copyright (C) 2005, 2006, 2007 Mandriva SA + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=cut diff --git a/packdrake b/packdrake new file mode 100755 index 0000000..caab623 --- /dev/null +++ b/packdrake @@ -0,0 +1,189 @@ +#!/usr/bin/perl + +use strict; +use packdrake; + +#- general information. +my $default_size = 400000; +my $default_ratio = 6; + +sub usage () { + eval { + require Pod::Usage; + Pod::Usage->import(); + pod2usage({ -verbose => 1 }); + }; + exit 0; +} + +my ($file, $mode, $dir, $size, $method, $compress, $uncompress, $ratio, $quiet); +my @nextargv = (\$file); +my @list; + +#- some quite useful error message. +my $error_mode = "packdrake: choose only --build, --extract, --list or --cat\n"; +foreach (@ARGV) { + /^--help$/ and usage(); + /^--version$/ and do { print "$0 version $packdrake::VERSION\n"; exit 0 }; + /^--build$/ and do { $mode and die $error_mode; $mode = "build"; @nextargv = (\$file); next }; + /^--extract$/ and do { $mode and die $error_mode; $mode = "extract"; @nextargv = (\$file, \$dir); next }; + /^--list$/ and do { $mode and die $error_mode; $mode = "list"; @nextargv = (\$file); next }; + /^--cat$/ and do { $mode and die $error_mode; $mode = "cat"; @nextargv = (\$file); next }; + /^--dir$/ and do { push @nextargv, \$dir; next }; + /^--size$/ and do { push @nextargv, \$size; next }; + /^--method$/ and do { push @nextargv, \$method; next }; + /^--compress$/ and do { push @nextargv, \$compress; next }; + /^--uncompress$/ and do { push @nextargv, \$uncompress; next }; + /^--quiet$/ and $quiet = 1, next; + /^-(.*)$/ and do { foreach (split //, $1) { + /[1-9]/ and do { $ratio = $_; next }; + /b/ and do { $mode and die $error_mode; $mode = "build"; @nextargv = (\$file); next }; + /x/ and do { $mode and die $error_mode; $mode = "extract"; @nextargv = (\$file, \$dir); next }; + /l/ and do { $mode and die $error_mode; $mode = "list"; @nextargv = (\$file); next }; + /c/ and do { $mode and die $error_mode; $mode = "cat"; @nextargv = (\$file); next }; + /d/ and do { push @nextargv, \$dir; next }; + /s/ and do { push @nextargv, \$size; next }; + /m/ and do { push @nextargv, \$method; next }; + die qq(packdrake: unknown option "-$1", check usage with --help\n) } next }; + $mode =~ /extract|list|cat/ + or @nextargv + or die qq(packdrake: unknown option "$_", check usage with --help\n); + my $ref = shift @nextargv; + $ref ? ($$ref = $_) : push @list, $_; + $mode ||= "list"; +} + +#- examine and lauch. +$file or die "packdrake: no archive filename given, check usage with --help\n"; +$size ||= $default_size; +$ratio ||= $default_ratio; + +unless ($method) { + $file =~ /\.cz$/ and $method = "gzip"; + $file =~ /\.cz2$/ and $method = "bzip2"; +} + +$compress ||= "$method -$ratio"; +$uncompress ||= "$method -d"; + +$mode =~ /extract/ && !$dir && !@list and ($mode, @list) = ('list', $file); +for ($mode) { + /build/ and do { packdrake::build_archive(\*STDIN, $dir, $file, $size, $compress, $uncompress); last }; + /extract/ and do { + my $packer = new packdrake($file, quiet => $quiet); + $packer->extract_archive($dir, @list); + last; + }; + /list/ and do { packdrake::list_archive($file, @list); last }; + /cat/ and do { packdrake::cat_archive($file, @list); last }; + die "packdrake: internal error, unable to select right mode?\n"; +} + +__END__ + +=head1 NAME + +packdrake - manipulates archives + +=head1 SYNOPSIS + + packdrake [options] [--build|-b] file + packdrake [options] [--extract|-x] file + packdrake [options] [--list|-l] file + packdrake [options] [--cat|-c] file + +=head1 OPTIONS + +=over 2 + +=item --build file + +Build mode; build archive file with filenames given on standard input. +Sub-options are: + +=over 4 + +=item -1 .. -9 + +Select appropriate compression ratio. + +=item --dir srcdir + +set source directory where to search files, C<.> by default. + +=item --size + +Set maximum chunk size, 400000 by default. + +=item --method + +Select standard compression command method. +Default is deduced from the archive filename (gzip or bzip2). + +=item --compress cmd + +Select compression command (e.g. C<gzip -9>). + +=back + +=item --extract file dir file1...fileN + +Extracts archive file to specified directory. +Specific files to extract may be given on the command line. + +=over 4 + +=item --uncompress cmd + +Select uncompression command. + +=back + +=item --list file + +Lists contents of archive. + +=item --cat file + +Dumps archive to standard output. + +=item General options + +=over 4 + +=item --quiet + +Silent mode. + +=back + +=back + +=head1 DESCRIPTION + +Packdrake is a simple indexed archive builder and extractor using +standard compression methods. + +=head1 SEE ALSO + +L<MDV::Packdrakeng> + +=head1 COPYRIGHT + +Copyright (C) 2000-2005 Mandrakesoft. + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=cut diff --git a/packdrake.pm b/packdrake.pm new file mode 100644 index 0000000..365200a --- /dev/null +++ b/packdrake.pm @@ -0,0 +1,182 @@ +##- Nanar <nanardon@mandriva.org> +##- +##- This program is free software; you can redistribute it and/or modify +##- it under the terms of the GNU General Public License as published by +##- the Free Software Foundation; either version 2, or (at your option) +##- any later version. +##- +##- This program is distributed in the hope that it will be useful, +##- but WITHOUT ANY WARRANTY; without even the implied warranty of +##- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +##- GNU General Public License for more details. +##- +##- You should have received a copy of the GNU General Public License +##- along with this program; if not, write to the Free Software +##- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +##- $Id: packdrake.pm 12160 2005-11-15 12:42:54Z rgarciasuarez $ + +package packdrake; + +use strict; +use warnings; +use MDV::Packdrakeng; +our @ISA = qw(MDV::Packdrakeng); +our $VERSION = $MDV::Packdrakeng::VERSION; + +sub new { + my ($class, $file, %options) = @_; + my $pack = MDV::Packdrakeng->open( + %options, + archive => $file + ) or do { print STDERR "Can't open $file: $!\n"; return undef }; + #- rebless + bless($pack, $class); +} + +sub extract_archive { + my ($pack, $dir, @files) = @_; + @files or return; + $pack->extract($dir, @files); +} + +sub extract_all_archive { + my ($pack, $dir) = @_; + my ($d, $f, $l) = $pack->getcontent(); + $pack->extract($dir, @$d, @$f, @$l); +} + +sub list_archive { + foreach my $archive (@_) { + my $pack = MDV::Packdrakeng->open(archive => $archive) or do { + print STDERR "Can't open $archive: $!\n"; + next; + }; + $pack->list(); + } +} + +sub build_archive { + my ($listh, $dir, $archive, $size, $compress, $uncompress) = @_; + my ($comp_level) = $compress =~ m/ -(\d)(?:\s|$)/; + $compress =~ s/ -\d(\s|$)/$1/; + my $pack = MDV::Packdrakeng->new( + archive => $archive, + compress => $compress, + uncompress => $uncompress, + block_size => $size, + comp_level => $comp_level, + ) or return; + while (my $line = <$listh>) { + chomp($line); + $pack->add($dir, $line) or return; + } + 1; +} + +sub cat_archive { + foreach my $archive (@_) { + my $pack = MDV::Packdrakeng->open(archive => $archive) or do { + print STDERR "Can't open $archive: $!\n"; + next; + }; + (undef, my $files, undef) = $pack->getcontent(); + foreach (@$files) { + $pack->extract_virtual(\*STDOUT, $_); + } + } +} + +1; + +__END__ + +=head1 NAME + +packdrake - Simple Archive Extractor/Builder + +This module is a compatibility wrapper around the new MDV::Packdrakeng module. + +=head1 SYNOPSIS + + require packdrake; + + packdrake::cat_archive("/export/media/media_info/hdlist.cz", + "/export/media/media_info/hdlist2.cz"); + packdrake::list_archive("/tmp/modules.cz2"); + + my $packer = new packdrake("/tmp/modules.cz2"); + $packer->extract_archive("/tmp", "file1.o", "file2.o"); + + my $packer = packdrake::build_archive + (\*STDIN, "/lib/modules", "/tmp/modules.cz2", + 400000, "bzip2", "bzip2 -d"); + my $packer = packdrake::build_archive + (\*STDIN, "/export/media/media_info/hdlist.cz", + 400000, "gzip -9", "gzip -d"); + +=head1 DESCRIPTION + +C<packdrake> is a very simple archive extractor and builder used by Mandrakesoft. + +=head1 FUNCTIONS + +=over + +=item B<new($file, %options)> + +Open the packdrake archive $file and return a packdrake object. +Return undef on failure. + +=item B<< packdrake->extract_archive($dir, @files) >> + +Extract files list into the specified directory. + +=item B<< packdrake->extract_all_archive($dir) >> + +Extract all files into the specified directory. + +=item B<packdrake::list_archive(@list)> + +List files packed into achives given. + +=item B<packdrake::build_archive($input,$dir,$archive,$blocksize,$compress,$uncompress)> + +Build a new archive: +- $input is a file handle to find file list to pack +- $dir is the directory based where file are located +- $archive is the archive filename to create +- $blocksize is the size of compressed block +- $compress is the program to use to compress data +- $uncompress is the program to use to uncompress data + +=item B<packdrake::cat_archive(@files)> + +Dump data to STDOUT of files given as parameters, or all files if no files are +specified + +=back + +=head1 SEE ALSO + +L<MDV::Packdrakeng>. + +=head1 COPYRIGHT + +Copyright (C) 2000-2004 Mandrakesoft <nanardon@mandriva.org> + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +=cut diff --git a/patches/faster-gendistrib.patch b/patches/faster-gendistrib.patch new file mode 100644 index 0000000..5e3ea93 --- /dev/null +++ b/patches/faster-gendistrib.patch @@ -0,0 +1,112 @@ +Olivier Thauvin <nanardon@mandriva.org> +This patch is a tried to make gendistrib faster, but I suspect +it to be unsafe and have wrong effect on generate files. +Until review, keeping it in mind. +Index: gendistrib +=================================================================== +--- gendistrib (révision 57544) ++++ gendistrib (copie de travail) +@@ -127,8 +127,7 @@ + Fix this erreur in media.cfg and retry: + + EOF +- print STDERR "$_\n" foreach(@fatalerrors); +- print STDERR "\n"; ++ print "$_\n" foreach(@fatalerrors); + exit(1); + } + +@@ -230,35 +229,36 @@ + }; + } + +-if (grep { ! $_->{noneedrebuild} } @hdlists) { + foreach my $e (@hdlists) { +- print STDERR "parsing rpm files in directory $e->{dir}\n" unless $nooutput; +- # NOYET open(my $hnsynth, "|gzip --best > $e->{synthesis}.yaml"); +- my @headers = $urpm->parse_rpms_build_headers( +- dir => $headers_dir, +- rpms => $e->{files}, +- dontdie => $dontdie, +- silent => $nooutput, +-# NOTYET callback => sub { ++ if (!$blind) { ++ printf(STDERR "hdlist need to be rebuild for media $e->{descr}: %s\n", ++ $e->{noneedrebuild} ? "No" : "Yes") unless $nooutput; ++ } ++ ++# NOTYET open(my $hnsynth, "|gzip --best > $e->{synthesis}.yaml"); ++ my $callback => sub { + # NOTYET my ($urpmc, $id, %options) = @_; + # NOTYET print $hnsynth $urpmc->{depslist}[$id]->queryformat($yamlout); + # NOTYET $urpmc->{depslist}[$id]->pack_header; +-# NOTYET }, ++ }; ++ if (!$e->{noneedrebuild} && !$blind) { ++ print STDERR "parsing rpm files in directory $e->{dir}\n" unless $nooutput; ++ @{$e->{headers}} = $urpm->parse_rpms_build_headers( ++ dir => $headers_dir, ++ rpms => $e->{files}, ++ dontdie => $dontdie, ++ silent => $nooutput, ++# callback => $callback, + ); +- # NOTYET close($hnsynth); +- # TODO if @headers is empty ? +- $e->{headers} = \@headers; + +- if (!$blind) { +- print STDERR "Checking if hdlist need to be rebuild for media $e->{descr}\n" unless $nooutput; +- if($e->{noneedrebuild}) { +- print "No\n" unless $nooutput; +- } else { +- print "Yes\n" unless $nooutput; +- } ++ } else { ++ $urpm->parse_hdlist( ++ $e->{hdlist}, ++ #callback => $callback, ++ ); + } ++ # NOTYET close($hnsynth); + } +-} + + if ($noemptymedia) { + foreach my $e (@hdlists) { +@@ -273,19 +273,30 @@ + #- temporary file where to build hdlists + my $temp_hdlist = mktemp("$tempdir/hdlistXXXXX"); + ++my $callback = sub {}; ++ + if (grep { ! $_->{noneedrebuild} } @hdlists) { + foreach my $e (@hdlists) { +- if (@{$e->{headers} || []}) { # We have rpms in this media +- +- print STDERR qq(parsing headers for "$e->{descr}"\n) unless $nooutput; +- my ($start, $end) = $urpm->parse_headers(dir => $headers_dir, ++ my ($start, $end); ++ if ($e->{noneedrebuild} && !$blind) { ++ $urpm->parse_hdlist( ++ $e->{hdlist}, ++ #callback => $callback, ++ ); ++ } else { ++ ($start, $end) = $urpm->parse_headers( ++ dir => $headers_dir, + headers => $e->{headers}, + dontdie => $dontdie, +- silent => $nooutput); ++ silent => $nooutput, ++ #callback => $callback, ++ ); ++ } + + print STDERR "computing deps\n" unless $nooutput; + $urpm->compute_deps; + ++ if (@{$e->{headers} || []}) { # We have rpms in this media + # No media change, nothing to write + if (!$e->{noneedrebuild}) { + diff --git a/t/01packdrake.t b/t/01packdrake.t new file mode 100755 index 0000000..58d4fd1 --- /dev/null +++ b/t/01packdrake.t @@ -0,0 +1,66 @@ +#!/usr/bin/perl + +# $Id: 01packdrake.t 223440 2007-06-10 22:09:58Z nanardon $ + +use strict; +use Test::More tests => 7; +use Digest::MD5; + +use_ok('packdrake'); + +-d "test" || mkdir "test" or die "Can't create directory test"; + +my $coin = q{ + ___________ +< Coin coin > + ----------- + \ ,~~. + \ __( o ) + `--'==( ___/) + ( ( . / + \ '-' / + ~'`~'`~'`~'`~ +}; + +sub clean_test_files { + -d "test" or return; + system("rm -fr $_") foreach (glob("test/*")); +} + +clean_test_files(); + +mkdir "test/dir" or die "Can't create 'test/dir'"; +open(my $fh, "> test/file") or die "Can't create 'test/file'"; +print $fh $coin; +close $fh; + +symlink("file", "test/link") or die "Can't create symlink 'test/link': $!\n"; + +open($fh, "> test/list") or die "can't open 'test/list': $!\n"; +print($fh join("\n", qw(dir file link)) ."\n"); +close($fh); + +open(my $listh, "< test/list") or die "can't read 'test/list': $!\n"; +ok(packdrake::build_archive( + $listh, + "test", + "packtest.cz", + 400_000, + "gzip -9", + "gzip -d", +), "Creating a packdrake archive"); +close($listh); + +clean_test_files(); + +my $pack = packdrake->new("packtest.cz"); +ok($pack->extract_archive("test", qw(dir file link)), "Extracting files from archive"); + +ok(open($fh, "test/file"), "Opening extract file"); +sysread($fh, my $data, 1_000); +ok($data eq $coin, "data successfully restored"); +ok(-d "test/dir", "dir successfully restored"); +ok(readlink("test/link") eq "file", "symlink successfully restored"); + +clean_test_files(); + |