Update ebuilds and rsyncable patches

(Portage version: 2.2.0_alpha123/git/Linux x86_64, RepoMan options: --force, unsigned Manifest commit)
This commit is contained in:
Mario Fetka 2012-10-17 15:18:27 +02:00
parent e99d1ead3c
commit 2137457196
6 changed files with 371 additions and 14 deletions

View File

@ -1,7 +1,14 @@
# ChangeLog for app-arch/gzip
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
*gzip-1.5 (17 Oct 2012)
17 Oct 2012; Mario Fetka <mario.fetka@gmail.com> gzip-1.4.ebuild,
+files/gzip-1.4-rsyncable.patch, +gzip-1.5.ebuild,
+files/gzip-1.5-rsyncable.patch, -files/patch-gzip-rsyncable.diff:
Update ebuilds and rsyncable patches
*gzip-1.4 (24 Jun 2011)
24 Jun 2011; Mario Fetka <mario.fetka@gmail.com>

View File

@ -1,7 +1,10 @@
AUX gzip-1.3.8-install-symlinks.patch 280 RMD160 31a85a5adbc91fd664f3c5f3635483b5b39a6f0e SHA1 4019708174e1cf3b80df3413c478148d10e9d8c2 SHA256 f8b8c8548ae32975ba8e5bbc79add0f951954e1b4a21de55575274de177925d1
AUX gzip-1.4-assembler.patch 1703 RMD160 807f1428cdf9342f912422ce0b0afec628d0ec6b SHA1 16311f87fb8e13881b04a38447ee7e820f000731 SHA256 4d05f0c6df2fcca0dcc6f72f4545ea89e0cdcb92d1f6b9e9e2bd1942da46cf81
AUX patch-gzip-rsyncable.diff 10256 RMD160 3f4990c15adfd8ac339fc5172d2dd3429af0526c SHA1 d01ba51a6d539daf18a38222c146512c61e76b56 SHA256 8487d91ad4c843aa6248d0d0697cb7bff7f08accb8451711f4078355f6a5ff6e
DIST gzip-1.4.tar.gz 907411 RMD160 a74f782960387e3f05373acc258becb564eda82d SHA1 1d398dac6a7920a7de6e2685fe472a840eb2ce6e SHA256 d166cfd3da380da1bd535633e8890bfb5664f9e68870a611d1dc01a3e9f711ee
EBUILD gzip-1.4.ebuild 1306 RMD160 46b319508c67b12a0c053dd390ac324a1cade374 SHA1 c92de77d6be97dc947f0aaaa51326b0de3388261 SHA256 d2155fc82b27169677be174beedafadbd08be96315cd4f86c96efa5ebdbaa501
MISC ChangeLog 361 RMD160 e2d06aa14e55655fbce94abd7ab93d5ba5400e74 SHA1 f84943a30a5f2e39fd54d94f5df80276c5d65379 SHA256 da3a15979556f07a5423abf08818ecd5e507f168d324f7322301680a30c69037
MISC metadata.xml 258 RMD160 fb52cbd38f7a8c9d7fee81f2db5dde7e3b17e045 SHA1 27fbcb42e87ac32af5f2a864ffc330b23b7b9f70 SHA256 3e8d2c98025402bd29168f46db0e4ed14ae2d64ee8e75508d87b136d06ba044c
AUX gzip-1.3.8-install-symlinks.patch 280 SHA256 f8b8c8548ae32975ba8e5bbc79add0f951954e1b4a21de55575274de177925d1 SHA512 b804a4d4ef9294a8f241b75a06ee6464d932330824dc95f2fa1f67bb6f22f4d66287e4f47dcafce4e59e68fa3d11ac61cdbca55ab0939747d8a17464d2aa29c1 WHIRLPOOL 13a5806a61a565a5a1de4d07b7aa252743016e559fe72752f2e7130d414eba0c6167608f3485f2fadf21a592cd15aa36c8e58682ca5309aa28ea874a8b7bdcb5
AUX gzip-1.4-assembler.patch 1703 SHA256 4d05f0c6df2fcca0dcc6f72f4545ea89e0cdcb92d1f6b9e9e2bd1942da46cf81 SHA512 8a501a03263b2cf2e4c87d0f8736bfe598ecf3f32c0e76b508d88504888405fb75ce97614a2c138a49d18f516fe3dd6d9440b8d04c8f67f7b4c1833d5cb25413 WHIRLPOOL f40b81cb1ed1b3566fa3e27503ae5d8dc3fa28b15b72c1278da894190ddbf1fbeca4d158bb78d913b02edd6c9ad83f149149a40633b451cb0395194eb844a4e3
AUX gzip-1.4-rsyncable.patch 10256 SHA256 8487d91ad4c843aa6248d0d0697cb7bff7f08accb8451711f4078355f6a5ff6e SHA512 4bf2020665e7bbe409f301146ccd021aeda7106c0307640a0731b900e6a5871ffe3410258cd35127395730579389abe8b5c999ee11685d28fc45b2a4b826e1d2 WHIRLPOOL 8db82783c9ee06038f7ce3e0e0cff0b678b0110f4e8275a6e94fae7bf243b62657e2f65c2594b7eeb65e8f9f487b71523eee014fd350289ce0b8f42618fc1afe
AUX gzip-1.5-rsyncable.patch 10912 SHA256 c9024df8719d42b0b0f133f829865ccab2d5b58a0b5847a9425314d03fa8c9b6 SHA512 9d853058938eeb7ec1578b4ccd3dd1a062c79aac474f04567891b4b4a414171d92e6cbe41c348f9d0835fff56613e603e6aa05b03d312022e01902e5e5a8d0c7 WHIRLPOOL 8882f39fee56e7848922f55fefb902f110cc0202a4c1c833eec052541491419ae322b10840a1e0aa34fc1d3ff87ba12a29b1154bd17265760c68c005f60a04dc
DIST gzip-1.4.tar.gz 907411 SHA256 d166cfd3da380da1bd535633e8890bfb5664f9e68870a611d1dc01a3e9f711ee
DIST gzip-1.5.tar.xz 720956 SHA256 9ac20a3841a1246a8bedd800ea1fb93ef76521535d89cb59397d267026b6a173 SHA512 27b1b9c1ab75331b5368abb54541f3f251009a3bc6e49e42cda13bc088673d9f8c89c55caa63da60c1ea70fac2e6de24203b7aeaaaad4bc54302edbe275f46ea WHIRLPOOL c718e5e4e0e6f29de285380c25564997615b7213fa32604922436c3c6221bb9531d01518a6cc4e0a80b4694bb040768654d4bf07bb48290f90e61f13962e96ab
EBUILD gzip-1.4.ebuild 1358 SHA256 8f489d2726cb4a44fc3ad7a369f2ee0a0ba3476e5aa4052a2486cc1f8eaec26c SHA512 5d190ee0faedbf4ec25b88aaa00813b080dbedea82ab7f037383938f8737d7dc1dbd7de6bb17541b2174d5c6a73d2dff05a04efc51feb96948842c005b77e705 WHIRLPOOL 3c65eb219ec250b676979ad4976c4a18b1ec7069e3174be7d098c9aaded73526bab5536ecb499605d13c6033b15cb8582267139d10d57d521aaac901bb9eba09
EBUILD gzip-1.5.ebuild 1272 SHA256 fc73bf16decd7c1bc20be86ee1117376dca3e6422c8d1515e3961857c54887bb SHA512 13debf71fadea7ad32479c80f38a5ee833b50faa4faf687a6ee9a24a1af7e456130bca2fc08c7be74da4c0f690de05df18039ae5e69eff487b77f9db3afa7a38 WHIRLPOOL 5eae5bbe9752804f4a86e9d2af0d84b1ab6d2b3ba8ad304cf11346fe1c04d445b151c8a5def5a7ee5a6984b4082446662eae3f136b511a44ddc7b531673f815a
MISC ChangeLog 616 SHA256 4ee7892dab8236d0c37c4b94c46a2a6a4333338a0ea74b9f31562ba26ea8575f SHA512 b10c692c1e1ebe2050f9f0343bdcc2c84a1ec9ee32be3a4b61feee18ef5c6a79c67da5eddae516e865a3b764b6b64b5b818ead09f62e3aa81ae8623f31c26631 WHIRLPOOL 149d001b5a739720bb8bbced980c80a62960fb1856a099cd1f7e9205c1b2fd66eb84dff3542dc8715237b26da7bab73bde6f197a977c978be2ee19629f3bc90a
MISC metadata.xml 258 SHA256 3e8d2c98025402bd29168f46db0e4ed14ae2d64ee8e75508d87b136d06ba044c SHA512 fe541f144f9f9f14e041cd9481c964cc55c38579475221a76599dd81b2bd3e902c6c4b043d7897fd50c36d4e4efe38e51cc736d018b95341fee0b58d919bc985 WHIRLPOOL 8edc342ed57308000e6131785fb4401a4cf013a3b55dd498c4cd0ee73e2d3302d8da1e1d5b86a8845ccfd059a0b2b46cc00fb7e736d241633e9e827d31256e93

