summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Elio Pettenò <flameeyes@gentoo.org>2011-09-22 14:21:04 +0000
committerDiego Elio Pettenò <flameeyes@gentoo.org>2011-09-22 14:21:04 +0000
commitc6bef7757fddd7689ee58a631d80860f4f59fde2 (patch)
treebbc4c100bc6345957fd801092fe8759dfd418c15 /dev-libs
parentUse libtool's macro to identify whether to use underscores in names or not. C... (diff)
downloadhistorical-c6bef7757fddd7689ee58a631d80860f4f59fde2.tar.gz
historical-c6bef7757fddd7689ee58a631d80860f4f59fde2.tar.bz2
historical-c6bef7757fddd7689ee58a631d80860f4f59fde2.zip
Remove betas, so that we can remove the (too big) file in FILESDIR.
Package-Manager: portage-2.2.0_alpha59/cvs/Linux x86_64
Diffstat (limited to 'dev-libs')
-rw-r--r--dev-libs/libgcrypt/ChangeLog7
-rw-r--r--dev-libs/libgcrypt/Manifest12
-rw-r--r--dev-libs/libgcrypt/files/libgcrypt-1.5.0_beta1-ctr.patch750
-rw-r--r--dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r1.ebuild37
-rw-r--r--dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r2.ebuild43
5 files changed, 10 insertions, 839 deletions
diff --git a/dev-libs/libgcrypt/ChangeLog b/dev-libs/libgcrypt/ChangeLog
index 95fa68a5800f..59112756adff 100644
--- a/dev-libs/libgcrypt/ChangeLog
+++ b/dev-libs/libgcrypt/ChangeLog
@@ -1,6 +1,11 @@
# ChangeLog for dev-libs/libgcrypt
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/libgcrypt/ChangeLog,v 1.150 2011/09/22 14:19:48 flameeyes Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-libs/libgcrypt/ChangeLog,v 1.151 2011/09/22 14:21:04 flameeyes Exp $
+
+ 22 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org>
+ -libgcrypt-1.5.0_beta1-r1.ebuild, -libgcrypt-1.5.0_beta1-r2.ebuild,
+ -files/libgcrypt-1.5.0_beta1-ctr.patch:
+ Remove betas, so that we can remove the (too big) file in FILESDIR.
22 Sep 2011; Diego E. Pettenò <flameeyes@gentoo.org> libgcrypt-1.5.0.ebuild,
+files/libgcrypt-1.5.0-uscore.patch:
diff --git a/dev-libs/libgcrypt/Manifest b/dev-libs/libgcrypt/Manifest
index 8d2efab0da2d..a61d2c3056a5 100644
--- a/dev-libs/libgcrypt/Manifest
+++ b/dev-libs/libgcrypt/Manifest
@@ -2,21 +2,17 @@
Hash: SHA1
AUX libgcrypt-1.5.0-uscore.patch 981 RMD160 5993a5da17db5c557a141490144027d3d6ffef3d SHA1 c0559284fcd8885c38c9b5c2bd71eac028dc9b02 SHA256 4cbb34cebce02531b9b940494b78b7186b2fd05b802866d9ecb42d478e88e845
-AUX libgcrypt-1.5.0_beta1-ctr.patch 26861 RMD160 891afbd0bd0f0998114921eaf22c81e08357b7ad SHA1 d3d4faba496a0210e862bb23b009d7a82205164e SHA256 c45cba5c60a70d1ffd0595463fbb86cacf73662191b2faa5a643ac9f2600abb0
DIST libgcrypt-1.4.6.tar.bz2 1151877 RMD160 d4d720c4bfe80f0799b2cbdbbb49d304e3195049 SHA1 445b9e158aaf91e24eae3d1040c6213e9d9f5ba6 SHA256 3e4b30da6b357b565333d0222133b64a0414be99ba72733081165c8ea9bc6b85
-DIST libgcrypt-1.5.0-beta1.tar.bz2 1172939 RMD160 de82f94a1f7fd3b8460fa857edc4ab53ebb7cb27 SHA1 fbdbf8cde578835b4e492f34bd83f91deb97a2af SHA256 06842acbc36e3e8f427a56bd794f2e4f958f44e2ad2f41573db23a68ad050be4
DIST libgcrypt-1.5.0.tar.bz2 1433506 RMD160 f01e8198dcc379ff2fa5e8d3ac39e7b32fc41dad SHA1 3e776d44375dc1a710560b98ae8437d5da6e32cf SHA256 4b62fc516004940a0571025401a0581d49199f1a76dfb5ce6fd63f50db8173fa
EBUILD libgcrypt-1.4.6-r1.ebuild 1167 RMD160 add8b9922a69f0c631b4c7d08049c8d379cc5e18 SHA1 92a52594ebf4524af911ad7b3e75fbd50df924f8 SHA256 0d9c4e0a4a0a96304499a18706fd9860c7001417eec1cee064feaee95d0abf89
EBUILD libgcrypt-1.4.6.ebuild 1126 RMD160 bf89e3914988bbfb3e917441cf9a32945b950d71 SHA1 f8445a80a7916f4038860d122afc031fbc84f952 SHA256 e2bf303262e08375c82d10c921c642bfe9383bf3c5c64a7fd20e1d4e704ecf02
EBUILD libgcrypt-1.5.0.ebuild 1144 RMD160 c5323eaea9740c04a50bd1344187b030b9873b38 SHA1 e80154a6fac274bdf0c3247bcbddc5266dcdc076 SHA256 a82ce4bb1484fdb671e78fd8e1a24336442aebab447380e88656152955e51a0a
-EBUILD libgcrypt-1.5.0_beta1-r1.ebuild 1152 RMD160 d110e58e96c5b316c8f91855ef903c572cd842da SHA1 f63c83f1f515c2e5ff4ad4ce4f1cbbc29cd96e41 SHA256 489a81252e453a3791715ec3a79f0e3a74eba5a21a7ba3ea15ba12fec2ca5ab2
-EBUILD libgcrypt-1.5.0_beta1-r2.ebuild 1226 RMD160 430727c835ab5cccad7664c8b5e9b75a6cfd9811 SHA1 76bada7bb3af2d21dea7a2bf6997f436cd9f31f2 SHA256 8954703994a8dc3fbc6664a1e8bacbaf5c58ae48f2df02f6b672d4b5a7f3bfe7
-MISC ChangeLog 21695 RMD160 9ad1ba78323fc6b421ed062eb6e290670cf034f3 SHA1 7c5c783d6ff72f4909931cf64d34cd83d1b4b244 SHA256 18653123175220d9996232f4919fd28c5115218f5c573e6537d6d070e163f2e3
+MISC ChangeLog 21934 RMD160 c07a0058d5bee9d6fb64b6c052cdd2f16976989c SHA1 82bf542958ef487b09bf6db7488deb77197c0895 SHA256 1010cb9e0afed38d168a60aae6f0611442e416ec9a0c1b44056349cec0586450
MISC metadata.xml 160 RMD160 61ea9f9370afee3db802f40f7c6b2edd2f5347cf SHA1 51cf29a3589cff823294704e225b0de18f65e6dd SHA256 7419f4e73ddd07284403525f1380824fc68280cad69e2dfae0645ad52b33ef10
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
-iEYEARECAAYFAk57RAcACgkQAiZjviIA2XhOUwCdEWJl8JvckyWRLGcX+Wq2gv43
-vMIAoNRMRov07xqo/gTJcu9NAT8RDDov
-=+ZTN
+iEYEARECAAYFAk57RFMACgkQAiZjviIA2XhJ4QCg8TZH4APGqOsbzvE2b2tOlqDO
+AT4AnRTfmi8t2utuB3VdoPd/PdqEtG19
+=otbD
-----END PGP SIGNATURE-----
diff --git a/dev-libs/libgcrypt/files/libgcrypt-1.5.0_beta1-ctr.patch b/dev-libs/libgcrypt/files/libgcrypt-1.5.0_beta1-ctr.patch
deleted file mode 100644
index 840d2eb9c6c5..000000000000
--- a/dev-libs/libgcrypt/files/libgcrypt-1.5.0_beta1-ctr.patch
+++ /dev/null
@@ -1,750 +0,0 @@
-http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=2674140cdfdc59ce5ad0238177da1542f5df6e00
-http://git.gnupg.org/cgi-bin/gitweb.cgi?p=libgcrypt.git;a=commitdiff;h=3c18377a55085faf4df745034056bac53565effa
-
---- cipher/cipher.c
-+++ cipher/cipher.c
-@@ -190,6 +190,9 @@
- void (*cbc_dec)(void *context, unsigned char *iv,
- void *outbuf_arg, const void *inbuf_arg,
- unsigned int nblocks);
-+ void (*ctr_enc)(void *context, unsigned char *iv,
-+ void *outbuf_arg, const void *inbuf_arg,
-+ unsigned int nblocks);
- } bulk;
-
-
-@@ -209,12 +212,16 @@
- unsigned char iv[MAX_BLOCKSIZE];
- } u_iv;
-
-+ /* The counter for CTR mode. This field is also used by AESWRAP and
-+ thus we can't use the U_IV union. */
-+ union {
-+ cipher_context_alignment_t iv_align;
-+ unsigned char ctr[MAX_BLOCKSIZE];
-+ } u_ctr;
-+
- unsigned char lastiv[MAX_BLOCKSIZE];
- int unused; /* Number of unused bytes in the IV. */
-
-- unsigned char ctr[MAX_BLOCKSIZE]; /* For Counter (CTR) mode. */
--
--
- /* What follows are two contexts of the cipher in use. The first
- one needs to be aligned well enough for the cipher operation
- whereas the second one is a copy created by cipher_setkey and
-@@ -814,6 +821,7 @@
- h->bulk.cfb_dec = _gcry_aes_cfb_dec;
- h->bulk.cbc_enc = _gcry_aes_cbc_enc;
- h->bulk.cbc_dec = _gcry_aes_cbc_dec;
-+ h->bulk.ctr_enc = _gcry_aes_ctr_enc;
- break;
- #endif /*USE_AES*/
-
-@@ -936,7 +944,7 @@
- memset (&c->marks, 0, sizeof c->marks);
- memset (c->u_iv.iv, 0, c->cipher->blocksize);
- memset (c->lastiv, 0, c->cipher->blocksize);
-- memset (c->ctr, 0, c->cipher->blocksize);
-+ memset (c->u_ctr.ctr, 0, c->cipher->blocksize);
- }
-
-
-@@ -1441,35 +1449,50 @@
- const unsigned char *inbuf, unsigned int inbuflen)
- {
- unsigned int n;
-- unsigned char tmp[MAX_BLOCKSIZE];
- int i;
- unsigned int blocksize = c->cipher->blocksize;
-+ unsigned int nblocks;
-
- if (outbuflen < inbuflen)
- return GPG_ERR_BUFFER_TOO_SHORT;
-
-- if ((inbuflen % blocksize))
-- return GPG_ERR_INV_LENGTH;
-+ /* Use a bulk method if available. */
-+ nblocks = inbuflen / blocksize;
-+ if (nblocks && c->bulk.ctr_enc)
-+ {
-+ c->bulk.ctr_enc (&c->context.c, c->u_ctr.ctr, outbuf, inbuf, nblocks);
-+ inbuf += nblocks * blocksize;
-+ outbuf += nblocks * blocksize;
-+ inbuflen -= nblocks * blocksize;
-+ }
-
-- for (n=0; n < inbuflen; n++)
-+ /* If we don't have a bulk method use the standard method. We also
-+ use this method for the a remaining partial block. */
-+ if (inbuflen)
- {
-- if ((n % blocksize) == 0)
-- {
-- c->cipher->encrypt (&c->context.c, tmp, c->ctr);
-+ unsigned char tmp[MAX_BLOCKSIZE];
-
-- for (i = blocksize; i > 0; i--)
-- {
-- c->ctr[i-1]++;
-- if (c->ctr[i-1] != 0)
-- break;
-- }
-- }
-+ for (n=0; n < inbuflen; n++)
-+ {
-+ if ((n % blocksize) == 0)
-+ {
-+ c->cipher->encrypt (&c->context.c, tmp, c->u_ctr.ctr);
-+
-+ for (i = blocksize; i > 0; i--)
-+ {
-+ c->u_ctr.ctr[i-1]++;
-+ if (c->u_ctr.ctr[i-1] != 0)
-+ break;
-+ }
-+ }
-+
-+ /* XOR input with encrypted counter and store in output. */
-+ outbuf[n] = inbuf[n] ^ tmp[n % blocksize];
-+ }
-
-- /* XOR input with encrypted counter and store in output. */
-- outbuf[n] = inbuf[n] ^ tmp[n % blocksize];
-+ wipememory (tmp, sizeof tmp);
- }
-
-- wipememory (tmp, sizeof tmp);
- return 0;
- }
-
-@@ -1517,7 +1540,7 @@
-
- r = outbuf;
- a = outbuf; /* We store A directly in OUTBUF. */
-- b = c->ctr; /* B is also used to concatenate stuff. */
-+ b = c->u_ctr.ctr; /* B is also used to concatenate stuff. */
-
- /* If an IV has been set we use that IV as the Alternative Initial
- Value; if it has not been set we use the standard value. */
-@@ -1593,7 +1616,7 @@
-
- r = outbuf;
- a = c->lastiv; /* We use c->LASTIV as buffer for A. */
-- b = c->ctr; /* B is also used to concatenate stuff. */
-+ b = c->u_ctr.ctr; /* B is also used to concatenate stuff. */
-
- /* Copy the inbuf to the outbuf and save A. */
- memcpy (a, inbuf, 8);
-@@ -1861,9 +1884,9 @@
- _gcry_cipher_setctr (gcry_cipher_hd_t hd, const void *ctr, size_t ctrlen)
- {
- if (ctr && ctrlen == hd->cipher->blocksize)
-- memcpy (hd->ctr, ctr, hd->cipher->blocksize);
-+ memcpy (hd->u_ctr.ctr, ctr, hd->cipher->blocksize);
- else if (!ctr || !ctrlen)
-- memset (hd->ctr, 0, hd->cipher->blocksize);
-+ memset (hd->u_ctr.ctr, 0, hd->cipher->blocksize);
- else
- return gpg_error (GPG_ERR_INV_ARG);
- return 0;
-@@ -1923,9 +1946,9 @@
-
- case GCRYCTL_SET_CTR: /* Deprecated; use gcry_cipher_setctr. */
- if (buffer && buflen == h->cipher->blocksize)
-- memcpy (h->ctr, buffer, h->cipher->blocksize);
-+ memcpy (h->u_ctr.ctr, buffer, h->cipher->blocksize);
- else if (buffer == NULL || buflen == 0)
-- memset (h->ctr, 0, h->cipher->blocksize);
-+ memset (h->u_ctr.ctr, 0, h->cipher->blocksize);
- else
- rc = GPG_ERR_INV_ARG;
- break;
---- cipher/rijndael.c
-+++ cipher/rijndael.c
-@@ -90,9 +90,7 @@
- #endif
-
-
--static const char *selftest(void);
--
--
-+
- /* Our context object. */
- typedef struct
- {
-@@ -144,6 +142,11 @@
- do { asm volatile ("pxor %%xmm0, %%xmm0\n\t" \
- "pxor %%xmm1, %%xmm1\n" :: ); \
- } while (0)
-+# define aesni_cleanup_2_4() \
-+ do { asm volatile ("pxor %%xmm2, %%xmm2\n\t" \
-+ "pxor %%xmm3, %%xmm3\n" \
-+ "pxor %%xmm4, %%xmm4\n":: ); \
-+ } while (0)
- #else
- # define aesni_prepare() do { } while (0)
- # define aesni_cleanup() do { } while (0)
-@@ -154,6 +157,23 @@
- #include "rijndael-tables.h"
-
-
-+
-+/* Function prototypes. */
-+#ifdef USE_AESNI
-+/* We don't want to inline these functions to help gcc allocate enough
-+ registers. */
-+static void do_aesni_ctr (const RIJNDAEL_context *ctx, unsigned char *ctr,
-+ unsigned char *b, const unsigned char *a)
-+ __attribute__ ((__noinline__));
-+static void do_aesni_ctr_4 (const RIJNDAEL_context *ctx, unsigned char *ctr,
-+ unsigned char *b, const unsigned char *a)
-+ __attribute__ ((__noinline__));
-+#endif /*USE_AESNI*/
-+
-+static const char *selftest(void);
-+
-+
-+
- /* Perform the key setup. */
- static gcry_err_code_t
- do_setkey (RIJNDAEL_context *ctx, const byte *key, const unsigned keylen)
-@@ -272,7 +292,7 @@
- else if (ctx->use_aesni && ctx->rounds == 10)
- {
- /* Note: This code works for AES-128 but it is not much better
-- than than using the standard key schedule. We disable it for
-+ than using the standard key schedule. We disable it for
- now and don't put any effort into implementing this for
- AES-192 and AES-256. */
- asm volatile ("movl %[key], %%esi\n\t"
-@@ -860,6 +880,239 @@
- #undef aesenclast_xmm1_xmm0
- }
-
-+/* Perform a CTR encryption round using the counter CTR and the input
-+ block A. Write the result to the output block B and update CTR.
-+ CTR needs to be a 16 byte aligned little-endian value. */
-+static void
-+do_aesni_ctr (const RIJNDAEL_context *ctx,
-+ unsigned char *ctr, unsigned char *b, const unsigned char *a)
-+{
-+#define aesenc_xmm1_xmm0 ".byte 0x66, 0x0f, 0x38, 0xdc, 0xc1\n\t"
-+#define aesenclast_xmm1_xmm0 ".byte 0x66, 0x0f, 0x38, 0xdd, 0xc1\n\t"
-+ static unsigned char be_mask[16] __attribute__ ((aligned (16))) =
-+ { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
-+
-+ asm volatile ("movdqa %[ctr], %%xmm0\n\t" /* xmm0, xmm2 := CTR */
-+ "movaps %%xmm0, %%xmm2\n\t"
-+ "mov $1, %%esi\n\t" /* xmm2++ (big-endian) */
-+ "movd %%esi, %%xmm1\n\t"
-+ "pshufb %[mask], %%xmm2\n\t"
-+ "paddq %%xmm1, %%xmm2\n\t"
-+ "pshufb %[mask], %%xmm2\n\t"
-+ "movdqa %%xmm2, %[ctr]\n" /* Update CTR. */
-+
-+ "movl %[key], %%esi\n\t" /* esi := keyschenc */
-+ "movdqa (%%esi), %%xmm1\n\t" /* xmm1 := key[0] */
-+ "pxor %%xmm1, %%xmm0\n\t" /* xmm0 ^= key[0] */
-+ "movdqa 0x10(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x20(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x30(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x40(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x50(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x60(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x70(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x80(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0x90(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
-+ "cmp $10, %[rounds]\n\t"
-+ "jz .Lenclast%=\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
-+ "cmp $12, %[rounds]\n\t"
-+ "jz .Lenclast%=\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ "movdqa 0xe0(%%esi), %%xmm1\n"
-+
-+ ".Lenclast%=:\n\t"
-+ aesenclast_xmm1_xmm0
-+ "movdqu %[src], %%xmm1\n\t" /* xmm1 := input */
-+ "pxor %%xmm1, %%xmm0\n\t" /* EncCTR ^= input */
-+ "movdqu %%xmm0, %[dst]" /* Store EncCTR. */
-+
-+ : [ctr] "+m" (*ctr), [dst] "=m" (*b)
-+ : [src] "m" (*a),
-+ [key] "g" (ctx->keyschenc),
-+ [rounds] "g" (ctx->rounds),
-+ [mask] "m" (*be_mask)
-+ : "%esi", "cc", "memory");
-+#undef aesenc_xmm1_xmm0
-+#undef aesenclast_xmm1_xmm0
-+}
-+
-+
-+/* Four blocks at a time variant of do_aesni_ctr. */
-+static void
-+do_aesni_ctr_4 (const RIJNDAEL_context *ctx,
-+ unsigned char *ctr, unsigned char *b, const unsigned char *a)
-+{
-+#define aesenc_xmm1_xmm0 ".byte 0x66, 0x0f, 0x38, 0xdc, 0xc1\n\t"
-+#define aesenc_xmm1_xmm2 ".byte 0x66, 0x0f, 0x38, 0xdc, 0xd1\n\t"
-+#define aesenc_xmm1_xmm3 ".byte 0x66, 0x0f, 0x38, 0xdc, 0xd9\n\t"
-+#define aesenc_xmm1_xmm4 ".byte 0x66, 0x0f, 0x38, 0xdc, 0xe1\n\t"
-+#define aesenclast_xmm1_xmm0 ".byte 0x66, 0x0f, 0x38, 0xdd, 0xc1\n\t"
-+#define aesenclast_xmm1_xmm2 ".byte 0x66, 0x0f, 0x38, 0xdd, 0xd1\n\t"
-+#define aesenclast_xmm1_xmm3 ".byte 0x66, 0x0f, 0x38, 0xdd, 0xd9\n\t"
-+#define aesenclast_xmm1_xmm4 ".byte 0x66, 0x0f, 0x38, 0xdd, 0xe1\n\t"
-+
-+ static unsigned char be_mask[16] __attribute__ ((aligned (16))) =
-+ { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
-+
-+ /* Register usage:
-+ esi keyschedule
-+ xmm0 CTR-0
-+ xmm1 temp / round key
-+ xmm2 CTR-1
-+ xmm3 CTR-2
-+ xmm4 CTR-3
-+ xmm5 temp
-+ */
-+
-+ asm volatile ("movdqa %[ctr], %%xmm0\n\t" /* xmm0, xmm2 := CTR */
-+ "movaps %%xmm0, %%xmm2\n\t"
-+ "mov $1, %%esi\n\t" /* xmm1 := 1 */
-+ "movd %%esi, %%xmm1\n\t"
-+ "pshufb %[mask], %%xmm2\n\t" /* xmm2 := le(xmm2) */
-+ "paddq %%xmm1, %%xmm2\n\t" /* xmm2++ */
-+ "movaps %%xmm2, %%xmm3\n\t" /* xmm3 := xmm2 */
-+ "paddq %%xmm1, %%xmm3\n\t" /* xmm3++ */
-+ "movaps %%xmm3, %%xmm4\n\t" /* xmm4 := xmm3 */
-+ "paddq %%xmm1, %%xmm4\n\t" /* xmm4++ */
-+ "movaps %%xmm4, %%xmm5\n\t" /* xmm5 := xmm4 */
-+ "paddq %%xmm1, %%xmm5\n\t" /* xmm5++ */
-+ "pshufb %[mask], %%xmm2\n\t" /* xmm2 := be(xmm2) */
-+ "pshufb %[mask], %%xmm3\n\t" /* xmm3 := be(xmm3) */
-+ "pshufb %[mask], %%xmm4\n\t" /* xmm4 := be(xmm4) */
-+ "pshufb %[mask], %%xmm5\n\t" /* xmm5 := be(xmm5) */
-+ "movdqa %%xmm5, %[ctr]\n" /* Update CTR. */
-+
-+ "movl %[key], %%esi\n\t" /* esi := keyschenc */
-+ "movdqa (%%esi), %%xmm1\n\t" /* xmm1 := key[0] */
-+ "pxor %%xmm1, %%xmm0\n\t" /* xmm0 ^= key[0] */
-+ "pxor %%xmm1, %%xmm2\n\t" /* xmm2 ^= key[0] */
-+ "pxor %%xmm1, %%xmm3\n\t" /* xmm3 ^= key[0] */
-+ "pxor %%xmm1, %%xmm4\n\t" /* xmm4 ^= key[0] */
-+ "movdqa 0x10(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x20(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x30(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x40(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x50(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x60(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x70(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x80(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0x90(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0xa0(%%esi), %%xmm1\n\t"
-+ "cmp $10, %[rounds]\n\t"
-+ "jz .Lenclast%=\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0xb0(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0xc0(%%esi), %%xmm1\n\t"
-+ "cmp $12, %[rounds]\n\t"
-+ "jz .Lenclast%=\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0xd0(%%esi), %%xmm1\n\t"
-+ aesenc_xmm1_xmm0
-+ aesenc_xmm1_xmm2
-+ aesenc_xmm1_xmm3
-+ aesenc_xmm1_xmm4
-+ "movdqa 0xe0(%%esi), %%xmm1\n"
-+
-+ ".Lenclast%=:\n\t"
-+ aesenclast_xmm1_xmm0
-+ aesenclast_xmm1_xmm2
-+ aesenclast_xmm1_xmm3
-+ aesenclast_xmm1_xmm4
-+
-+ "movdqu %[src], %%xmm1\n\t" /* Get block 1. */
-+ "pxor %%xmm1, %%xmm0\n\t" /* EncCTR-1 ^= input */
-+ "movdqu %%xmm0, %[dst]\n\t" /* Store block 1 */
-+
-+ "movdqu (16)%[src], %%xmm1\n\t" /* Get block 2. */
-+ "pxor %%xmm1, %%xmm2\n\t" /* EncCTR-2 ^= input */
-+ "movdqu %%xmm2, (16)%[dst]\n\t" /* Store block 2. */
-+
-+ "movdqu (32)%[src], %%xmm1\n\t" /* Get block 3. */
-+ "pxor %%xmm1, %%xmm3\n\t" /* EncCTR-3 ^= input */
-+ "movdqu %%xmm3, (32)%[dst]\n\t" /* Store block 3. */
-+
-+ "movdqu (48)%[src], %%xmm1\n\t" /* Get block 4. */
-+ "pxor %%xmm1, %%xmm4\n\t" /* EncCTR-4 ^= input */
-+ "movdqu %%xmm4, (48)%[dst]" /* Store block 4. */
-+
-+ : [ctr] "+m" (*ctr), [dst] "=m" (*b)
-+ : [src] "m" (*a),
-+ [key] "g" (ctx->keyschenc),
-+ [rounds] "g" (ctx->rounds),
-+ [mask] "m" (*be_mask)
-+ : "%esi", "cc", "memory");
-+#undef aesenc_xmm1_xmm0
-+#undef aesenc_xmm1_xmm2
-+#undef aesenc_xmm1_xmm3
-+#undef aesenc_xmm1_xmm4
-+#undef aesenclast_xmm1_xmm0
-+#undef aesenclast_xmm1_xmm2
-+#undef aesenclast_xmm1_xmm3
-+#undef aesenclast_xmm1_xmm4
-+}
-+
-
- static void
- do_aesni (RIJNDAEL_context *ctx, int decrypt_flag,
-@@ -1014,6 +1267,69 @@
-
- _gcry_burn_stack (48 + 2*sizeof(int));
- }
-+
-+
-+/* Bulk encryption of complete blocks in CTR mode. Caller needs to
-+ make sure that CTR is aligned on a 16 byte boundary if AESNI; the
-+ minimum alignment is for an u32. This function is only intended
-+ for the bulk encryption feature of cipher.c. CTR is expected to be
-+ of size BLOCKSIZE. */
-+void
-+_gcry_aes_ctr_enc (void *context, unsigned char *ctr,
-+ void *outbuf_arg, const void *inbuf_arg,
-+ unsigned int nblocks)
-+{
-+ RIJNDAEL_context *ctx = context;
-+ unsigned char *outbuf = outbuf_arg;
-+ const unsigned char *inbuf = inbuf_arg;
-+ unsigned char *p;
-+ int i;
-+
-+ if (0)
-+ ;
-+#ifdef USE_AESNI
-+ else if (ctx->use_aesni)
-+ {
-+ aesni_prepare ();
-+ for ( ;nblocks > 3 ; nblocks -= 4 )
-+ {
-+ do_aesni_ctr_4 (ctx, ctr, outbuf, inbuf);
-+ outbuf += 4*BLOCKSIZE;
-+ inbuf += 4*BLOCKSIZE;
-+ }
-+ for ( ;nblocks; nblocks-- )
-+ {
-+ do_aesni_ctr (ctx, ctr, outbuf, inbuf);
-+ outbuf += BLOCKSIZE;
-+ inbuf += BLOCKSIZE;
-+ }
-+ aesni_cleanup ();
-+ aesni_cleanup_2_4 ();
-+ }
-+#endif /*USE_AESNI*/
-+ else
-+ {
-+ union { unsigned char x1[16]; u32 x32[4]; } tmp;
-+
-+ for ( ;nblocks; nblocks-- )
-+ {
-+ /* Encrypt the counter. */
-+ do_encrypt_aligned (ctx, tmp.x1, ctr);
-+ /* XOR the input with the encrypted counter and store in output. */
-+ for (p=tmp.x1, i=0; i < BLOCKSIZE; i++)
-+ *outbuf++ = (*p++ ^= *inbuf++);
-+ /* Increment the counter. */
-+ for (i = BLOCKSIZE; i > 0; i--)
-+ {
-+ ctr[i-1]++;
-+ if (ctr[i-1])
-+ break;
-+ }
-+ }
-+ }
-+
-+ _gcry_burn_stack (48 + 2*sizeof(int));
-+}
-
-
-
---- src/cipher.h
-+++ src/cipher.h
-@@ -53,6 +53,9 @@
- void _gcry_aes_cbc_dec (void *context, unsigned char *iv,
- void *outbuf_arg, const void *inbuf_arg,
- unsigned int nblocks);
-+void _gcry_aes_ctr_enc (void *context, unsigned char *ctr,
-+ void *outbuf_arg, const void *inbuf_arg,
-+ unsigned int nblocks);
-
-
- /*-- dsa.c --*/
---- tests/basic.c
-+++ tests/basic.c
-@@ -69,6 +69,22 @@
- }
-
- static void
-+mismatch (const void *expected, size_t expectedlen,
-+ const void *computed, size_t computedlen)
-+{
-+ const unsigned char *p;
-+
-+ fprintf (stderr, "expected:");
-+ for (p = expected; expectedlen; p++, expectedlen--)
-+ fprintf (stderr, " %02x", *p);
-+ fprintf (stderr, "\ncomputed:");
-+ for (p = computed; computedlen; p++, computedlen--)
-+ fprintf (stderr, " %02x", *p);
-+ fprintf (stderr, "\n");
-+}
-+
-+
-+static void
- die (const char *format, ...)
- {
- va_list arg_ptr;
-@@ -349,8 +365,7 @@
- unsigned char plaintext[MAX_DATA_LEN];
- int inlen;
- char out[MAX_DATA_LEN];
-- }
-- data[MAX_DATA_LEN];
-+ } data[5];
- } tv[] =
- {
- /* http://csrc.nist.gov/publications/nistpubs/800-38a/sp800-38a.pdf */
-@@ -369,6 +384,8 @@
- { "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
- 16,
- "\x1e\x03\x1d\xda\x2f\xbe\x03\xd1\x79\x21\x70\xa0\xf3\x00\x9c\xee" },
-+
-+ { "", 0, "" }
- }
- },
- { GCRY_CIPHER_AES192,
-@@ -387,6 +404,7 @@
- { "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
- 16,
- "\x4f\x78\xa7\xf6\xd2\x98\x09\x58\x5a\x97\xda\xec\x58\xc6\xb0\x50" },
-+ { "", 0, "" }
- }
- },
- { GCRY_CIPHER_AES256,
-@@ -404,7 +422,80 @@
- "\x2b\x09\x30\xda\xa2\x3d\xe9\x4c\xe8\x70\x17\xba\x2d\x84\x98\x8d" },
- { "\xf6\x9f\x24\x45\xdf\x4f\x9b\x17\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
- 16,
-- "\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6\x13\xc2\xdd\x08\x45\x79\x41\xa6" }
-+ "\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6\x13\xc2\xdd\x08\x45\x79\x41\xa6" },
-+ { "", 0, "" }
-+ }
-+ },
-+ /* Some truncation tests. With a truncated second block and
-+ also with a single truncated block. */
-+ { GCRY_CIPHER_AES,
-+ "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
-+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
-+ {{"\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
-+ 16,
-+ "\x87\x4d\x61\x91\xb6\x20\xe3\x26\x1b\xef\x68\x64\x99\x0d\xb6\xce" },
-+ {"\xae\x2d\x8a\x57\x1e\x03\xac\x9c\x9e\xb7\x6f\xac\x45\xaf\x8e",
-+ 15,
-+ "\x98\x06\xf6\x6b\x79\x70\xfd\xff\x86\x17\x18\x7b\xb9\xff\xfd" },
-+ {"", 0, "" }
-+ }
-+ },
-+ { GCRY_CIPHER_AES,
-+ "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
-+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
-+ {{"\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
-+ 16,
-+ "\x87\x4d\x61\x91\xb6\x20\xe3\x26\x1b\xef\x68\x64\x99\x0d\xb6\xce" },
-+ {"\xae",
-+ 1,
-+ "\x98" },
-+ {"", 0, "" }
-+ }
-+ },
-+ { GCRY_CIPHER_AES,
-+ "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
-+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
-+ {{"\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17",
-+ 15,
-+ "\x87\x4d\x61\x91\xb6\x20\xe3\x26\x1b\xef\x68\x64\x99\x0d\xb6" },
-+ {"", 0, "" }
-+ }
-+ },
-+ { GCRY_CIPHER_AES,
-+ "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
-+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
-+ {{"\x6b",
-+ 1,
-+ "\x87" },
-+ {"", 0, "" }
-+ }
-+ },
-+#if USE_CAST5
-+ /* A selfmade test vector using an 64 bit block cipher. */
-+ { GCRY_CIPHER_CAST5,
-+ "\x2b\x7e\x15\x16\x28\xae\xd2\xa6\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
-+ "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8",
-+ {{"\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
-+ 16,
-+ "\xe8\xa7\xac\x68\xca\xca\xa0\x20\x10\xcb\x1b\xcc\x79\x2c\xc4\x48" },
-+ {"\xae\x2d\x8a\x57\x1e\x03\xac\x9c",
-+ 8,
-+ "\x16\xe8\x72\x77\xb0\x98\x29\x68" },
-+ {"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51",
-+ 8,
-+ "\x9a\xb3\xa8\x03\x3b\xb4\x14\xba" },
-+ {"\xae\x2d\x8a\x57\x1e\x03\xac\x9c\xa1\x00",
-+ 10,
-+ "\x31\x5e\xd3\xfb\x1b\x8d\xd1\xf9\xb0\x83" },
-+ { "", 0, "" }
-+ }
-+ },
-+#endif /*USE_CAST5*/
-+ { 0,
-+ "",
-+ "",
-+ {
-+ {"", 0, "" }
- }
- }
- };
-@@ -417,6 +508,9 @@
- fprintf (stderr, " Starting CTR cipher checks.\n");
- for (i = 0; i < sizeof (tv) / sizeof (tv[0]); i++)
- {
-+ if (!tv[i].algo)
-+ continue;
-+
- err = gcry_cipher_open (&hde, tv[i].algo, GCRY_CIPHER_MODE_CTR, 0);
- if (!err)
- err = gcry_cipher_open (&hdd, tv[i].algo, GCRY_CIPHER_MODE_CTR, 0);
-@@ -485,7 +579,11 @@
- }
-
- if (memcmp (tv[i].data[j].out, out, tv[i].data[j].inlen))
-- fail ("aes-ctr, encrypt mismatch entry %d:%d\n", i, j);
-+ {
-+ fail ("aes-ctr, encrypt mismatch entry %d:%d\n", i, j);
-+ mismatch (tv[i].data[j].out, tv[i].data[j].inlen,
-+ out, tv[i].data[j].inlen);
-+ }
-
- err = gcry_cipher_decrypt (hdd, out, tv[i].data[j].inlen, NULL, 0);
- if (err)
-@@ -498,7 +596,11 @@
- }
-
- if (memcmp (tv[i].data[j].plaintext, out, tv[i].data[j].inlen))
-- fail ("aes-ctr, decrypt mismatch entry %d:%d\n", i, j);
-+ {
-+ fail ("aes-ctr, decrypt mismatch entry %d:%d\n", i, j);
-+ mismatch (tv[i].data[j].plaintext, tv[i].data[j].inlen,
-+ out, tv[i].data[j].inlen);
-+ }
-
- }
-
-@@ -509,18 +611,6 @@
- if (err)
- fail ("aes-ctr, encryption failed for valid input");
-
-- err = gcry_cipher_encrypt (hde, out, MAX_DATA_LEN,
-- "1234567890123456", 15);
-- if (gpg_err_code (err) != GPG_ERR_INV_LENGTH)
-- fail ("aes-ctr, too short input returned wrong error: %s\n",
-- gpg_strerror (err));
--
-- err = gcry_cipher_encrypt (hde, out, MAX_DATA_LEN,
-- "12345678901234567", 17);
-- if (gpg_err_code (err) != GPG_ERR_INV_LENGTH)
-- fail ("aes-ctr, too long input returned wrong error: %s\n",
-- gpg_strerror (err));
--
- err = gcry_cipher_encrypt (hde, out, 15,
- "1234567890123456", 16);
- if (gpg_err_code (err) != GPG_ERR_BUFFER_TOO_SHORT)
-@@ -545,18 +635,6 @@
- if (err)
- fail ("aes-ctr, decryption failed for valid input");
-
-- err = gcry_cipher_decrypt (hde, out, MAX_DATA_LEN,
-- "1234567890123456", 15);
-- if (gpg_err_code (err) != GPG_ERR_INV_LENGTH)
-- fail ("aes-ctr, too short input returned wrong error: %s\n",
-- gpg_strerror (err));
--
-- err = gcry_cipher_decrypt (hde, out, MAX_DATA_LEN,
-- "12345678901234567", 17);
-- if (gpg_err_code (err) != GPG_ERR_INV_LENGTH)
-- fail ("aes-ctr, too long input returned wrong error: %s\n",
-- gpg_strerror (err));
--
- err = gcry_cipher_decrypt (hde, out, 15,
- "1234567890123456", 16);
- if (gpg_err_code (err) != GPG_ERR_BUFFER_TOO_SHORT)
diff --git a/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r1.ebuild b/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r1.ebuild
deleted file mode 100644
index b97f9c03f735..000000000000
--- a/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r1.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r1.ebuild,v 1.1 2011/04/06 18:37:54 c1pher Exp $
-
-EAPI="3"
-
-DESCRIPTION="General purpose crypto library based on the code used in GnuPG"
-HOMEPAGE="http://www.gnupg.org/"
-#SRC_URI="mirror://gnupg/libgcrypt/${P}.tar.bz2
-# ftp://ftp.gnupg.org/gcrypt/${PN}/${P}.tar.bz2"
-SRC_URI="ftp://ftp.gnupg.org/gcrypt/alpha/${PN}/${P/_/-}.tar.bz2"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
-IUSE="static-libs"
-
-RDEPEND=">=dev-libs/libgpg-error-1.8"
-DEPEND="${RDEPEND}"
-
-S="${WORKDIR}/${P/_/-}"
-
-src_configure() {
- # --disable-padlock-support for bug #201917
- econf \
- --disable-padlock-support \
- --disable-dependency-tracking \
- --with-pic \
- --enable-noexecstack \
- --disable-O-flag-munging \
- $(use_enable static-libs static)
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "emake install failed"
- dodoc AUTHORS ChangeLog NEWS README* THANKS TODO || die "dodoc failed"
-}
diff --git a/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r2.ebuild b/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r2.ebuild
deleted file mode 100644
index c2bf8dafc124..000000000000
--- a/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r2.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-libs/libgcrypt/libgcrypt-1.5.0_beta1-r2.ebuild,v 1.1 2011/05/01 16:04:19 arfrever Exp $
-
-EAPI="3"
-
-inherit eutils
-
-DESCRIPTION="General purpose crypto library based on the code used in GnuPG"
-HOMEPAGE="http://www.gnupg.org/"
-#SRC_URI="mirror://gnupg/libgcrypt/${P}.tar.bz2
-# ftp://ftp.gnupg.org/gcrypt/${PN}/${P}.tar.bz2"
-SRC_URI="ftp://ftp.gnupg.org/gcrypt/alpha/${PN}/${P/_/-}.tar.bz2"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~sparc-fbsd ~x86-fbsd"
-IUSE="static-libs"
-
-RDEPEND=">=dev-libs/libgpg-error-1.8"
-DEPEND="${RDEPEND}"
-
-S="${WORKDIR}/${P/_/-}"
-
-src_prepare() {
- epatch "${FILESDIR}/${P}-ctr.patch"
-}
-
-src_configure() {
- # --disable-padlock-support for bug #201917
- econf \
- --disable-padlock-support \
- --disable-dependency-tracking \
- --with-pic \
- --enable-noexecstack \
- --disable-O-flag-munging \
- $(use_enable static-libs static)
-}
-
-src_install() {
- emake DESTDIR="${D}" install || die "emake install failed"
- dodoc AUTHORS ChangeLog NEWS README* THANKS TODO || die "dodoc failed"
-}