aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDexter Morgan <dmorgan@mageia.org>2011-06-02 20:41:49 +0000
committerDexter Morgan <dmorgan@mageia.org>2011-06-02 20:41:49 +0000
commit6d626d6f0c3a3313b55a865c084f16a762d60713 (patch)
tree8f77945253ea4e76b2c674c45b97d53a64032e13
downloadrpmtools-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--ChangeLog2142
-rw-r--r--MANIFEST12
-rw-r--r--Makefile.PL55
-rw-r--r--NEWS84
-rwxr-xr-xdumpdistribconf75
-rwxr-xr-xeditdistrib256
-rwxr-xr-xgendistrib396
-rw-r--r--genhdlist-old193
-rw-r--r--genhdlist2647
-rwxr-xr-xpackdrake189
-rw-r--r--packdrake.pm182
-rw-r--r--patches/faster-gendistrib.patch112
-rwxr-xr-xt/01packdrake.t66
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',
+ },
+);
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..fa9b494
--- /dev/null
+++ b/NEWS
@@ -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/&/&amp;/g;
+ $s =~ s/</&lt;/g;
+ $s =~ s/>/&gt;/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();
+