View File

@ -0,0 +1,299 @@
NOTE: this patch is for _gzip_!
This is pending for actual inclusion in gzip. It is currently being
tried out in the default gzip for Debian Sarge, and may go into the
upstream gzip at somepoint in the not-too-distant future.
--- gzip-1.5/deflate.c.orig 2012-04-24 18:25:28.000000000 +0200
+++ gzip-1.5/deflate.c 2012-06-18 19:36:09.127690198 +0200
@@ -131,6 +131,14 @@
#endif
/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */
+#ifndef RSYNC_WIN
+# define RSYNC_WIN 4096
+#endif
+/* Size of rsync window, must be < MAX_DIST */
+
+#define RSYNC_SUM_MATCH(sum) ((sum) % RSYNC_WIN == 0)
+/* Whether window sum matches magic value */
+
/* ===========================================================================
* Local data used by the "longest match" routines.
*/
@@ -212,6 +220,8 @@
unsigned good_match;
/* Use a faster search when the previous match is longer than this */
+local ulg rsync_sum; /* rolling sum of rsync window */
+local ulg rsync_chunk_end; /* next rsync sequence point */
/* Values for max_lazy_match, good_match and max_chain_length, depending on
* the desired pack level (0..9). The values given below have been tuned to
@@ -314,6 +324,10 @@
#endif
/* prev will be initialized on the fly */
+ /* rsync params */
+ rsync_chunk_end = 0xFFFFFFFFUL;
+ rsync_sum = 0;
+
/* Set the default configuration parameters:
*/
max_lazy_match = configuration_table[pack_level].max_lazy;
@@ -550,6 +564,8 @@
memcpy((char*)window, (char*)window+WSIZE, (unsigned)WSIZE);
match_start -= WSIZE;
strstart -= WSIZE; /* we now have strstart >= MAX_DIST: */
+ if (rsync_chunk_end != 0xFFFFFFFFUL)
+ rsync_chunk_end -= WSIZE;
block_start -= (long) WSIZE;
@@ -579,13 +595,46 @@
}
}
+local void rsync_roll(start, num)
+ unsigned start;
+ unsigned num;
+{
+ unsigned i;
+
+ if (start < RSYNC_WIN) {
+ /* before window fills. */
+ for (i = start; i < RSYNC_WIN; i++) {
+ if (i == start + num) return;
+ rsync_sum += (ulg)window[i];
+ }
+ num -= (RSYNC_WIN - start);
+ start = RSYNC_WIN;
+ }
+
+ /* buffer after window full */
+ for (i = start; i < start+num; i++) {
+ /* New character in */
+ rsync_sum += (ulg)window[i];
+ /* Old character out */
+ rsync_sum -= (ulg)window[i - RSYNC_WIN];
+ if (rsync_chunk_end == 0xFFFFFFFFUL && RSYNC_SUM_MATCH(rsync_sum))
+ rsync_chunk_end = i;
+ }
+}
+
+/* ===========================================================================
+ * Set rsync_chunk_end if window sum matches magic value.
+ */
+#define RSYNC_ROLL(s, n) \
+ do { if (rsync) rsync_roll((s), (n)); } while(0)
+
/* ===========================================================================
* Flush the current block, with given end-of-file flag.
* IN assertion: strstart is set to the end of the current match.
*/
#define FLUSH_BLOCK(eof) \
flush_block(block_start >= 0L ? (char*)&window[(unsigned)block_start] : \
- (char*)NULL, (long)strstart - block_start, (eof))
+ (char*)NULL, (long)strstart - block_start, flush-1, (eof))
/* ===========================================================================
* Processes a new input file and return its compressed length. This
@@ -596,7 +645,7 @@
local off_t deflate_fast()
{
IPos hash_head; /* head of the hash chain */
- int flush; /* set if current block must be flushed */
+ int flush; /* set if current block must be flushed, 2=>and padded */
unsigned match_length = 0; /* length of best match */
prev_length = MIN_MATCH-1;
@@ -626,6 +675,7 @@
lookahead -= match_length;
+ RSYNC_ROLL(strstart, match_length);
/* Insert new strings in the hash table only if the match length
* is not too large. This saves time but degrades compression.
*/
@@ -654,9 +704,14 @@
/* No match, output a literal byte */
Tracevv((stderr,"%c",window[strstart]));
flush = ct_tally (0, window[strstart]);
+ RSYNC_ROLL(strstart, 1);
lookahead--;
strstart++;
}
+ if (rsync && strstart > rsync_chunk_end) {
+ rsync_chunk_end = 0xFFFFFFFFUL;
+ flush = 2;
+ }
if (flush) FLUSH_BLOCK(0), block_start = strstart;
/* Make sure that we always have enough lookahead, except
@@ -730,6 +785,7 @@
*/
lookahead -= prev_length-1;
prev_length -= 2;
+ RSYNC_ROLL(strstart, prev_length+1);
do {
strstart++;
INSERT_STRING(strstart, hash_head);
@@ -742,24 +798,39 @@
match_available = 0;
match_length = MIN_MATCH-1;
strstart++;
- if (flush) FLUSH_BLOCK(0), block_start = strstart;
+ if (rsync && strstart > rsync_chunk_end) {
+ rsync_chunk_end = 0xFFFFFFFFUL;
+ flush = 2;
+ }
+ if (flush) FLUSH_BLOCK(0), block_start = strstart;
} else if (match_available) {
/* If there was no match at the previous position, output a
* single literal. If there was a match but the current match
* is longer, truncate the previous match to a single literal.
*/
Tracevv((stderr,"%c",window[strstart-1]));
- if (ct_tally (0, window[strstart-1])) {
- FLUSH_BLOCK(0), block_start = strstart;
- }
+ flush = ct_tally (0, window[strstart-1]);
+ if (rsync && strstart > rsync_chunk_end) {
+ rsync_chunk_end = 0xFFFFFFFFUL;
+ flush = 2;
+ }
+ if (flush) FLUSH_BLOCK(0), block_start = strstart;
+ RSYNC_ROLL(strstart, 1);
strstart++;
lookahead--;
} else {
/* There is no previous match to compare with, wait for
* the next step to decide.
*/
+ if (rsync && strstart > rsync_chunk_end) {
+ /* Reset huffman tree */
+ rsync_chunk_end = 0xFFFFFFFFUL;
+ flush = 2;
+ FLUSH_BLOCK(0), block_start = strstart;
+ }
match_available = 1;
+ RSYNC_ROLL(strstart, 1);
strstart++;
lookahead--;
}
--- gzip-1.5/gzip.c.orig 2012-04-24 18:25:28.000000000 +0200
+++ gzip-1.5/gzip.c 2012-06-18 19:37:13.954354148 +0200
@@ -213,6 +213,7 @@
unsigned insize; /* valid bytes in inbuf */
unsigned inptr; /* index of next byte to be processed in inbuf */
unsigned outcnt; /* bytes in output buffer */
+int rsync = 0; /* make ryncable chunks */
static int handled_sig[] =
{
@@ -270,6 +271,7 @@
{"best", 0, 0, '9'}, /* compress better */
{"lzw", 0, 0, 'Z'}, /* make output compatible with old compress */
{"bits", 1, 0, 'b'}, /* max number of bits per code (implies -Z) */
+ {"rsyncable", 0, 0, 'R'}, /* make rsync-friendly archive */
{ 0, 0, 0, 0 }
};
@@ -353,6 +355,7 @@
" -Z, --lzw produce output compatible with old compress",
" -b, --bits=BITS max number of bits per code (implies -Z)",
#endif
+ " --rsyncable make rsync-friendly archive",
"",
"With no FILE, or when FILE is -, read standard input.",
"",
@@ -482,6 +485,9 @@
recursive = 1;
#endif
break;
+ case 'R':
+ rsync = 1;
+ break;
case 'S':
#ifdef NO_MULTIPLE_DOTS
if (*optarg == '.') optarg++;
--- gzip-1.5/gzip.h.orig 2012-01-01 09:53:58.000000000 +0100
+++ gzip-1.5/gzip.h 2012-06-18 19:36:31.987689240 +0200
@@ -140,6 +140,7 @@
extern unsigned insize; /* valid bytes in inbuf */
extern unsigned inptr; /* index of next byte to be processed in inbuf */
extern unsigned outcnt; /* bytes in output buffer */
+extern int rsync; /* deflate into rsyncable chunks */
extern off_t bytes_in; /* number of input bytes */
extern off_t bytes_out; /* number of output bytes */
@@ -287,7 +288,7 @@
/* in trees.c */
extern void ct_init (ush *attr, int *method);
extern int ct_tally (int dist, int lc);
-extern off_t flush_block (char *buf, ulg stored_len, int eof);
+extern off_t flush_block (char *buf, ulg stored_len, int pad, int eof);
/* in bits.c */
extern void bi_init (file_t zipfile);
--- gzip-1.3.6/doc/gzip.texi 2002-09-29 23:57:29 -0700
+++ rsyncable/doc/gzip.texi 2005-02-05 09:40:33 -0800
@@ -334,6 +334,14 @@
into the directory and compress all the files it finds there (or
decompress them in the case of @code{gunzip}).
+@item --rsyncable
+While compressing, synchronize the output occasionally based on the
+input. This increases size by less than 1 percent most cases, but
+means that the @code{rsync} program can take advantage of similarities
+in the uncompressed input when syncronizing two files compressed with
+this flag. @code{gunzip} cannot tell the difference between a
+compressed file created with this option, and one created without it.
+
@item --suffix @var{suf}
@itemx -S @var{suf}
Use suffix @samp{@var{suf}} instead of @samp{.gz}. Any suffix can be
--- gzip-1.3.5/trees.c 1999-10-05 22:00:00 -0700
+++ rsyncable/trees.c 2005-02-05 09:40:33 -0800
@@ -46,12 +46,13 @@
* void ct_tally (int dist, int lc);
* Save the match info and tally the frequency counts.
*
- * off_t flush_block (char *buf, ulg stored_len, int eof)
+ * off_t flush_block (char *buf, ulg stored_len, int pad, int eof)
* Determine the best encoding for the current block: dynamic trees,
* static trees or store, and output the encoded block to the zip
- * file. Returns the total compressed length for the file so far.
- *
- */
+ * file. If pad is set, pads the block to the next
+ * byte. Returns the total compressed length for the file so
+ * far.
+ * */
#include <config.h>
#include <ctype.h>
@@ -847,9 +848,10 @@
* trees or store, and output the encoded block to the zip file. This function
* returns the total compressed length for the file so far.
*/
-off_t flush_block(buf, stored_len, eof)
+off_t flush_block(buf, stored_len, pad, eof)
char *buf; /* input block, or NULL if too old */
ulg stored_len; /* length of input block */
+ int pad; /* pad output to byte boundary */
int eof; /* true if this is the last block for a file */
{
ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */
@@ -941,6 +943,10 @@
Assert (input_len == bytes_in, "bad input size");
bi_windup();
compressed_len += 7; /* align on byte boundary */
+ } else if (pad && (compressed_len % 8) != 0) {
+ send_bits((STORED_BLOCK<<1)+eof, 3); /* send block type */
+ compressed_len = (compressed_len + 3 + 7) & ~7L;
+ copy_block(buf, 0, 1); /* with header */
}
return compressed_len >> 3;

View File

@ -1,18 +1,18 @@
# Copyright 1999-2011 Gentoo Foundation
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-arch/gzip/gzip-1.4.ebuild,v 1.8 2011/04/03 11:15:56 ulm Exp $
# $Header: /var/cvsroot/gentoo-x86/app-arch/gzip/gzip-1.4.ebuild,v 1.12 2012/07/06 17:58:32 vapier Exp $
inherit eutils flag-o-matic
DESCRIPTION="Standard GNU compressor"
HOMEPAGE="http://www.gnu.org/software/gzip/"
SRC_URI="ftp://alpha.gnu.org/gnu/gzip/${P}.tar.gz
SRC_URI="mirror://gnu-alpha/gzip/${P}.tar.gz
mirror://gnu/gzip/${P}.tar.gz
mirror://gentoo/${P}.tar.gz"
LICENSE="GPL-2"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~sparc-fbsd ~x86-fbsd"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="nls pic static"
RDEPEND=""
@ -22,9 +22,10 @@ DEPEND="${RDEPEND}
src_unpack() {
unpack ${A}
cd "${S}"
epatch "${FILESDIR}"/patch-gzip-rsyncable.diff
epatch "${FILESDIR}"/${PN}-1.4-rsyncable.patch
epatch "${FILESDIR}"/${PN}-1.3.8-install-symlinks.patch
epatch "${FILESDIR}"/${P}-assembler.patch #309079
epatch "${FILESDIR}"/${P}-no-gets.patch
}
src_compile() {

View File

@ -0,0 +1,47 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/app-arch/gzip/gzip-1.5.ebuild,v 1.8 2012/09/09 15:56:45 armin76 Exp $
inherit eutils flag-o-matic unpacker
DESCRIPTION="Standard GNU compressor"
HOMEPAGE="http://www.gnu.org/software/gzip/"
SRC_URI="mirror://gnu-alpha/gzip/${P}.tar.xz
mirror://gnu/gzip/${P}.tar.xz
mirror://gentoo/${P}.tar.xz"
LICENSE="GPL-3"
SLOT="0"
KEYWORDS="alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd"
IUSE="nls pic static"
RDEPEND=""
DEPEND="${RDEPEND}
nls? ( sys-devel/gettext )"
src_unpack() {
unpacker
cd "${S}"
epatch "${FILESDIR}"/${PN}-1.5-rsyncable.patch
epatch "${FILESDIR}"/${PN}-1.3.8-install-symlinks.patch
}
src_compile() {
use static && append-flags -static
# avoid text relocation in gzip
use pic && export DEFS="NO_ASM"
econf || die
emake || die
}
src_install() {
emake install DESTDIR="${D}" || die
dodoc ChangeLog NEWS README THANKS TODO
docinto txt
dodoc algorithm.doc gzip.doc
# keep most things in /usr, just the fun stuff in /
dodir /bin
mv "${D}"/usr/bin/{gunzip,gzip,uncompress,zcat} "${D}"/bin/ || die
sed -e 's:/usr::' -i "${D}"/bin/gunzip || die
}