Created
December 12, 2014 08:17
-
-
Save anonymous/b7234da3aa1a19c7fd68 to your computer and use it in GitHub Desktop.
stdin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -pruN pkgutils-5.35.6/ChangeLog pkgutils-5.32.0_8/ChangeLog | |
--- pkgutils-5.35.6/ChangeLog 2014-03-24 05:16:55.000000000 +1100 | |
+++ pkgutils-5.32.0_8/ChangeLog 2010-07-21 21:42:14.000000000 +1000 | |
@@ -1,496 +1,95 @@ | |
-commit bf4255e16b64eb26eeda62b610d24c111a2fe574 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sun Mar 23 19:15:46 2014 +0100 | |
+commit 15d479f352d50f0785fd10151e525eaed44c2dc1 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Wed Jul 21 21:42:09 2010 +1000 | |
- bump version to 5.35.6 | |
+ add group var | |
-commit 598f7b4a053b29acb5a7d400abe579270dd7ae6d | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sun Mar 23 19:13:04 2014 +0100 | |
+commit 9d85de0c59f40a0f36aa82ec7e9dfe4a2df9a77a | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Tue Jun 1 22:00:51 2010 +1000 | |
- pkgadd.conf: allow update of /etc/ssl/cert.pem provided by core/ca-certificates | |
+ add pigz support for parallel compression to gzip | |
-commit 215882c2782fb13d52ede38e711340b3429c1040 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sun Mar 23 19:09:39 2014 +0100 | |
+commit 54bcc73fea91f1b73a519154f4d0cc2167395073 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Tue May 25 22:53:26 2010 +1000 | |
- pkgadd.conf: add rules for hwdb of eudev | |
+ fix footprint new to show | |
-commit e351466294c697439c83f7f90cb835cf5eeeaf22 | |
-Author: Matt Housh <jaeger@morpheus.net> | |
-Date: Wed Mar 13 09:05:01 2013 -0500 | |
+commit 0eb1a36a110628c56a33669c6d758eb79d58ca6b | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Tue May 25 22:46:17 2010 +1000 | |
- pkgmk.conf: added commented MAKEFLAGS option | |
+ fix bug in new-files footprint | |
-commit 01ba62021b2ce74a473f3f7b3bf78452d8f9201f | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Mon Jan 21 16:19:08 2013 +0100 | |
+commit 9739f49fc96dcbce8ae39a96b5331d32c7f7dc74 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Tue May 25 22:35:27 2010 +1000 | |
- Makefile: bump version to 5.35.4 | |
+ add -im option to pkgmk | |
-commit d804a38febb135bb6a428f2f3685001a49acb1f7 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Mon Jan 21 16:14:45 2013 +0100 | |
+commit 59dc69e6e1f2bd2fd319c92632ec1e521645aabb | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 7 18:38:06 2010 +1100 | |
- update copyright year to 2013 | |
+ fix downloading of non archives as text allowed | |
-commit 7e53648a28795a24c1310f57b915291f88aac995 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Mon Jan 21 16:09:17 2013 +0100 | |
+commit 2679168e15a8a9b4cee1001b377aca02f1b3d0b0 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Oct 11 12:16:33 2009 +1100 | |
- pkgmk.conf: if PKGMK_ARCH is unset we default to 64 | |
+ remove text files downloaded and add tbz extraction support | |
-commit e691a2bfd4892cf9da5834b9022625c34a623c1e | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Wed Nov 28 13:29:12 2012 +0100 | |
+commit 216bdc106976e6d9a1d0f630c6498a75e39a3396 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sat Jul 4 13:46:44 2009 +1000 | |
- bump version to 5.35.3 | |
+ add mirror retry on failed mirrors | |
-commit a455d5533e1fa24564c4634182370bff5217dd13 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Wed Nov 28 13:23:58 2012 +0100 | |
+commit b6d8c9b75eea18402d85aaf7ae2aa1cda0d63579 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sat Jul 4 11:38:55 2009 +1000 | |
- pkgmk: add support for plain tar, FS#603 | |
+ fix mirror support to use %n for names in mirror urls | |
-commit 6d244ad0c04f92581dd38203bcad731a88f17d62 | |
-Author: Matt Housh <jaeger@morpheus.net> | |
-Date: Tue Nov 27 10:17:18 2012 -0600 | |
+commit 6d16ebf2c39acc4502b06915468ca4e2c9fbf1cf | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Jun 7 22:25:30 2009 +1000 | |
- pkgmk, pkgmk.conf: updates for multilib | |
+ add in mirror support | |
-commit cb463301e39d7de125895b6eb4fffd66cd431a6f | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Mar 28 19:36:27 2012 +0200 | |
+commit 6bcefda2f83750e9b0118853763835d3cb182898 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 19:30:03 2009 +1100 | |
- Bumped version to 5.35.2. | |
+ Makefile: move man directory to /usr/share/man | |
-commit f30a8abd09ed6cb6db1446baae9538b30a072d1d | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Mar 27 20:28:18 2012 +0200 | |
+commit d60f0b06e06166682fbeea6947d1d41a68b536f6 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 19:24:22 2009 +1100 | |
- Switched to libarchive 3.x. | |
+ Makefile: bump version | |
-commit 508581b16b2615ad6cdb506eb86238aac96659c3 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Aug 31 19:23:15 2010 +0200 | |
+commit 5395514acb219b53f90cc3ed48cbe4fd56469fc9 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 19:19:54 2009 +1100 | |
- Bumped version to 5.35.1. | |
+ pkgmk.in: fix override variables so there is no trailing spaces if not set | |
-commit 77850c5a26df37018b37ba46076e32ad74bfe529 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Aug 31 19:22:12 2010 +0200 | |
+commit 98be567d2c96db5b108950dfd37436bb4cf372c3 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 18:58:02 2009 +1100 | |
- Documented PKGMK_IGNORE_NEW in pkgmk.conf.5. | |
+ pkgmk.in add recent changes | |
-commit c436c58ab0f70a7586e61321ccaced614d1da7c7 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Jun 26 18:46:59 2010 +0200 | |
+commit bd2448f5079ed76c990601562b69b947789edff8 | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 18:40:58 2009 +1100 | |
- Bumped version to 5.35.0. | |
+ add in pkgutils-5.32.0-hvlinux.patch | |
-commit 50689e8a22c6e974f642dc6d1ee28b75634ce7c5 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sat May 29 16:30:15 2010 +0200 | |
+commit 0896a5360d95be80eb821bdf6424ca0a69e400be | |
+Author: Danny Rawlins <monster.romster@gmail.com> | |
+Date: Sun Mar 8 18:38:57 2009 +1100 | |
- Updated copyright notices to 2010. | |
- | |
-commit 56b9b9dab28a3779a6dc1ef97ec26df9cb634915 | |
-Author: Johannes Winkelmann <jw@smts.ch> | |
-Date: Thu May 27 21:18:34 2010 +0200 | |
- | |
- Bug #221: added error codes. | |
- | |
-commit 266200679b16c6a3adbdfa558d42419aa64a7edd | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Mon May 24 11:11:50 2010 +0200 | |
- | |
- Fixed documentation to not only talk about pkg.tar.gz but also bz2 and xz. | |
- | |
-commit 163aacb1ff22837484088c1b41272684df7fc2f2 | |
-Author: Johannes Winkelmann <jw@smts.ch> | |
-Date: Sun May 23 17:38:31 2010 +0200 | |
- | |
- Bug #221: pkgmk optionally now only warns about new files in a footprint. | |
- | |
-commit 37c478ef8b53608ffa9cfdedac2f65a2287ac5b9 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Fri May 21 20:03:48 2010 +0200 | |
- | |
- Bug #581: Users may choose from gz/bz2/xz for the compression mode now. | |
- | |
-commit 780862a6ece30840523d91328f1945cf3edf2cfe | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue May 18 19:24:17 2010 +0200 | |
- | |
- Be less strict about the package name suffix. | |
- | |
- Note that we never made sure that the string in PKG_EXT | |
- really is the final part of the filename. | |
- | |
-commit a09b143460d8671137445f05a8733be8f69c20ce | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sun May 16 12:35:34 2010 +0200 | |
- | |
- Added support for bzip2- and xz-compressed packages. | |
- | |
-commit 4b4ad16b7f79fcb59bdbd4afe1129e759c741bc2 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed May 5 19:27:55 2010 +0200 | |
- | |
- Get libarchive LDFLAGS for static linking from pkg-config. | |
- | |
-commit 5228efc2d634e5b75429b221ea4e09c20b5b4829 | |
-Author: Andrew Brouwers <abrouwers@gmail.com> | |
-Date: Sat Mar 27 17:30:02 2010 +0100 | |
- | |
- Added support for *.tbz2 and *.txz source entries in pkgmk. | |
- | |
-commit e74ba08d64663ed52813933a1a9e35a93ab384f0 | |
-Author: Andrew Brouwers <abrouwers@gmail.com> | |
-Date: Sat Mar 27 17:29:04 2010 +0100 | |
- | |
- Added support for *.rpm source entries in pkgmk. | |
- | |
-commit d1e01d50ac7775bae9663fe4cae36e3e469c31a8 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Jul 21 19:30:27 2009 +0200 | |
- | |
- Bumped version to 5.34.2. | |
- | |
-commit e6c32c41e9cdd3c596c89cf8d1696ad952516c53 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Jul 21 19:29:43 2009 +0200 | |
- | |
- Also accept *.tar.lzma source archives. | |
- | |
-commit 1593a50c02e33c4bd966bedb1878971c13a938be | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Mon Jul 20 19:25:18 2009 +0200 | |
- | |
- Bumped version to 5.34.1. | |
- | |
-commit 698c42e2a069018285395a53e21f7c0dabfec88c | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Thu Jul 16 20:53:41 2009 +0200 | |
- | |
- Preserve file permissions and ownership when extracting distfiles. | |
- | |
-commit 3a97f4e76fbc247c91187296c612ce95ae08b678 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Jul 15 20:10:36 2009 +0200 | |
- | |
- Bumped version to 5.34.0. | |
- | |
-commit de428c293b6157635965227c8f9f2296db83d54f | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Wed Jul 15 20:01:53 2009 +0200 | |
- | |
- Bug #360: Check whether files are writable early. | |
- | |
-commit 7b8b79b9c200c91b43c3ee8f0cf202f7a4021f79 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Jun 20 15:28:33 2009 +0200 | |
- | |
- Use bsdtar instead of GNU tar to extract all handled archive formats. | |
- | |
-commit 0b4af85e50830c17b3496434b2dd6a83cd2210ee | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sun Jun 14 00:02:54 2009 +0200 | |
- | |
- Only enable the tar and gzip modules when initialising libarchive. | |
- | |
- This means you will only be able to run pkgadd/pkginfo on gzipped tarballs | |
- but not on tarballs that were compressed with eg bzip2 or xz. | |
- | |
-commit b9913a29de27591584dad859dc429f42f6fa17fe | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Nov 4 20:17:18 2008 +0100 | |
- | |
- Bumped version to 5.33.0. | |
- | |
-commit 7b3f9929cba16da56f011ba666ca336b1cad2b28 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sat Nov 1 18:17:44 2008 +0100 | |
- | |
- Bug #336: Only accept http/https/ftp/file protocols in sources. | |
- | |
-commit 51c534c2bd638d6ef849bac15c6106a17a682b56 | |
-Author: Juergen Daubert <jue@jue.li> | |
-Date: Sat Nov 1 18:09:20 2008 +0100 | |
- | |
- Bug #347: wget options are configurable now. | |
- | |
-commit 92dbaab6a7ea34dc55308d12578453ec7e498295 | |
-Author: Johannes Winkelmann <jw@smts.ch> | |
-Date: Tue Sep 30 20:59:37 2008 +0200 | |
- | |
- pkgmk: add "extract only" functionality, previously suggested by Lucas Hazel and Danny Rawlins | |
- | |
-commit 140951a0685c5b159a75f86ebaf8a8703a3568ac | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sun Jun 22 11:53:58 2008 +0200 | |
- | |
- Bug #287: Added a manpage for pkgmk.conf. | |
- | |
- Based on a patch by Danny Rawlins <monster.romster@gmail.com>. | |
- | |
-commit 765b5014db1cc1fd3278f0b425d586b6dce75ae1 | |
-Author: Brett Goulder <predatorfreak@dcaf-security.org> | |
-Date: Fri Apr 11 18:48:57 2008 +0200 | |
- | |
- Bug #241: Don't check SSL certificates. | |
- | |
- pkgmk's mechanism to check file integrity is .md5sum, so relying on | |
- proper SSL certificates for https connections isn't critical. This fixes | |
- transfers from https servers whose SSL certificates are self signed only. | |
- | |
- Original patch by Jose V Beneyto <sepen@users.sourceforge.net>. | |
- | |
-commit 6ae354d751e69982f46acf37fa83cd0679eb68b7 | |
-Author: Lucas Hazel <lucas@die.net.au> | |
-Date: Fri Apr 11 18:18:09 2008 +0200 | |
- | |
- Bug #244: Relative paths are supported now in pkgadd -r. | |
- | |
-commit c67507556d9eaa476ec142762f041fd9b254655d | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Mar 1 10:18:03 2008 +0100 | |
- | |
- Bumped version to 5.32.0. | |
- | |
-commit 3c0fce38e98fa4d796c94bd301afd138e27ab40e | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Mar 1 10:17:07 2008 +0100 | |
- | |
- Removed /etc/mail/cf from the UPGRADE rules in pkgadd.conf. | |
- | |
-commit d324dd089cd8d643a3d6616de11de178919e10e7 | |
-Author: Johannes Weiner <hannes@saeurebad.de> | |
-Date: Mon Dec 3 18:37:50 2007 +0100 | |
- | |
- Bug #204: Restore mtime for extracted files. | |
- | |
-commit 2d9e8fdf3f58dc8a0a5d0e198d2da32976b8b62c | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sun Dec 2 19:39:44 2007 +0100 | |
- | |
- Bumped version to 5.31.0. | |
- | |
-commit 2dee8e17ce94c29744a8d097b2bf6b3165f52659 | |
-Author: Matt Housh <jaeger@crux.nu> | |
-Date: Sun Dec 2 12:25:25 2007 -0600 | |
- | |
- added PKGMK_SOURCE_MIRRORS support | |
- | |
-commit 86830d3c84fef2d68fee2def7a276caaa94d72f4 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Apr 21 12:31:09 2007 +0200 | |
- | |
- Improved "dist" target. | |
- | |
-commit 6fe55c25a23b7ee2e84e3ad2d508196f3e5f82a3 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Apr 18 22:38:09 2007 +0200 | |
- | |
- Updated copyright notices. | |
- | |
-commit 9a7adb608a4b3e207e2c80ebf316682e205c2cc6 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Apr 18 22:12:57 2007 +0200 | |
- | |
- Don't mention libtar in README anymore. | |
- | |
-commit b3197f39a0ac2c23680450183442534e3a028cc4 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Apr 18 22:12:15 2007 +0200 | |
- | |
- Bumped version to 5.30.0. | |
- | |
-commit e2a28799e48b911879eea3880f233f80ae38736f | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Apr 18 22:11:18 2007 +0200 | |
- | |
- Removed NEWS. | |
- | |
- It's annoying to maintain, and we have ChangeLog. | |
- | |
-commit c9984aa86ec99c6dd8d47c2bf3d7a409a1c4fa48 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Apr 17 20:49:58 2007 +0200 | |
- | |
- Moved archive initialization code to INIT_ARCHIVE. | |
- | |
-commit bfb5480be95ac565f1a057750429857385478be9 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sun Feb 25 13:51:10 2007 +0100 | |
- | |
- bug #107: upgrade udev rules by default. | |
- | |
-commit 9fb2521b153582faf2d79e29f44421d34c2b6ae1 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Fri Dec 29 16:51:27 2006 +0100 | |
- | |
- Removed some dead (and buggy) code. | |
- | |
-commit 2a62ed9ad2688a873bc7773b2c3cf818456aeabb | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Dec 6 21:17:49 2006 +0100 | |
- | |
- Set ARCHIVE_EXTRACT_UNLINK when extracting archive entries. | |
- | |
-commit e83769cac3e8ccbe57b287467746c9c1a7254136 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Sat Dec 2 01:55:52 2006 +0100 | |
- | |
- Fixed setting up the flags for archive_read_extract(). | |
- | |
-commit 25efd91b9eec7755e4296591f531c923209dd1fa | |
-Author: Simone Rota <sip@crux.nu> | |
-Date: Sat Dec 2 01:43:19 2006 +0100 | |
- | |
- preserve owner/permissions when extracting | |
- | |
-commit 80db05ef8d1a1ce7d7948a9d06732209f5f84fce | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Fri Nov 24 21:59:10 2006 +0100 | |
- | |
- Fixed the permission lookup problem for hardlinks. | |
- | |
- We now do two runs over the archive, where the first one remembers | |
- permissions for hardlink targets, which are then looked up in the | |
- second run. | |
- | |
-commit 7f84e1cc9e8e7ae698e8b648f7dbba98a2753150 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Fri Nov 24 21:42:59 2006 +0100 | |
- | |
- Prefer archive_entry_mode() over archive_entry_stat(). | |
- | |
- If we're only interested in the mode, just call archive_entry_mode() | |
- instead of getting the whole stat struct. | |
- | |
-commit 632a66b648eb8a267a62d101c8e1182f1647017d | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Fri Nov 17 21:31:56 2006 +0100 | |
- | |
- Removed the libtar archive and patches. | |
- | |
-commit fa6b0879f2c91662cdef26b598889b9834196805 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Nov 8 20:44:43 2006 +0100 | |
- | |
- Some indentation fixes. | |
- | |
-commit 25f9975ca5d5010bd4f5cbfbb9faa1fed71b3db4 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Wed Nov 8 20:35:33 2006 +0100 | |
- | |
- Use archive_errno() instead of errno for libarchive errors. | |
- | |
-commit c49e53c6c7e53e77fd7b171af0b43f6f2d19a8d7 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Wed Nov 8 20:28:54 2006 +0100 | |
- | |
- Added .gitignore. | |
- | |
-commit c3434674df8af13a0eab79b6784e6086fa08731f | |
-Author: Matthias-Christian Ott <matthias.christian@tiscali.de> | |
-Date: Wed Nov 15 20:32:56 2006 +0100 | |
- | |
- Switched from libtar to libarchive. | |
- | |
-commit 4f05762e7ed13822e8d48100d12533c0e3373be1 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Nov 14 22:22:53 2006 +0100 | |
- | |
- Updated NEWS for the 5.21 release. | |
- | |
-commit d7fbaa09361f5b98a49ff0b3b179f2da5f574561 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Nov 14 22:13:16 2006 +0100 | |
- | |
- Don't tar up the .git directory. | |
- | |
-commit 3309e1f843c1bf875965a7af8d904d29b8ba93b1 | |
-Author: Tilman Sauerbeck <tilman@crux.nu> | |
-Date: Tue Nov 14 22:12:11 2006 +0100 | |
- | |
- Generate ChangeLog from "git log". | |
- | |
-commit 376786d8722dcb1df0690be79d3c6b8c6274cf34 | |
-Author: Matt Housh <jaeger@crux.nu> | |
-Date: Tue Nov 14 22:07:08 2006 +0100 | |
- | |
- Enabled large file support. | |
- | |
-commit 14ab4111bddf38e32facfb586955d39e077d1fd5 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Sun Oct 1 11:42:46 2006 +0200 | |
- | |
- added documentation for the INSTALL rules | |
- | |
-commit e727dae97daeeb05bf4747b4c91a3461ebd695d4 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Tue Sep 12 15:16:26 2006 +0200 | |
- | |
- added an UPGRADE rule for /var/run/utmp. thanks to Anton Vorontsov. | |
- | |
-commit 22131995295a9db9be7b461cbcefe65d8ffe9df1 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Sun Aug 27 12:12:21 2006 +0200 | |
- | |
- tell the user when we didn't install a file because an INSTALL rule kicked in | |
- | |
-commit 3e5b7ed9bbe9a9659486a9d4c51f3466d1e877ec | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Aug 25 12:54:15 2006 +0200 | |
- | |
- added support for INSTALL rules. based on a patch by johannes. documentation needs to be updated. | |
- | |
-commit 1e0dfb6d09297f14827ed72e38dd48b4eb770e3f | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Thu Aug 24 16:17:55 2006 +0200 | |
- | |
- prepared the code for the addition of the INSTALL rule | |
- | |
-commit b0bbde50af5aba136af13bb0f5e3869e101914df | |
-Author: Simone Rota <sip@crux.nu> | |
-Date: Sat Apr 29 10:01:53 2006 +0200 | |
- | |
- pkgmk: optimize file detection for stripping. Thanks to aon and mark | |
- | |
-commit 4943d62183b446fb9316e1393d115425ac305292 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Apr 21 07:45:35 2006 +0200 | |
- | |
- added an UPGRADE rule for crontabs | |
- | |
-commit 5401bd4576520efbe50d5f6eda4cc70788823879 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Apr 14 10:06:11 2006 +0200 | |
- | |
- use the proper sentinel in the execl() call | |
- | |
-commit e55714dd079a329c915776594a06a71252c20474 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Apr 14 09:34:21 2006 +0200 | |
- | |
- write warnings and errors to stderr instead of stdout | |
- | |
-commit e4b95a33c35b2fac56dd1015aa2d1eb6baf8c032 | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Apr 14 09:33:50 2006 +0200 | |
- | |
- put a note regarding the ChangeLog/NEWS move in the new ChangeLog, too | |
- | |
-commit aba8af68486e0bd6a271c19469f86b78cf37f0aa | |
-Author: Tilman Sauerbeck <tilman@code-monkey.de> | |
-Date: Fri Apr 14 09:23:55 2006 +0200 | |
- | |
- moved ChangeLog to NEWS | |
- | |
-commit 9ac667e68d3e36eb99272eac57219002ee2318e6 | |
-Author: Simone Rota <sip@crux.nu> | |
-Date: Fri Nov 11 23:40:48 2005 +0100 | |
- | |
- Initial import | |
+ initial commit | |
diff -pruN pkgutils-5.35.6/.gitignore pkgutils-5.32.0_8/.gitignore | |
--- pkgutils-5.35.6/.gitignore 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/.gitignore 2010-07-21 21:42:09.000000000 +1000 | |
@@ -1,7 +1,6 @@ | |
.depend | |
*.o | |
*.8 | |
-*.5 | |
pkgadd | |
pkgmk | |
rejmerge | |
diff -pruN pkgutils-5.35.6/main.cc pkgutils-5.32.0_8/main.cc | |
--- pkgutils-5.35.6/main.cc 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/main.cc 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/Makefile pkgutils-5.32.0_8/Makefile | |
--- pkgutils-5.35.6/Makefile 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/Makefile 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,8 @@ | |
# pkgutils | |
# | |
# Copyright (c) 2000-2005 by Per Liden <per@fukt.bth.se> | |
-# Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+# Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
+# Copyright (c) 2008-2010 by HV Linux (http://hvlinux.net) | |
# | |
# 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 | |
@@ -22,19 +23,17 @@ | |
DESTDIR = | |
BINDIR = /usr/bin | |
-MANDIR = /usr/man | |
+MANDIR ?= /usr/share/man | |
ETCDIR = /etc | |
-VERSION = 5.35.6 | |
+VERSION = 5.32.0_8 | |
NAME = pkgutils-$(VERSION) | |
CXXFLAGS += -DNDEBUG | |
CXXFLAGS += -O2 -Wall -pedantic -D_GNU_SOURCE -DVERSION=\"$(VERSION)\" \ | |
-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 | |
-LIBARCHIVELIBS := $(shell pkg-config --libs --static libarchive) | |
- | |
-LDFLAGS += -static $(LIBARCHIVELIBS) | |
+LDFLAGS += -static -larchive -lz -lbz2 | |
OBJECTS = main.o pkgutil.o pkgadd.o pkgrm.o pkginfo.o | |
diff -pruN pkgutils-5.35.6/pkgadd.8.in pkgutils-5.32.0_8/pkgadd.8.in | |
--- pkgutils-5.35.6/pkgadd.8.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgadd.8.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -58,6 +58,6 @@ Configuration file. | |
.SH SEE ALSO | |
pkgrm(8), pkginfo(8), pkgmk(8), rejmerge(8) | |
.SH COPYRIGHT | |
-pkgadd (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+pkgadd (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
pkgadd (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/pkgadd.cc pkgutils-5.32.0_8/pkgadd.cc | |
--- pkgutils-5.35.6/pkgadd.cc 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgadd.cc 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkgadd.conf pkgutils-5.32.0_8/pkgadd.conf | |
--- pkgutils-5.35.6/pkgadd.conf 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgadd.conf 2010-07-21 21:42:09.000000000 +1000 | |
@@ -21,8 +21,5 @@ UPGRADE ^etc/rc\.d/net$ NO | |
UPGRADE ^etc/udev/rules.d/.*$ YES | |
UPGRADE ^etc/udev/rules.d/1.*$ NO | |
-UPGRADE ^etc/udev/hwdb.d/.*$ YES | |
-UPGRADE ^etc/udev/hwdb.bin$ YES | |
-UPGRADE ^etc/ssl/cert.pem$ YES | |
# End of file | |
diff -pruN pkgutils-5.35.6/pkgadd.h pkgutils-5.32.0_8/pkgadd.h | |
--- pkgutils-5.35.6/pkgadd.h 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgadd.h 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkginfo.8.in pkgutils-5.32.0_8/pkginfo.8.in | |
--- pkgutils-5.35.6/pkginfo.8.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkginfo.8.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -37,6 +37,6 @@ Print help and exit. | |
.SH SEE ALSO | |
pkgadd(8), pkgrm(8), pkgmk(8), rejmerge(8) | |
.SH COPYRIGHT | |
-pkginfo (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+pkginfo (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
pkginfo (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/pkginfo.cc pkgutils-5.32.0_8/pkginfo.cc | |
--- pkgutils-5.35.6/pkginfo.cc 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkginfo.cc 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkginfo.h pkgutils-5.32.0_8/pkginfo.h | |
--- pkgutils-5.35.6/pkginfo.h 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkginfo.h 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkgmk.8.in pkgutils-5.32.0_8/pkgmk.8.in | |
--- pkgutils-5.35.6/pkgmk.8.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgmk.8.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -5,7 +5,7 @@ pkgmk \- make software package | |
\fBpkgmk [options]\fP | |
.SH DESCRIPTION | |
\fBpkgmk\fP is a \fIpackage management\fP utility, which makes | |
-a software package. A \fIpackage\fP is an archive of files (.pkg.tar.gz, .pkg.tar.bz2 or .pkg.tar.xz) | |
+a software package. A \fIpackage\fP is an archive of files (.pkg.tar.gz) | |
that can be installed using pkgadd(8). | |
To prepare to use pkgmk, you must write a file named \fIPkgfile\fP | |
@@ -17,6 +17,8 @@ times of the source files to decide if t | |
Global build configuration is stored in \fI/etc/pkgmk.conf\fP. This | |
file is read by pkgmk at startup. | |
+ | |
+If you have a SMP system installing pigz will speed up package and man page compression. | |
.SH OPTIONS | |
.TP | |
.B "\-i, \-\-install" | |
@@ -34,6 +36,9 @@ Download missing source file(s). | |
.B "\-do, \-\-download\-only" | |
Do not build, only download missing source file(s). | |
.TP | |
+.B "\-eo, \-\-extract\-only" | |
+Do not build, only extract source file(s). | |
+.TP | |
.B "\-utd, \-\-up\-to\-date" | |
Do not build, only check if the package is up to date. | |
.TP | |
@@ -88,40 +93,9 @@ Global package make configuration. | |
.TP | |
.B "wget" | |
Used by pkgmk to download source code. | |
-.SH EXIT CODES | |
-.TP | |
-.B 0 | |
-No error occured. | |
-.TP | |
-.B 1 | |
-A general error has occured. | |
-.TP | |
-.B 2 | |
-The Pkgfile is invalid. | |
-.TP | |
-.B 3 | |
-The source or build directory is missing or is lacking read/write permissions. | |
-.TP | |
-.B 4 | |
-An error occured during the download of source files. | |
-.TP | |
-.B 5 | |
-An error occured during unpacking of source files. | |
-.TP | |
-.B 6 | |
-An md5sum mismatch occured. | |
-.TP | |
-.B 7 | |
-A footprint mismatch occured. | |
-.TP | |
-.B 8 | |
-An error occured while running the build function. | |
-.TP | |
-.B 9 | |
-An error occured while installing the package via pkgadd. | |
.SH SEE ALSO | |
-pkgmk.conf(5), pkgadd(8), pkgrm(8), pkginfo(8), rejmerge(8), wget(1) | |
+pkgadd(8), pkgrm(8), pkginfo(8), rejmerge(8), wget(1), pkgmk.conf(5) | |
.SH COPYRIGHT | |
-pkgmk (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+pkgmk (pkgutils) is Copyright (c) 2000-2005 Per Liden, Copyright (c) 2006-2007 CRUX team (http://crux.nu) and Copyright (c) 2008-2010 by HV Linux (http://hvlinux.net). | |
pkgmk (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/pkgmk.conf pkgutils-5.32.0_8/pkgmk.conf | |
--- pkgutils-5.35.6/pkgmk.conf 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgmk.conf 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,25 +2,8 @@ | |
# /etc/pkgmk.conf: pkgmk(8) configuration | |
# | |
-export CFLAGS="-O2 -march=x86-64 -pipe" | |
-export CXXFLAGS="${CFLAGS}" | |
- | |
-# export MAKEFLAGS="-j2" | |
- | |
-case ${PKGMK_ARCH} in | |
- "64"|"") | |
- ;; | |
- "32") | |
- export CFLAGS="${CFLAGS} -m32" | |
- export CXXFLAGS="${CXXFLAGS} -m32" | |
- export LDFLAGS="${LDFLAGS} -m32" | |
- export PKG_CONFIG_LIBDIR="/usr/lib32/pkgconfig" | |
- ;; | |
- *) | |
- echo "Unknown architecture selected! Exiting." | |
- exit 1 | |
- ;; | |
-esac | |
+export CFLAGS="-O2 -march=i686 -pipe" | |
+export CXXFLAGS="-O2 -march=i686 -pipe" | |
# PKGMK_SOURCE_MIRRORS=() | |
# PKGMK_SOURCE_DIR="$PWD" | |
@@ -28,9 +11,7 @@ esac | |
# PKGMK_WORK_DIR="$PWD/work" | |
# PKGMK_DOWNLOAD="no" | |
# PKGMK_IGNORE_FOOTPRINT="no" | |
-# PKGMK_IGNORE_NEW="no" | |
+# PKGMK_IGNORE_FOOTPRINT_NEW="no" | |
# PKGMK_NO_STRIP="no" | |
-# PKGMK_WGET_OPTS="" | |
-# PKGMK_COMPRESSION_MODE="gz" | |
# End of file | |
diff -pruN pkgutils-5.35.6/pkgmk.conf.5.in pkgutils-5.32.0_8/pkgmk.conf.5.in | |
--- pkgutils-5.35.6/pkgmk.conf.5.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgmk.conf.5.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -1,80 +1,63 @@ | |
.TH pkgmk.conf 5 "" "pkgutils #VERSION#" "" | |
.SH NAME | |
-\fBpkgmk.conf\fP \- Configuration file for pkgmk. | |
+\fBpkgmk.conf\fR \- Configuration file for pkgmk. | |
.SH DESCRIPTION | |
\fBpkgmk.conf\fP configures pkgutils package make, pkgmk(8). | |
+.TP | |
.SH FILE FORMAT | |
-The file consists of a number of variable assignments of the form \fBoption\fP=\fBvalue\fP. Comments can be specified by putting a hash (#) symbol as the first character on the line. | |
+The file consists of comments and options with arguments. Each line which starts with a hash (#) symbol is ignored by the parser. Options and arguments are case sensitive and of the form \fBOption=Argument\fR. | |
.SH DIRECTIVES | |
.LP | |
-If some option is not used (commented out or not included in the configuration file at all) pkgmk will take a default action. | |
+When some option is not used (commented out or not included in the configuration file at all) pkgmk takes a default action. | |
.TP | |
-\fBexport CFLAGS='STRING'\fP | |
+\fBCFLAGS='STRING'\fR | |
Set C compiler options. | |
-.br | |
+.br | |
Default: none | |
.TP | |
-\fBexport CXXFLAGS='STRING'\fP | |
+\fBCXXFLAGS='STRING'\fR | |
Set C++ compiler options. | |
-.br | |
-Default: none | |
-.TP | |
-\fBexport MAKEFLAGS='STRING'\fP | |
-Set make options. | |
-.br | |
+.br | |
Default: none | |
.TP | |
-\fBPKGMK_SOURCE_MIRRORS=('STRING')\fP | |
-Set mirrors to check and download source archives from. | |
-.br | |
+\fBPKGMK_SOURCE_MIRRORS=('STRING')\fR | |
+Set mirrors to check and download from. | |
+.br | |
Default: none | |
.TP | |
-\fBPKGMK_SOURCE_DIR='STRING'\fP | |
-Set directory for downloaded source archives. | |
-.br | |
-Default: directory of Pkgfile. | |
+\fBPKGMK_SOURCE_DIR='STRING'\fR | |
+Set directory for downloaded files. | |
+.br | |
+Default: current directory of Pkgfile. | |
.TP | |
\fBPKGMK_PACKAGE_DIR='STRING'\fR | |
Set directory for built packages. | |
-.br | |
-Default: directory of Pkgfile. | |
+.br | |
+Default: current directory of Pkgfile. | |
.TP | |
-\fBPKGMK_WORK_DIR='STRING'\fP | |
+\fBPKGMK_WORK_DIR='STRING'\fR | |
Set directory for building packages. | |
-.br | |
-Default: '\fBfoo\fP/work', where \fBfoo\fP is the directory of the Pkgfile. | |
+.br | |
+Default: work directory of Pkgfile. | |
+.TP | |
+\fBPKGMK_DOWNLOAD='STRING'\fR | |
+Download if source is not found. | |
+.br | |
+Default: no | |
+.TP | |
+\fBPKGMK_IGNORE_FOOTPRINT='STRING'\fR | |
+Ignore footprint verification. | |
+.br | |
+Default: no | |
+.TP | |
+\fBPKGMK_NO_STRIP='STRING'\fR | |
+Don't strip binarys of symbols. | |
+.br | |
+Default: no | |
.TP | |
-\fBPKGMK_WGET_OPTS='STRING'\fP | |
-Additional options for wget(1), which is used by pkgmk to download all files. | |
-.br | |
-.TP | |
-\fBPKGMK_DOWNLOAD='STRING'\fP | |
-If set to 'yes', pkgmk will download the source archives if necessary. | |
-.br | |
-Default: 'no' | |
-.TP | |
-\fBPKGMK_IGNORE_FOOTPRINT='STRING'\fP | |
-If set to 'yes', pkgmk will not perform a footprint check of the built package. | |
-.br | |
-Default: 'no' | |
-.TP | |
-\fBPKGMK_IGNORE_NEW='STRING'\fP | |
-If set to 'yes', pkgmk will ignore new files in a footprint mismatch. | |
-.br | |
-Default: 'no' | |
-.TP | |
-\fBPKGMK_NO_STRIP='STRING'\fP | |
-If set to 'no', pkgmk will strip built binaries. | |
-.br | |
-Default: 'no' | |
-.TP | |
-\fBPKGMK_COMPRESSION_MODE='STRING'\fP | |
-Option to select the mode used to compress the packages. Valid strings are gz, bz2 and xz. | |
-.br | |
-Default: 'gz' | |
.SH SEE ALSO | |
-pkgmk(8) | |
+pkgmk(8), prt-get(8), prt-get.conf(5), wget(1). | |
.SH COPYRIGHT | |
-pkgmk (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+pkgmk (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
pkgmk (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/pkgmk.in pkgutils-5.32.0_8/pkgmk.in | |
--- pkgutils-5.35.6/pkgmk.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgmk.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -3,7 +3,8 @@ | |
# pkgutils | |
# | |
# Copyright (c) 2000-2005 Per Liden | |
-# Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+# Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
+# Copyright (c) 2008-2010 by HV Linux (http://hvlinux.net) | |
# | |
# 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 | |
@@ -21,17 +22,36 @@ | |
# USA. | |
# | |
-## | |
-# error codes | |
-E_GENERAL=1 | |
-E_PKGFILE=2 # invalid Pkgfile | |
-E_DIR_PERM=3 # (source/build) directory missing or missing read/write permission | |
-E_DOWNLOAD=4 # error during download | |
-E_UNPACK=5 # error during unpacking of source file(s) | |
-E_MD5=6 # md5sum verification failed | |
-E_FOOTPRINT=7 # footprint check failure | |
-E_BUILD=8 # error while running 'build()' | |
-E_INSTALL=9 # error while installing the package via 'pkgadd' | |
+array() { | |
+ printf "%s" "${2}" | tr --delete '\n' | sed \ | |
+ -e 's|[\t| ]\+| |g' | \ | |
+ cut --delimiter=' ' --fields="${1}" | |
+} | |
+ | |
+array_count() { | |
+ printf "%s" "${1}" | tr --delete '\n' | sed \ | |
+ -e 's|[\t| ]\+| |g' \ | |
+ -e 's|^ ||' \ | |
+ -e 's| $||' | wc --words | |
+} | |
+ | |
+array_remove() { | |
+ local ITEM ARRAY TOTAL ITEM_VALUE | |
+ ITEM="${1}" | |
+ ARRAY="${2}" | |
+ TOTAL="$(array_count "${ARRAY}")" | |
+ ITEM_VALUE="$(array "${ITEM}" "${ARRAY}")" | |
+ if [ "${TOTAL}" = '1' ]; then | |
+ # 1 item to remove with no spaces | |
+ printf "%s" "${ARRAY}" | sed -e "s|$ITEM_VALUE||" | |
+ elif [ "${ITEM}" = "${TOTAL}" ]; then | |
+ # last item in array to remove with leading space | |
+ printf "%s" "${ARRAY}" | sed -e "s| $ITEM_VALUE||" | |
+ else | |
+ # remove items with trailing space | |
+ printf "%s" "${ARRAY}" | sed -e "s|$ITEM_VALUE ||" | |
+ fi | |
+} | |
info() { | |
echo "=======> $1" | |
@@ -46,11 +66,13 @@ error() { | |
} | |
get_filename() { | |
- if [[ $1 =~ ^(http|https|ftp|file)://.*/(.+) ]]; then | |
- echo "$PKGMK_SOURCE_DIR/${BASH_REMATCH[2]}" | |
- else | |
- echo $1 | |
+ local FILE="`echo $1 | sed 's|^.*://.*/||g'`" | |
+ | |
+ if [ "$FILE" != "$1" ]; then | |
+ FILE="$PKGMK_SOURCE_DIR/$FILE" | |
fi | |
+ | |
+ echo $FILE | |
} | |
get_basename() { | |
@@ -58,110 +80,198 @@ get_basename() { | |
echo $FILE | |
} | |
+get_scheme() { | |
+ local SCHEME="`echo $1 | sed 's|\(^.*\)://.*|\1|g'`" | |
+ echo $SCHEME | |
+} | |
+ | |
+get_mirror_name() { | |
+ local NAME="`echo $1 | sed 's|^.*://||' | sed -e 's|/.*||'`" | |
+ echo $NAME | |
+} | |
+ | |
+get_mirror_path() { | |
+ local URL="`echo $1 | sed "s|^.*://$2/||"`" | |
+ echo $URL | |
+} | |
+ | |
check_pkgfile() { | |
if [ ! "$name" ]; then | |
error "Variable 'name' not specified in $PKGMK_PKGFILE." | |
- exit $E_PKGFILE | |
+ exit 1 | |
elif [ ! "$version" ]; then | |
error "Variable 'version' not specified in $PKGMK_PKGFILE." | |
- exit $E_PKGFILE | |
+ exit 1 | |
elif [ ! "$release" ]; then | |
error "Variable 'release' not specified in $PKGMK_PKGFILE." | |
- exit $E_PKGFILE | |
+ exit 1 | |
elif [ "`type -t build`" != "function" ]; then | |
error "Function 'build' not specified in $PKGMK_PKGFILE." | |
- exit $E_PKGFILE | |
+ exit 1 | |
fi | |
} | |
check_directory() { | |
- if [ ! -d $1 ]; then | |
- error "Directory '$1' does not exist." | |
- exit $E_DIR_PERM | |
- elif [ ! -w $1 ]; then | |
- error "Directory '$1' not writable." | |
- exit $E_DIR_PERM | |
- elif [ ! -x $1 ] || [ ! -r $1 ]; then | |
- error "Directory '$1' not readable." | |
- exit $E_DIR_PERM | |
- fi | |
-} | |
- | |
-check_file() { | |
- if [ -e $1 ] && [ ! -w $1 ]; then | |
- error "File '$1' is not writable." | |
+ local DIRECTORY="`echo $1 | sed -e "s|/$group$||"`" | |
+ if [ ! -d "$DIRECTORY" ]; then | |
+ error "Directory '$DIRECTORY' does not exist." | |
+ exit 1 | |
+ elif [ ! -w "$DIRECTORY" ]; then | |
+ error "Directory '$DIRECTORY' not writable." | |
+ exit 1 | |
+ elif [ ! -x "$DIRECTORY" ] || [ ! -r "$DIRECTORY" ]; then | |
+ error "Directory '$DIRECTORY' not readable." | |
exit 1 | |
fi | |
+ if [ ! -d "$1" ]; then | |
+ mkdir "$1" | |
+ fi | |
} | |
download_file() { | |
- info "Downloading '$1'." | |
+ local FILE CURL_RETRY CURL_RETRY_DELAY IS_FTP FILE_SIZE NO_MIRROR_ERROR | |
+ IS_FTP='0' | |
+ FILE="${1}" | |
+ NO_MIRROR_ERROR="${2}" | |
+ info "Downloading '${FILE}'." | |
+ | |
+ if [ ! -e "$(which curl)" ]; then | |
+ error "Command 'curl' not found." | |
+ exit 1 | |
+ fi | |
- if [ ! "`type -p wget`" ]; then | |
- error "Command 'wget' not found." | |
- exit $E_GENERAL | |
+ # curl times out on ftp with error 28 and then tosses the data away | |
+ # this is a work around | |
+ [ -n "$(printf "${FILE}" | egrep '^ftp://')" ] && IS_FTP='1' | |
+ | |
+ # if curl has more than 1 retrys it will toss out file on ftp | |
+ # protocol when ftp server does not close the connection | |
+ if [ "${IS_FTP}" = '1' ]; then | |
+ unset CURL_RETRY_DELAY | |
+ CURL_RETRY='--retry 0' | |
+ else | |
+ CURL_RETRY_DELAY=' --retry-delay 10' | |
+ CURL_RETRY='--retry 3' | |
fi | |
- LOCAL_FILENAME=`get_filename $1` | |
- LOCAL_FILENAME_PARTIAL="$LOCAL_FILENAME.partial" | |
- DOWNLOAD_OPTS="--passive-ftp --no-directories --tries=3 --waitretry=3 \ | |
- --directory-prefix=$PKGMK_SOURCE_DIR \ | |
- --output-document=$LOCAL_FILENAME_PARTIAL --no-check-certificate" | |
+ LOCAL_FILENAME="$(get_filename "${FILE}")" | |
+ LOCAL_FILENAME_PARTIAL="${LOCAL_FILENAME}.partial" | |
+ DOWNLOAD_OPTS="--fail --globoff --insecure \ | |
+--location ${CURL_RETRY}${CURL_RETRY_DELAY} \ | |
+--connect-timeout 120 --keepalive-time 10 --speed-limit 1k \ | |
+--max-redirs 10 --output ${LOCAL_FILENAME_PARTIAL} " | |
- if [ -f "$LOCAL_FILENAME_PARTIAL" ]; then | |
- info "Partial download found, trying to resume" | |
- RESUME_CMD="-c" | |
+ if [ -f "${LOCAL_FILENAME_PARTIAL}" ]; then | |
+ info 'Partial download found, trying to resume' | |
+ RESUME_CMD='--continue-at - ' | |
fi | |
- error=1 | |
+ error='1' | |
- BASENAME=`get_basename $1` | |
+ BASENAME="$(get_basename "${FILE}")" | |
for REPO in ${PKGMK_SOURCE_MIRRORS[@]}; do | |
- REPO="`echo $REPO | sed 's|/$||'`" | |
- wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $REPO/$BASENAME | |
- error=$? | |
- if [ $error == 0 ]; then | |
+ REPO="$(echo $REPO | sed 's|/$||')" | |
+ echo "curl ${RESUME_CMD}${DOWNLOAD_OPTS}${REPO}/${BASENAME}" | |
+ curl ${RESUME_CMD}${DOWNLOAD_OPTS}${REPO}/${BASENAME} | |
+ error="$?" | |
+ if [ "${IS_FTP}" = '1' ] && [ "${error}" = '28' ]; then | |
+ break | |
+ fi | |
+ if [ "${error}" = '0' ]; then | |
break | |
fi | |
done | |
- if [ $error != 0 ]; then | |
+ if [ "${error}" != '0' ]; then | |
while true; do | |
- wget $RESUME_CMD $DOWNLOAD_OPTS $PKGMK_WGET_OPTS $1 | |
- error=$? | |
- if [ $error != 0 ] && [ "$RESUME_CMD" ]; then | |
- info "Partial download failed, restarting" | |
- rm -f "$LOCAL_FILENAME_PARTIAL" | |
- RESUME_CMD="" | |
+ echo "curl ${RESUME_CMD}${DOWNLOAD_OPTS}${FILE}" | |
+ curl ${RESUME_CMD}${DOWNLOAD_OPTS}${FILE} | |
+ error="$?" | |
+ if [ "${IS_FTP}" = '1' ] && [ "${error}" != '28' ] && \ | |
+ [ "${error}" != '0' ] && [ "${RESUME_CMD}" ]; then | |
+ info 'Partial download failed, restarting' | |
+ rm -f "${LOCAL_FILENAME_PARTIAL}" | |
+ RESUME_CMD='' | |
else | |
break | |
fi | |
done | |
fi | |
- | |
- if [ $error != 0 ]; then | |
- error "Downloading '$1' failed." | |
- exit $E_DOWNLOAD | |
+ | |
+ if [ "${IS_FTP}" = '1' ] && [ "${error}" = '28' ] && [ -e "${FILE}" ]; then | |
+ error='0' | |
fi | |
- mv -f "$LOCAL_FILENAME_PARTIAL" "$LOCAL_FILENAME" | |
+ if [ "${NO_MIRROR_ERROR}" = 'no_mirror_error' ]; then | |
+ if [ "${error}" != '0' ]; then | |
+ warning "Downloading '${FILE}' from mirror failed, trying again." | |
+ fi | |
+ elif [ "${error}" != '0' ]; then | |
+ error "Downloading '${FILE}' failed." | |
+ exit 1 | |
+ fi | |
+ | |
+ if [ -e "${LOCAL_FILENAME_PARTIAL}" ]; then | |
+ | |
+ # some mirrors return text when file does not exist so remove text file. | |
+ if [ "$(/usr/bin/file --brief --mime "${LOCAL_FILENAME_PARTIAL}" | grep 'text/plain')" ]; then | |
+ # if file is text and has archive extension it's wrong | |
+ case "${LOCAL_FILENAME_PARTIAL}" in | |
+ *.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz|*.tar.lzma|*.tar.xz|*.tar.lrzip|*.zip) | |
+ warning "Downloading '${FILE}' from mirror returned text, trying again." | |
+ rm "${LOCAL_FILENAME_PARTIAL}" | |
+ ;; | |
+ *) | |
+ # allow other files to be text like patch files | |
+ mv "${LOCAL_FILENAME_PARTIAL}" "${LOCAL_FILENAME}" | |
+ ;; | |
+ esac | |
+ else | |
+ mv "${LOCAL_FILENAME_PARTIAL}" "${LOCAL_FILENAME}" | |
+ fi | |
+ fi | |
} | |
download_source() { | |
- local FILE LOCAL_FILENAME | |
+ local DOWNLOAD_FILE FILE LOCAL_FILENAME SCHEME PKG_SOURCE_MIRRORS PKG_SOURCE_MIRROR MIRROR_NAME LOCAL_FILENAME | |
for FILE in ${source[@]}; do | |
- LOCAL_FILENAME=`get_filename $FILE` | |
- if [ ! -e $LOCAL_FILENAME ]; then | |
- if [ "$LOCAL_FILENAME" = "$FILE" ]; then | |
- error "Source file '$LOCAL_FILENAME' not found (can not be downloaded, URL not specified)." | |
- exit $E_DOWNLOAD | |
+ LOCAL_FILENAME="$(get_filename "${FILE}")" | |
+ if [ ! -e "${LOCAL_FILENAME}" ]; then | |
+ if [ "${LOCAL_FILENAME}" = "${FILE}" ]; then | |
+ error "Source file '${LOCAL_FILENAME}' not found (can not be downloaded, URL not specified)." | |
+ exit 1 | |
else | |
- if [ "$PKGMK_DOWNLOAD" = "yes" ]; then | |
- download_file $FILE | |
+ if [ "${PKGMK_DOWNLOAD}" = 'yes' ]; then | |
+ SCHEME="$(get_scheme "${FILE}")" | |
+ if [ "${SCHEME}" = 'mirror' ]; then | |
+ unset MIRROR_NAME PKG_SOURCE_MIRRORS PKG_SOURCE_MIRROR MIRROR_TOTAL | |
+ MIRROR_NAME="$(get_mirror_name "${FILE}")" | |
+ if [ ! -e "/etc/ports/mirrors/${MIRROR_NAME}" ]; then | |
+ error "Error '/etc/ports/mirrors/${MIRROR_NAME}' does not exist." | |
+ fi | |
+ | |
+ # start looping though mirror file | |
+ MIRROR_TOTAL=2 | |
+ PKG_SOURCE_MIRRORS="$(cat "/etc/ports/mirrors/${MIRROR_NAME}" | xargs)" | |
+ LOCAL_FILENAME="$(get_filename "${FILE}")" | |
+ while [ "${MIRROR_TOTAL}" -gt '1' ] && [ ! -e "${LOCAL_FILENAME}" ]; do | |
+ MIRROR_TOTAL="$(array_count "${PKG_SOURCE_MIRRORS}")" | |
+ PKG_SOURCE_MIRROR="$(( $(perl -e "print int( rand( ${MIRROR_TOTAL} ) );") + 1))" | |
+ DOWNLOAD_FILE="$(array "${PKG_SOURCE_MIRROR}" "${PKG_SOURCE_MIRRORS}")$(get_mirror_path "${FILE}" "${MIRROR_NAME}")" | |
+ DOWNLOAD_FILE="$(echo "${DOWNLOAD_FILE}" | sed -e "s|%n|$name|")" | |
+ download_file "${DOWNLOAD_FILE}" 'no_mirror_error' | |
+ | |
+ # remove failed mirror but this wont get parsed if file has been downloaded already | |
+ PKG_SOURCE_MIRRORS="$(array_remove "${PKG_SOURCE_MIRROR}" "${PKG_SOURCE_MIRRORS}")" | |
+ done | |
+ | |
+ else | |
+ download_file "${FILE}" | |
+ fi | |
else | |
- error "Source file '$LOCAL_FILENAME' not found (use option -d to download)." | |
- exit $E_DOWNLOAD | |
+ error "Source file '${LOCAL_FILENAME}' not found (use option -d to download)." | |
+ exit 1 | |
fi | |
fi | |
fi | |
@@ -172,10 +282,20 @@ unpack_source() { | |
local FILE LOCAL_FILENAME COMMAND | |
for FILE in ${source[@]}; do | |
- LOCAL_FILENAME=`get_filename $FILE` | |
+ LOCAL_FILENAME=$(get_filename "${FILE}") | |
case $LOCAL_FILENAME in | |
- *.tar|*.tar.gz|*.tar.Z|*.tgz|*.tar.bz2|*.tbz2|*.tar.xz|*.txz|*.tar.lzma|*.zip|*.rpm) | |
- COMMAND="bsdtar -p -o -C $SRC -xf $LOCAL_FILENAME" ;; | |
+ *.tar.gz|*.tar.Z|*.tgz) | |
+ COMMAND="tar -C $SRC --use-compress-program=gzip -xf $LOCAL_FILENAME" ;; | |
+ *.tar.bz2|*.tbz) | |
+ COMMAND="tar -C $SRC --use-compress-program=bzip2 -xf $LOCAL_FILENAME" ;; | |
+ *.tar.lzma) | |
+ COMMAND="tar -C $SRC --use-compress-program=lzma -xf $LOCAL_FILENAME" ;; | |
+ *.tar.xz) | |
+ COMMAND="tar -C $SRC --use-compress-program=xz -xf $LOCAL_FILENAME" ;; | |
+ *.tar.lrzip) | |
+ COMMAND="tar -C $SRC --use-compress-program=lrzip -xf $LOCAL_FILENAME" ;; | |
+ *.zip) | |
+ COMMAND="unzip -qq -o -d $SRC $LOCAL_FILENAME" ;; | |
*) | |
COMMAND="cp $LOCAL_FILENAME $SRC" ;; | |
esac | |
@@ -189,20 +309,32 @@ unpack_source() { | |
rm -rf $PKGMK_WORK_DIR | |
fi | |
error "Building '$TARGET' failed." | |
- exit $E_UNPACK | |
+ exit 1 | |
fi | |
done | |
} | |
make_md5sum() { | |
local FILE LOCAL_FILENAMES | |
- | |
- if [ "$source" ]; then | |
+ | |
+ if [ "${source}" ]; then | |
for FILE in ${source[@]}; do | |
- LOCAL_FILENAMES="$LOCAL_FILENAMES `get_filename $FILE`" | |
+ LOCAL_FILENAMES="${LOCAL_FILENAMES} $(get_filename "${FILE}")" | |
done | |
- md5sum $LOCAL_FILENAMES | sed -e 's| .*/| |' | sort -k 2 | |
+ md5sum ${LOCAL_FILENAMES} | sed -e 's| .*/| |' | sort -k 2 | uniq | |
+ fi | |
+} | |
+ | |
+make_sha256sum() { | |
+ local FILE LOCAL_FILENAMES | |
+ | |
+ if [ "${source}" ]; then | |
+ for FILE in ${source[@]}; do | |
+ LOCAL_FILENAMES="${LOCAL_FILENAMES} $(get_filename "${FILE}")" | |
+ done | |
+ | |
+ sha256sum ${LOCAL_FILENAMES} | sed -e 's| .*/| |' | sort -k 2 | uniq | |
fi | |
} | |
@@ -212,54 +344,91 @@ make_footprint() { | |
sort -k 3 | |
} | |
-check_md5sum() { | |
- local FILE="$PKGMK_WORK_DIR/.tmp" | |
+check_sum() { | |
+ local FILE="${PKGMK_WORK_DIR}/.tmp" | |
- cd $PKGMK_ROOT | |
+ cd "${PKGMK_ROOT}" | |
- if [ -f $PKGMK_MD5SUM ]; then | |
- make_md5sum > $FILE.md5sum | |
- sort -k 2 $PKGMK_MD5SUM > $FILE.md5sum.orig | |
- diff -w -t -U 0 $FILE.md5sum.orig $FILE.md5sum | \ | |
+ if [ -f "${PKGMK_SHA256SUM}" ]; then | |
+ make_sha256sum > "${FILE}.sha256sum" | |
+ sort -k 2 "${PKGMK_SHA256SUM}" > "${FILE}.sha256sum.orig" | |
+ diff -w -t -U 0 "${FILE}.sha256sum.orig" "${FILE}.sha256sum" | \ | |
sed '/^@@/d' | \ | |
sed '/^+++/d' | \ | |
sed '/^---/d' | \ | |
sed 's/^+/NEW /g' | \ | |
- sed 's/^-/MISSING /g' > $FILE.md5sum.diff | |
- if [ -s $FILE.md5sum.diff ]; then | |
- error "Md5sum mismatch found:" | |
- cat $FILE.md5sum.diff >&2 | |
+ sed 's/^-/MISSING /g' > $FILE.sha256sum.diff | |
+ if [ -s "${FILE}.sha256sum.diff" ]; then | |
+ error 'Sha256sum mismatch found:' | |
+ cat "${FILE}.sha256sum.diff" >&2 | |
+ | |
+ if [ "${PKGMK_CHECK_SUM}" = 'yes' ]; then | |
+ error 'Sha256sum not ok.' | |
+ exit 1 | |
+ fi | |
- if [ "$PKGMK_KEEP_WORK" = "no" ]; then | |
- rm -rf $PKGMK_WORK_DIR | |
+ error "Building '${TARGET}' failed." | |
+ exit 1 | |
+ fi | |
+ else | |
+ if [ "${PKGMK_CHECK_SUM}" = 'yes' ]; then | |
+ if [ "${PKGMK_KEEP_WORK}" = 'no' ]; then | |
+ rm -rf "${PKGMK_WORK_DIR}" | |
+ fi | |
+ warning 'Sha256sum not found.' | |
+ exit 1 | |
+ fi | |
+ | |
+ warning 'Sha256sum not found.' | |
+ #warning 'Sha256sum not found, creating new.' | |
+ #make_sha256sum > "${PKGMK_SHA256SUM}" | |
+ fi | |
+ | |
+ if [ -f "${PKGMK_MD5SUM}" ]; then | |
+ make_md5sum > "${FILE}.md5sum" | |
+ sort -k 2 "${PKGMK_MD5SUM}" > "${FILE}.md5sum.orig" | |
+ diff -w -t -U 0 "${FILE}.md5sum.orig" "${FILE}.md5sum" | \ | |
+ sed '/^@@/d' | \ | |
+ sed '/^+++/d' | \ | |
+ sed '/^---/d' | \ | |
+ sed 's/^+/NEW /g' | \ | |
+ sed 's/^-/MISSING /g' > "${FILE}.md5sum.diff" | |
+ if [ -s "${FILE}.md5sum.diff" ]; then | |
+ error 'Md5sum mismatch found:' | |
+ cat "${FILE}.md5sum.diff" >&2 | |
+ | |
+ if [ "${PKGMK_KEEP_WORK}" = 'no' ]; then | |
+ rm -rf "${PKGMK_WORK_DIR}" | |
fi | |
- if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then | |
+ if [ "${PKGMK_CHECK_SUM}" = "yes" ]; then | |
error "Md5sum not ok." | |
- exit $E_MD5 | |
+ exit 1 | |
fi | |
- error "Building '$TARGET' failed." | |
- exit $E_MD5 | |
+ error "Building '${TARGET}' failed." | |
+ exit 1 | |
fi | |
else | |
- if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then | |
- if [ "$PKGMK_KEEP_WORK" = "no" ]; then | |
- rm -rf $PKGMK_WORK_DIR | |
+ if [ "${PKGMK_CHECK_SUM}" = 'yes' ]; then | |
+ if [ "${PKGMK_KEEP_WORK}" = 'no' ]; then | |
+ rm -rf "${PKGMK_WORK_DIR}" | |
fi | |
- info "Md5sum not found." | |
- exit $E_MD5 | |
+ warning 'Md5sum not found.' | |
+ exit 1 | |
fi | |
- warning "Md5sum not found, creating new." | |
- make_md5sum > $PKGMK_MD5SUM | |
+ error "Md5sum not found, proceed with caution. Use \"pkgmk -um\" to generate new md5sum." | |
+ exit 1 | |
+ #warning 'Md5sum not found, creating new.' | |
+ #make_md5sum > "${PKGMK_MD5SUM}" | |
fi | |
- if [ "$PKGMK_CHECK_MD5SUM" = "yes" ]; then | |
- if [ "$PKGMK_KEEP_WORK" = "no" ]; then | |
- rm -rf $PKGMK_WORK_DIR | |
+ if [ "${PKGMK_CHECK_SUM}" = 'yes' ]; then | |
+ if [ "${PKGMK_KEEP_WORK}" = 'no' ]; then | |
+ rm -rf "${PKGMK_WORK_DIR}" | |
fi | |
- info "Md5sum ok." | |
+ info 'Checksums ok.' | |
exit 0 | |
fi | |
} | |
@@ -296,7 +465,11 @@ compress_manpages() { | |
find . -type f -path "*/man/man*/*" | while read FILE; do | |
if [ "$FILE" = "${FILE%%.gz}" ]; then | |
- gzip -9 "$FILE" | |
+ if [ -f /usr/bin/pigz ]; then | |
+ pigz -9 "$FILE" | |
+ else | |
+ gzip -9 "$FILE" | |
+ fi | |
fi | |
done | |
@@ -314,6 +487,12 @@ compress_manpages() { | |
done | |
} | |
+remove_junkfiles() { | |
+ if [ -e $PKG/usr/share/info/dir ]; then | |
+ rm -rf $PKG/usr/share/info/dir | |
+ fi | |
+} | |
+ | |
check_footprint() { | |
local FILE="$PKGMK_WORK_DIR/.tmp" | |
@@ -330,9 +509,9 @@ check_footprint() { | |
sed 's/^+/NEW /g' | \ | |
sed 's/^-/MISSING /g' > $FILE.footprint.diff | |
if [ -s $FILE.footprint.diff ]; then | |
- if [ "$PKGMK_IGNORE_NEW" = "yes" ] && \ | |
- [ -z "$(egrep -l ^MISSING $FILE.footprint.diff)" ] ; then | |
- info "New files found:" | |
+ if [ "$PKGMK_IGNORE_FOOTPRINT_NEW" = "yes" ] && \ | |
+ [ -z "$(egrep --files-with-matches ^MISSING $FILE.footprint.diff)" ]; then | |
+ info "New files found:" | |
else | |
error "Footprint mismatch found:" | |
BUILD_SUCCESSFUL="no" | |
@@ -349,31 +528,32 @@ check_footprint() { | |
fi | |
} | |
-make_work_dir() { | |
- export PKG="$PKGMK_WORK_DIR/pkg" | |
- export SRC="$PKGMK_WORK_DIR/src" | |
- umask 022 | |
+build_package() { | |
+ local BUILD_SUCCESSFUL UPPER_NAME | |
- cd $PKGMK_ROOT | |
- remove_work_dir | |
- mkdir -p $SRC $PKG | |
+ BUILD_SUCCESSFUL='no' | |
- if [ "$PKGMK_IGNORE_MD5SUM" = "no" ]; then | |
- check_md5sum | |
- fi | |
-} | |
+ UPPER_NAME="$(printf "${name}" | tr '+' '_' | tr '-' '_' | \ | |
+ tr '[:lower:]' '[:upper:]')" | |
-remove_work_dir() { | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_CFLAGS")" ] && export CFLAGS+=" $(eval "echo \$PKGMK_${UPPER_NAME}_CFLAGS")" | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_CXXFLAGS")" ] && export CXXFLAGS+=" $(eval "echo \$PKGMK_${UPPER_NAME}_CXXFLAGS")" | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_FFLAGS")" ] && export FFLAGS+=" $(eval "echo \$PKGMK_${UPPER_NAME}_FFLAGS")" | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_LDFLAGS")" ] && export LDFLAGS+=" $(eval "echo \$PKGMK_${UPPER_NAME}_LDFLAGS")" | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_CC")" ] && export CC="$(eval "echo \$PKGMK_${UPPER_NAME}_CC")" | |
+ [ -n "$(eval "echo \$PKGMK_${UPPER_NAME}_CXX")" ] && export CXX="$(eval "echo \$PKGMK_${UPPER_NAME}_CXX")" | |
+ | |
+ export PKG="${PKGMK_WORK_DIR}/pkg" | |
+ export SRC="${PKGMK_WORK_DIR}/src" | |
+ umask 022 | |
+ | |
+ cd $PKGMK_ROOT | |
rm -rf $PKGMK_WORK_DIR | |
-} | |
- | |
- | |
-build_package() { | |
- local BUILD_SUCCESSFUL="no" | |
- local COMPRESSION | |
+ mkdir -p $SRC $PKG | |
- check_file "$TARGET" | |
- make_work_dir | |
+ if [ "$PKGMK_IGNORE_SUM" = "no" ]; then | |
+ check_sum | |
+ fi | |
if [ "$UID" != "0" ]; then | |
warning "Packages should be built as root." | |
@@ -384,6 +564,11 @@ build_package() { | |
unpack_source | |
cd $SRC | |
+ | |
+ if [ "$PKGMK_EXTRACT_ONLY" = "yes" ]; then | |
+ exit 0 | |
+ fi | |
+ | |
(set -e -x ; build) | |
if [ $? = 0 ]; then | |
@@ -393,16 +578,16 @@ build_package() { | |
compress_manpages | |
+ remove_junkfiles | |
+ | |
cd $PKG | |
info "Build result:" | |
- | |
- case $PKGMK_COMPRESSION_MODE in | |
- gz) COMPRESSION="-z" ;; | |
- bz2) COMPRESSION="-j" ;; | |
- xz) COMPRESSION="-J" ;; | |
- esac | |
- bsdtar -c $COMPRESSION -f $TARGET * && bsdtar -t -v -f $TARGET | |
- | |
+ if [ -f /usr/bin/pigz ]; then | |
+ tar -cvv --use-compress-program=pigz -f $TARGET * | |
+ else | |
+ tar czvvf $TARGET * | |
+ fi | |
+ | |
if [ $? = 0 ]; then | |
BUILD_SUCCESSFUL="yes" | |
@@ -415,7 +600,7 @@ build_package() { | |
fi | |
if [ "$PKGMK_KEEP_WORK" = "no" ]; then | |
- remove_work_dir | |
+ rm -rf $PKGMK_WORK_DIR | |
fi | |
if [ "$BUILD_SUCCESSFUL" = "yes" ]; then | |
@@ -490,7 +675,6 @@ update_footprint() { | |
exit 1 | |
fi | |
- check_file "$PKGMK_FOOTPRINT" | |
make_footprint > $PKGMK_FOOTPRINT | |
touch $TARGET | |
@@ -519,8 +703,8 @@ interrupted() { | |
echo "" | |
error "Interrupted." | |
- if [ "$PKGMK_KEEP_WORK" = "no" ]; then | |
- rm -rf $PKGMK_WORK_DIR | |
+ if [ "${PKGMK_KEEP_WORK}" = 'no' ]; then | |
+ rm -rf "${PKGMK_WORK_DIR}" | |
fi | |
exit 1 | |
@@ -538,10 +722,11 @@ print_help() { | |
echo " -utd, --up-to-date do not build, only check if package is up to date" | |
echo " -uf, --update-footprint update footprint using result from last build" | |
echo " -if, --ignore-footprint build package without checking footprint" | |
- echo " -in, --ignore-new build package, ignore new files in a footprint missmatch" | |
- echo " -um, --update-md5sum update md5sum" | |
- echo " -im, --ignore-md5sum build package without checking md5sum" | |
- echo " -cm, --check-md5sum do not build, only check md5sum" | |
+ echo " -in, --ignore-new build package, ignore new files in a footprint mismatch" | |
+ | |
+ echo " -um, --update-md5sum update checksums" | |
+ echo " -im, --ignore-md5sum build package without checking checksums" | |
+ echo " -cm, --check-md5sum do not build, only check checksums" | |
echo " -ns, --no-strip do not strip executable binaries or libraries" | |
echo " -f, --force build package even if it appears to be up to date" | |
echo " -c, --clean remove package and downloaded files" | |
@@ -571,16 +756,16 @@ parse_options() { | |
PKGMK_UP_TO_DATE="yes" ;; | |
-uf|--update-footprint) | |
PKGMK_UPDATE_FOOTPRINT="yes" ;; | |
+ -in|--ignore-new) | |
+ PKGMK_IGNORE_FOOTPRINT_NEW="yes" ;; | |
-if|--ignore-footprint) | |
PKGMK_IGNORE_FOOTPRINT="yes" ;; | |
- -in|--ignore-new) | |
- PKGMK_IGNORE_NEW="yes" ;; | |
-um|--update-md5sum) | |
- PKGMK_UPDATE_MD5SUM="yes" ;; | |
+ PKGMK_UPDATE_SUM="yes" ;; | |
-im|--ignore-md5sum) | |
- PKGMK_IGNORE_MD5SUM="yes" ;; | |
+ PKGMK_IGNORE_SUM="yes" ;; | |
-cm|--check-md5sum) | |
- PKGMK_CHECK_MD5SUM="yes" ;; | |
+ PKGMK_CHECK_SUM="yes" ;; | |
-ns|--no-strip) | |
PKGMK_NO_STRIP="yes" ;; | |
-f|--force) | |
@@ -611,12 +796,6 @@ parse_options() { | |
} | |
main() { | |
- # multilib | |
- PKGMK_ARCH=64 | |
- if [ -f ".32bit" ]; then | |
- PKGMK_ARCH=32 | |
- fi | |
- | |
local FILE TARGET | |
parse_options "$@" | |
@@ -632,24 +811,24 @@ main() { | |
exit 1 | |
fi | |
. $FILE | |
+ | |
+ # group download directory code start | |
+ if [ $FILE = $PKGMK_PKGFILE ]; then | |
+ if [ -z "${group}" ]; then | |
+ group="${name}" | |
+ fi | |
+ fi | |
+ # group download directory code end | |
done | |
check_directory "$PKGMK_SOURCE_DIR" | |
check_directory "$PKGMK_PACKAGE_DIR" | |
- check_directory "`dirname $PKGMK_WORK_DIR`" | |
+ check_directory "$(dirname "${PKGMK_WORK_DIR}")" | |
check_pkgfile | |
- | |
- case $PKGMK_COMPRESSION_MODE in | |
- gz|bz2|xz) | |
- TARGET="$PKGMK_PACKAGE_DIR/$name#$version-$release.pkg.tar.$PKGMK_COMPRESSION_MODE" | |
- ;; | |
- *) | |
- error "Compression mode '$PKGMK_COMPRESSION_MODE' not supported" | |
- exit 1 | |
- ;; | |
- esac | |
- | |
+ | |
+ TARGET="$PKGMK_PACKAGE_DIR/$name#$version-$release.pkg.tar.gz" | |
+ | |
if [ "$PKGMK_CLEAN" = "yes" ]; then | |
clean | |
exit 0 | |
@@ -660,11 +839,12 @@ main() { | |
exit 0 | |
fi | |
- if [ "$PKGMK_UPDATE_MD5SUM" = "yes" ]; then | |
+ if [ "${PKGMK_UPDATE_SUM}" = 'yes' ]; then | |
download_source | |
- check_file "$PKGMK_MD5SUM" | |
- make_md5sum > $PKGMK_MD5SUM | |
- info "Md5sum updated." | |
+ make_md5sum > "${PKGMK_MD5SUM}" | |
+ info 'Md5sum updated.' | |
+ make_sha256sum > "${PKGMK_SHA256SUM}" | |
+ info 'Sha256sum updated.' | |
exit 0 | |
fi | |
@@ -675,10 +855,7 @@ main() { | |
if [ "$PKGMK_EXTRACT_ONLY" = "yes" ]; then | |
download_source | |
- make_work_dir | |
- info "Extracting sources of package '$name-$version'." | |
- unpack_source | |
- exit 0 | |
+ build_package | |
fi | |
if [ "$PKGMK_UP_TO_DATE" = "yes" ]; then | |
@@ -690,7 +867,7 @@ main() { | |
exit 0 | |
fi | |
- if [ "`build_needed`" = "no" ] && [ "$PKGMK_FORCE" = "no" ] && [ "$PKGMK_CHECK_MD5SUM" = "no" ]; then | |
+ if [ "`build_needed`" = "no" ] && [ "$PKGMK_FORCE" = "no" ] && [ "$PKGMK_CHECK_SUM" = "no" ]; then | |
info "Package '$TARGET' is up to date." | |
else | |
download_source | |
@@ -716,6 +893,7 @@ PKGMK_CONFFILE="/etc/pkgmk.conf" | |
PKGMK_PKGFILE="Pkgfile" | |
PKGMK_FOOTPRINT=".footprint" | |
PKGMK_MD5SUM=".md5sum" | |
+PKGMK_SHA256SUM=".sha256sum" | |
PKGMK_NOSTRIP=".nostrip" | |
PKGMK_SOURCE_MIRRORS=() | |
@@ -723,8 +901,6 @@ PKGMK_SOURCE_DIR="$PWD" | |
PKGMK_PACKAGE_DIR="$PWD" | |
PKGMK_WORK_DIR="$PWD/work" | |
-PKGMK_COMPRESSION_MODE="gz" | |
- | |
PKGMK_INSTALL="no" | |
PKGMK_RECURSIVE="no" | |
PKGMK_DOWNLOAD="no" | |
@@ -733,12 +909,12 @@ PKGMK_EXTRACT_ONLY="no" | |
PKGMK_UP_TO_DATE="no" | |
PKGMK_UPDATE_FOOTPRINT="no" | |
PKGMK_IGNORE_FOOTPRINT="no" | |
-PKGMK_IGNORE_NEW="no" | |
+PKGMK_IGNORE_FOOTPRINT_NEW="no" | |
PKGMK_FORCE="no" | |
PKGMK_KEEP_WORK="no" | |
-PKGMK_UPDATE_MD5SUM="no" | |
-PKGMK_IGNORE_MD5SUM="no" | |
-PKGMK_CHECK_MD5SUM="no" | |
+PKGMK_UPDATE_SUM="no" | |
+PKGMK_IGNORE_SUM="no" | |
+PKGMK_CHECK_SUM="no" | |
PKGMK_NO_STRIP="no" | |
PKGMK_CLEAN="no" | |
diff -pruN pkgutils-5.35.6/pkgrm.8.in pkgutils-5.32.0_8/pkgrm.8.in | |
--- pkgutils-5.35.6/pkgrm.8.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgrm.8.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -23,6 +23,6 @@ Print help and exit. | |
.SH SEE ALSO | |
pkgadd(8), pkginfo(8), pkgmk(8), rejmerge(8) | |
.SH COPYRIGHT | |
-pkgrm (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+pkgrm (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
pkgrm (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/pkgrm.cc pkgutils-5.32.0_8/pkgrm.cc | |
--- pkgutils-5.35.6/pkgrm.cc 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgrm.cc 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkgrm.h pkgutils-5.32.0_8/pkgrm.h | |
--- pkgutils-5.35.6/pkgrm.h 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgrm.h 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
diff -pruN pkgutils-5.35.6/pkgutil.cc pkgutils-5.32.0_8/pkgutil.cc | |
--- pkgutils-5.35.6/pkgutil.cc 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgutil.cc 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
@@ -44,12 +44,8 @@ | |
#include <archive_entry.h> | |
#define INIT_ARCHIVE(ar) \ | |
- archive_read_support_filter_gzip((ar)); \ | |
- archive_read_support_filter_bzip2((ar)); \ | |
- archive_read_support_filter_xz((ar)); \ | |
- archive_read_support_format_tar((ar)) | |
- | |
-#define DEFAULT_BYTES_PER_BLOCK (20 * 512) | |
+ archive_read_support_compression_all((ar)); \ | |
+ archive_read_support_format_all((ar)) | |
using __gnu_cxx::stdio_filebuf; | |
@@ -354,8 +350,8 @@ pair<string, pkgutil::pkginfo_t> pkgutil | |
INIT_ARCHIVE(archive); | |
if (archive_read_open_filename(archive, | |
- filename.c_str(), | |
- DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
+ const_cast<char*>(filename.c_str()), | |
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); | |
for (i = 0; archive_read_next_header(archive, &entry) == | |
@@ -378,7 +374,7 @@ pair<string, pkgutil::pkginfo_t> pkgutil | |
throw runtime_error("could not read " + filename); | |
} | |
- archive_read_free(archive); | |
+ archive_read_finish(archive); | |
return result; | |
} | |
@@ -388,25 +384,22 @@ void pkgutil::pkg_install(const string& | |
struct archive* archive; | |
struct archive_entry* entry; | |
unsigned int i; | |
- char buf[PATH_MAX]; | |
- string absroot; | |
archive = archive_read_new(); | |
INIT_ARCHIVE(archive); | |
if (archive_read_open_filename(archive, | |
- filename.c_str(), | |
- DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
+ const_cast<char*>(filename.c_str()), | |
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); | |
chdir(root.c_str()); | |
- absroot = getcwd(buf, sizeof(buf)); | |
for (i = 0; archive_read_next_header(archive, &entry) == | |
ARCHIVE_OK; ++i) { | |
string archive_filename = archive_entry_pathname(entry); | |
- string reject_dir = trim_filename(absroot + string("/") + string(PKG_REJECTED)); | |
- string original_filename = trim_filename(absroot + string("/") + archive_filename); | |
+ string reject_dir = trim_filename(root + string("/") + string(PKG_REJECTED)); | |
+ string original_filename = trim_filename(root + string("/") + archive_filename); | |
string real_filename = original_filename; | |
// Check if file is filtered out via INSTALL | |
@@ -469,7 +462,7 @@ void pkgutil::pkg_install(const string& | |
throw runtime_error("could not read " + filename); | |
} | |
- archive_read_free(archive); | |
+ archive_read_finish(archive); | |
} | |
void pkgutil::ldconfig() const | |
@@ -511,8 +504,8 @@ void pkgutil::pkg_footprint(string& file | |
INIT_ARCHIVE(archive); | |
if (archive_read_open_filename(archive, | |
- filename.c_str(), | |
- DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
+ const_cast<char*>(filename.c_str()), | |
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); | |
for (i = 0; archive_read_next_header(archive, &entry) == | |
@@ -530,7 +523,7 @@ void pkgutil::pkg_footprint(string& file | |
throw runtime_error_with_errno("could not read " + filename, archive_errno(archive)); | |
} | |
- archive_read_free(archive); | |
+ archive_read_finish(archive); | |
// Too bad, there doesn't seem to be a way to reuse our archive | |
// instance | |
@@ -538,8 +531,8 @@ void pkgutil::pkg_footprint(string& file | |
INIT_ARCHIVE(archive); | |
if (archive_read_open_filename(archive, | |
- filename.c_str(), | |
- DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
+ const_cast<char*>(filename.c_str()), | |
+ ARCHIVE_DEFAULT_BYTES_PER_BLOCK) != ARCHIVE_OK) | |
throw runtime_error_with_errno("could not open " + filename, archive_errno(archive)); | |
for (i = 0; archive_read_next_header(archive, &entry) == | |
@@ -612,7 +605,7 @@ void pkgutil::pkg_footprint(string& file | |
throw runtime_error("could not read " + filename); | |
} | |
- archive_read_free(archive); | |
+ archive_read_finish(archive); | |
} | |
void pkgutil::print_version() const | |
diff -pruN pkgutils-5.35.6/pkgutil.h pkgutils-5.32.0_8/pkgutil.h | |
--- pkgutils-5.35.6/pkgutil.h 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/pkgutil.h 2010-07-21 21:42:09.000000000 +1000 | |
@@ -2,7 +2,7 @@ | |
// pkgutils | |
// | |
// Copyright (c) 2000-2005 Per Liden | |
-// Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+// Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
// | |
// 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 | |
@@ -33,7 +33,7 @@ | |
#include <sys/types.h> | |
#include <dirent.h> | |
-#define PKG_EXT ".pkg.tar." | |
+#define PKG_EXT ".pkg.tar.gz" | |
#define PKG_DIR "var/lib/pkg" | |
#define PKG_DB "var/lib/pkg/db" | |
#define PKG_REJECTED "var/lib/pkg/rejected" | |
diff -pruN pkgutils-5.35.6/README pkgutils-5.32.0_8/README | |
--- pkgutils-5.35.6/README 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/README 2010-07-21 21:42:09.000000000 +1000 | |
@@ -22,7 +22,7 @@ $ make DESTDIR=/some/other/path install | |
Copyright | |
--------- | |
pkgutils is Copyright (c) 2000-2005 Per Liden and | |
-Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
pkgutils is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/rejmerge.8.in pkgutils-5.32.0_8/rejmerge.8.in | |
--- pkgutils-5.35.6/rejmerge.8.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/rejmerge.8.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -73,6 +73,6 @@ Directory where rejected files are store | |
.SH SEE ALSO | |
pkgadd(8), pkgrm(8), pkginfo(8), pkgmk(8) | |
.SH COPYRIGHT | |
-rejmerge (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2013 CRUX team (http://crux.nu). | |
+rejmerge (pkgutils) is Copyright (c) 2000-2005 Per Liden and Copyright (c) 2006-2007 CRUX team (http://crux.nu). | |
rejmerge (pkgutils) is licensed through the GNU General Public License. | |
Read the COPYING file for the complete license. | |
diff -pruN pkgutils-5.35.6/rejmerge.in pkgutils-5.32.0_8/rejmerge.in | |
--- pkgutils-5.35.6/rejmerge.in 2014-03-24 05:15:46.000000000 +1100 | |
+++ pkgutils-5.32.0_8/rejmerge.in 2010-07-21 21:42:09.000000000 +1000 | |
@@ -3,7 +3,7 @@ | |
# rejmerge (pkgutils) | |
# | |
# Copyright (c) 2000-2005 Per Liden | |
-# Copyright (c) 2006-2013 by CRUX team (http://crux.nu) | |
+# Copyright (c) 2006-2007 by CRUX team (http://crux.nu) | |
# | |
# 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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment