summaryrefslogtreecommitdiff
path: root/dev-php/pecl-crack
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-php/pecl-crack
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-php/pecl-crack')
-rw-r--r--dev-php/pecl-crack/Manifest10
-rw-r--r--dev-php/pecl-crack/files/0.4-php7.patch356
-rw-r--r--dev-php/pecl-crack/files/fix-pecl-bug-5765.patch11
-rw-r--r--dev-php/pecl-crack/files/fix-php-5-4-support.patch30
-rw-r--r--dev-php/pecl-crack/metadata.xml8
-rw-r--r--dev-php/pecl-crack/pecl-crack-0.4-r4.ebuild31
-rw-r--r--dev-php/pecl-crack/pecl-crack-0.4-r5.ebuild24
-rw-r--r--dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild26
8 files changed, 496 insertions, 0 deletions
diff --git a/dev-php/pecl-crack/Manifest b/dev-php/pecl-crack/Manifest
new file mode 100644
index 000000000000..2423a1b0b85e
--- /dev/null
+++ b/dev-php/pecl-crack/Manifest
@@ -0,0 +1,10 @@
+AUX 0.4-php7.patch 8435 SHA256 74eb7097cef9e1306b9c0d4ec80149f948bf4696d011c315e0fcab2ee66eab8f SHA512 f164cc8e37e37636de843063426d1ba07be17362d4b0fa0de59e1a9e21a15b7d5a312ed64bd73bcd51db5185a843a05611c23c5f5c442b720f437347f0401649 WHIRLPOOL 59d6c28f2f7da8b394df019e62d1284073e41a1e804e53625a83bd513282e1871bd5cfdcdd63feb43aaf29d38dc8390ec8c482a437828cf4d1c756bb394afc17
+AUX fix-pecl-bug-5765.patch 375 SHA256 1a4f72c1c51cbc95eaa68776fdc677a740ae2cc04e21000a2260548fb7f85b74 SHA512 21f7d76242c630334e88c8bf1f6e4fe9718943c36c6886f8de6503c9c616beab7007e31127b40b1df66763893d692a65f20483addb1607e0cfc7ec7b92ff4500 WHIRLPOOL 040ae981d77681384f96f4c4713a0668b33e7e3c8551edbc1c80c0372f6387b457920b4695c8b8bffbcad2afaae3fce8ac5c3960992c70af61c1c7bef88b4ab9
+AUX fix-php-5-4-support.patch 674 SHA256 f2fff058733ad7990f4685f70b8988721d6ad8d3302742f1143cffb468bb92f1 SHA512 ca2475557dc1d2f23a1e5745e7f3bac70855d0916a9d37d1a7efcd04e3bb973220b87aa2cc7ba8315473a2fd16dfd142c5c01608e94c595541ff15838c1e1d44 WHIRLPOOL 68e93584a9fa166c8b9555e05150315b30a5c5fe9c1159e61eb7b560b1a20aafd59aa8071509625c1e19dcee3046593c0e76ac7534157d3d9c114766776f59eb
+DIST crack-0.4.tgz 25524 SHA256 00a5250a6c82b39c1aefcb6e1ce0980da5df49c9bfc6ade9a8e867d89e87f560 SHA512 0dec64d1ce859bb3d7e2b834e4bcc4ef8c6f3e88e5b61884e40dddc366a992a7c85bfad4227224d4401aad7f26843678709f29acd2dcc75563658040b8067d7f WHIRLPOOL 2b6d26cf65912f6fac72733711ed48e0c859df28a3c7a2b351e607edcc51f15fea7cfef01419b3fd56267ddf9c57f4a75f93e64015c0db9d14e5799ac1a411c7
+EBUILD pecl-crack-0.4-r4.ebuild 669 SHA256 21ca7bb8d8c19a72238c483abf438cf937aa25e5da8e16018122d106180f5c13 SHA512 86ae5004c6df246fda3c8eab83552c29ba598dce7ba19569ddf1342bf06a96ea9366613dcac29682d2641c5d36dc612e2ae585f2a3455f153798ec4862a4255e WHIRLPOOL cf53eb0b18e9dc84e5617e8f22a7330cdb9bc3d7fd571b29dc7cda28ed9b69ed660c08c49e3f22e6067b4c1c6f44fecb8faf231da75ecac639da6345f4e3c8a3
+EBUILD pecl-crack-0.4-r5.ebuild 540 SHA256 4f264539d87b0e4685b4abb780f9a77fa2809295e8e8a9df5d44eb3961224cbe SHA512 462351a6d267763c368541ca0a70c3f01d908df63694cf8d33a9fa963c8cd7fd776f30d94a2f361c1565f58eba6f083fbf11cb1aaa66de839fb6597a5ed53cbd WHIRLPOOL af51cdea554d1b25d098f76afc584864a1b46ceb9ca9401c0562fab0e756da75730804555e0656c48056dc4c98301d76841b2710f995e8bf8855ccd111bd96a0
+EBUILD pecl-crack-0.4-r6.ebuild 585 SHA256 792b78759c19189519b944e208f957f4a83ede50d69ab5e3234a2e158fb139fe SHA512 cbfa3787de7b4ad3c95a388bb48692ced0ea19da922337d15e7c76a30376d5849b74a71dac82dd7f29e0ba96525eb19e514a06537983112712a9e06198ebe093 WHIRLPOOL 31d927c5285c8b1162799f2ac7548e172d9bcda3f44b096e88fe89df99bfb2aee2a1b77b4cc536ff2bd25e034b945ce973b274112b89518f654a6bd9bfb13913
+MISC ChangeLog 2895 SHA256 73e34b6cc44100823758b604c414da082a5c597b869175f58d17a9113cd5ea3a SHA512 11fec7699502a87d57ae72efe3d571a79d7207c8499b3d150fa0986e65aeb223861684cabbba65099265b2f415f518a9b44777d5107b51caf1755d033b6b9656 WHIRLPOOL 7b908028ecbf68978e874cb333d83040978138469b7cc796b967bcc403bd6d80869805df624799c23767be316c3cd16eb23f025d70d9bdd9f6a56ce252ac517e
+MISC ChangeLog-2015 5469 SHA256 8e461e2f7fe1293a9c0235ea94610c2a77e0a9f65769b8bf86b6e667cbda2850 SHA512 41a55e94a50da6780ec6a937f8251417ad32c02d68cdcd388ee6bfb84b4358e92b99809c4f387b8304307afca9cdb618d0921ad3b210cc2bd3a0fd48c2c4342d WHIRLPOOL c940536eeea140c572d907413e79d7166af25dd8cb675a15d5be3a7df548f9f4cc331774957e72dbc70d19b85a852de96ff1622b0d9f55403a7943db19488a6b
+MISC metadata.xml 239 SHA256 b54aca642ac424532264a97d14931720ed288cf387dbdef6a10b34ffed6689f1 SHA512 2181b874bfe8cd31e7730d8207e26cfd2f272eaf2d1b57ae0faff126347a5298fa1c506d9107e1da9736c8a0ed9c8c339e4d9509a8726b79dbe86e073c12dee0 WHIRLPOOL 80ab9605bb31ce3310bf524de4705c67ca85cf8f2346b7e13274595598b9fe92c9b119beb865ef214ad33ef172b880e318d18ff8c8d2026cb7319f0524d8a7aa
diff --git a/dev-php/pecl-crack/files/0.4-php7.patch b/dev-php/pecl-crack/files/0.4-php7.patch
new file mode 100644
index 000000000000..5a00c9121810
--- /dev/null
+++ b/dev-php/pecl-crack/files/0.4-php7.patch
@@ -0,0 +1,356 @@
+--- a/crack.c 2016-12-19 16:04:09.244782234 -0500
++++ b/crack.c 2016-12-20 09:20:11.903140742 -0500
+@@ -36,13 +36,31 @@
+ /* True global resources - no need for thread safety here */
+ static int le_crack;
+
++ZEND_BEGIN_ARG_INFO_EX(crack_opendict_args, 0, ZEND_RETURN_VALUE, 1)
++ ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_closedict_args, 0, ZEND_RETURN_VALUE, 0)
++ ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_check_args, 0, ZEND_RETURN_VALUE, 1)
++ ZEND_ARG_INFO(0, password)
++ ZEND_ARG_INFO(0, username)
++ ZEND_ARG_INFO(0, gecos)
++ ZEND_ARG_INFO(0, dictionary)
++ZEND_END_ARG_INFO()
++
++ZEND_BEGIN_ARG_INFO_EX(crack_getlastmessage_args, 0, ZEND_RETURN_VALUE, 0)
++ZEND_END_ARG_INFO()
++
+ /* {{{ crack_functions[]
+ */
+ zend_function_entry crack_functions[] = {
+- PHP_FE(crack_opendict, NULL)
+- PHP_FE(crack_closedict, NULL)
+- PHP_FE(crack_check, NULL)
+- PHP_FE(crack_getlastmessage, NULL)
++ ZEND_FE(crack_opendict, crack_opendict_args)
++ ZEND_FE(crack_closedict, crack_closedict_args)
++ ZEND_FE(crack_check, crack_check_args)
++ ZEND_FE(crack_getlastmessage, crack_getlastmessage_args)
+ {NULL, NULL, NULL}
+ };
+ /* }}} */
+@@ -55,7 +73,7 @@
+ #endif
+ "crack",
+ crack_functions,
+- PHP_MINIT(crack),
++ PHP_MINIT(crack),
+ PHP_MSHUTDOWN(crack),
+ PHP_RINIT(crack),
+ PHP_RSHUTDOWN(crack),
+@@ -84,7 +102,11 @@
+ static void php_crack_init_globals(zend_crack_globals *crack_globals)
+ {
+ crack_globals->last_message = NULL;
++#if PHP_VERSION_ID >= 70000
++ crack_globals->default_dict = NULL;
++#else
+ crack_globals->default_dict = -1;
++#endif
+ }
+ /* }}} */
+
+@@ -95,7 +117,7 @@
+ char *filename;
+ int filename_len;
+ int result = SUCCESS;
+-
++
+ #if PHP_VERSION_ID < 50400
+ if (PG(safe_mode)) {
+ filename_len = strlen(path) + 10;
+@@ -103,7 +125,7 @@
+ if (NULL == filename) {
+ return FAILURE;
+ }
+-
++
+ memset(filename, '\0', filename_len);
+ strcpy(filename, path);
+ strcat(filename, ".pwd");
+@@ -111,7 +133,7 @@
+ efree(filename);
+ return FAILURE;
+ }
+-
++
+ memset(filename, '\0', filename_len);
+ strcpy(filename, path);
+ strcat(filename, ".pwi");
+@@ -119,7 +141,7 @@
+ efree(filename);
+ return FAILURE;
+ }
+-
++
+ memset(filename, '\0', filename_len);
+ strcpy(filename, path);
+ strcat(filename, ".hwm");
+@@ -129,39 +151,64 @@
+ }
+ }
+ #endif
+-
++
+ if (php_check_open_basedir(path TSRMLS_CC)) {
+ return FAILURE;
+ }
+-
++
+ return SUCCESS;
+ }
+ /* }}} */
+
+ /* {{{ php_crack_set_default_dict
+ */
++#if PHP_VERSION_ID >= 70000
++static void php_crack_set_default_dict(zend_resource *id)
++{
++ if (CRACKG(default_dict) != NULL) {
++ zend_list_close(CRACKG(default_dict));
++ }
++
++ CRACKG(default_dict) = id;
++ id->gc.refcount++;
++}
++#else
+ static void php_crack_set_default_dict(int id TSRMLS_DC)
+ {
+ if (CRACKG(default_dict) != -1) {
+ zend_list_delete(CRACKG(default_dict));
+ }
+-
++
+ CRACKG(default_dict) = id;
+ zend_list_addref(id);
+ }
++#endif
+ /* }}} */
+
+ /* {{{ php_crack_get_default_dict
+ */
++#if PHP_VERSION_ID >= 70000
++static zend_resource * php_crack_get_default_dict(INTERNAL_FUNCTION_PARAMETERS)
++#else
+ static int php_crack_get_default_dict(INTERNAL_FUNCTION_PARAMETERS)
++#endif
+ {
++#if PHP_VERSION_ID >= 70000
++ if ((NULL == CRACKG(default_dict)) && (NULL != CRACKG(default_dictionary))) {
++#else
+ if ((-1 == CRACKG(default_dict)) && (NULL != CRACKG(default_dictionary))) {
++#endif
+ CRACKLIB_PWDICT *pwdict;
+ printf("trying to open: %s\n", CRACKG(default_dictionary));
+ pwdict = cracklib_pw_open(CRACKG(default_dictionary), "r");
+ if (NULL != pwdict) {
++#if PHP_VERSION_ID >= 70000
++ ZVAL_RES(return_value, zend_register_resource(pwdict, le_crack));
++ php_crack_set_default_dict(Z_RES_P(return_value));
++#else
+ ZEND_REGISTER_RESOURCE(return_value, pwdict, le_crack);
+ php_crack_set_default_dict(Z_LVAL_P(return_value) TSRMLS_CC);
++#endif
+ }
+ }
+
+@@ -171,7 +218,11 @@
+
+ /* {{{ php_crack_module_dtor
+ */
++#if PHP_VERSION_ID >= 70000
++static void php_crack_module_dtor(zend_resource *rsrc)
++#else
+ static void php_crack_module_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
++#endif
+ {
+ CRACKLIB_PWDICT *pwdict = (CRACKLIB_PWDICT *) rsrc->ptr;
+
+@@ -191,7 +242,9 @@
+
+ REGISTER_INI_ENTRIES();
+ le_crack = zend_register_list_destructors_ex(php_crack_module_dtor, NULL, "crack dictionary", module_number);
++#if PHP_VERSION_ID < 70000
+ Z_TYPE(crack_module_entry) = type;
++#endif
+
+ return SUCCESS;
+ }
+@@ -210,7 +263,11 @@
+ PHP_RINIT_FUNCTION(crack)
+ {
+ CRACKG(last_message) = NULL;
++#if PHP_VERSION_ID >= 70000
++ CRACKG(default_dict) = NULL;
++#else
+ CRACKG(default_dict) = -1;
++#endif
+
+ return SUCCESS;
+ }
+@@ -245,7 +302,7 @@
+ PHP_FUNCTION(crack_opendict)
+ {
+ char *path;
+- int path_len;
++ size_t path_len;
+ CRACKLIB_PWDICT *pwdict;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE) {
+@@ -265,9 +322,14 @@
+ #endif
+ RETURN_FALSE;
+ }
+-
++
++#if PHP_VERSION_ID >= 70000
++ RETURN_RES(zend_register_resource(pwdict, le_crack));
++ php_crack_set_default_dict(Z_RES_P(return_value));
++#else
+ ZEND_REGISTER_RESOURCE(return_value, pwdict, le_crack);
+ php_crack_set_default_dict(Z_LVAL_P(return_value) TSRMLS_CC);
++#endif
+ }
+ /* }}} */
+
+@@ -276,7 +338,11 @@
+ PHP_FUNCTION(crack_closedict)
+ {
+ zval *dictionary = NULL;
++#if PHP_VERSION_ID >= 70000
++ zend_resource *id;
++#else
+ int id = -1;
++#endif
+ CRACKLIB_PWDICT *pwdict;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|r", &dictionary)) {
+@@ -285,7 +351,11 @@
+
+ if (NULL == dictionary) {
+ id = php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
++#if PHP_VERSION_ID >= 70000
++ if (id == NULL) {
++#else
+ if (id == -1) {
++#endif
+ #if ZEND_MODULE_API_NO >= 20021010
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Could not open default crack dicionary");
+ #else
+@@ -294,8 +364,21 @@
+ RETURN_FALSE;
+ }
+ }
++#if PHP_VERSION_ID >= 70000
++ if((pwdict = (CRACKLIB_PWDICT *)zend_fetch_resource(Z_RES_P(dictionary), "crack dictionary", le_crack)) == NULL)
++ {
++ RETURN_FALSE;
++ }
++ if (NULL == dictionary) {
++ zend_list_close(CRACKG(default_dict));
++ CRACKG(default_dict) = NULL;
++ }
++ else {
++ zend_list_close(Z_RES_P(dictionary));
++ }
++#else
+ ZEND_FETCH_RESOURCE(pwdict, CRACKLIB_PWDICT *, &dictionary, id, "crack dictionary", le_crack);
+-
++
+ if (NULL == dictionary) {
+ zend_list_delete(CRACKG(default_dict));
+ CRACKG(default_dict) = -1;
+@@ -303,7 +386,7 @@
+ else {
+ zend_list_delete(Z_RESVAL_P(dictionary));
+ }
+-
++#endif
+ RETURN_TRUE;
+ }
+ /* }}} */
+@@ -314,14 +397,18 @@
+ {
+ zval *dictionary = NULL;
+ char *password = NULL;
+- int password_len;
++ size_t password_len;
+ char *username = NULL;
+- int username_len;
++ size_t username_len;
+ char *gecos = NULL;
+- int gecos_len;
++ size_t gecos_len;
+ char *message;
+ CRACKLIB_PWDICT *pwdict;
++#if PHP_VERSION_ID >= 70000
++ zend_resource *crack_res;
++#else
+ int id = -1;
++#endif
+
+ if (NULL != CRACKG(last_message)) {
+ efree(CRACKG(last_message));
+@@ -335,6 +422,21 @@
+ }
+
+ if (NULL == dictionary) {
++#if PHP_VERSION_ID >= 70000
++ crack_res = php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
++ if (crack_res == NULL || crack_res->ptr == NULL) {
++ php_error(E_WARNING, "Could not open default crack dicionary");
++ RETURN_FALSE;
++ }
++
++ }
++ else {
++ if((pwdict = (CRACKLIB_PWDICT *)zend_fetch_resource(Z_RES_P(dictionary), "crack dictionary", le_crack)) == NULL) {
++ php_error(E_WARNING, "Could not open crack dicionary resource");
++ RETURN_FALSE;
++ }
++ }
++#else
+ id = php_crack_get_default_dict(INTERNAL_FUNCTION_PARAM_PASSTHRU);
+ if (id == -1) {
+ #if ZEND_MODULE_API_NO >= 20021010
+@@ -346,6 +448,7 @@
+ }
+ }
+ ZEND_FETCH_RESOURCE(pwdict, CRACKLIB_PWDICT *, &dictionary, id, "crack dictionary", le_crack);
++#endif
+
+ message = cracklib_fascist_look_ex(pwdict, password, username, gecos);
+
+@@ -377,7 +480,11 @@
+ RETURN_FALSE;
+ }
+
++#if PHP_VERSION_ID >= 70000
++ RETURN_STRING(CRACKG(last_message));
++#else
+ RETURN_STRING(CRACKG(last_message), 1);
++#endif
+ }
+ /* }}} */
+
+--- a/php_crack.h 2005-09-21 05:00:06.000000000 -0400
++++ b/php_crack.h 2016-12-19 16:51:22.449321851 -0500
+@@ -52,7 +52,11 @@
+ ZEND_BEGIN_MODULE_GLOBALS(crack)
+ char *default_dictionary;
+ char *last_message;
++#if PHP_VERSION_ID >= 70000
++ zend_resource *default_dict;
++#else
+ int default_dict;
++#endif
+ ZEND_END_MODULE_GLOBALS(crack)
+
+ #ifdef ZTS
diff --git a/dev-php/pecl-crack/files/fix-pecl-bug-5765.patch b/dev-php/pecl-crack/files/fix-pecl-bug-5765.patch
new file mode 100644
index 000000000000..c180d5310b1b
--- /dev/null
+++ b/dev-php/pecl-crack/files/fix-pecl-bug-5765.patch
@@ -0,0 +1,11 @@
+--- crack-0.4/libcrack/src/cracklib.h 2005-09-21 11:00:06.000000000 +0200
++++ crack-0.4-new/libcrack/src/cracklib.h 2006-10-08 20:44:00.618783250 +0200
+@@ -46,7 +46,7 @@
+
+ typedef unsigned char int8;
+ typedef unsigned short int int16;
+-typedef unsigned long int int32;
++typedef unsigned int int32;
+
+ #ifndef NUMWORDS
+ # define NUMWORDS 16
diff --git a/dev-php/pecl-crack/files/fix-php-5-4-support.patch b/dev-php/pecl-crack/files/fix-php-5-4-support.patch
new file mode 100644
index 000000000000..7fddadfabbbd
--- /dev/null
+++ b/dev-php/pecl-crack/files/fix-php-5-4-support.patch
@@ -0,0 +1,30 @@
+Gentoo bug: 423869
+Thanks to hanno
+
+--- a/crack.c 2008/07/17 10:02:47 262854
++++ b/crack.c 2012/06/07 16:13:34 326013
+@@ -38,7 +38,7 @@
+
+ /* {{{ crack_functions[]
+ */
+-function_entry crack_functions[] = {
++zend_function_entry crack_functions[] = {
+ PHP_FE(crack_opendict, NULL)
+ PHP_FE(crack_closedict, NULL)
+ PHP_FE(crack_check, NULL)
+@@ -94,6 +94,7 @@
+ int filename_len;
+ int result = SUCCESS;
+
++#if PHP_VERSION_ID < 50400
+ if (PG(safe_mode)) {
+ filename_len = strlen(path) + 10;
+ filename = (char *) emalloc(filename_len);
+@@ -125,6 +126,7 @@
+ return FAILURE;
+ }
+ }
++#endif
+
+ if (php_check_open_basedir(path TSRMLS_CC)) {
+ return FAILURE;
diff --git a/dev-php/pecl-crack/metadata.xml b/dev-php/pecl-crack/metadata.xml
new file mode 100644
index 000000000000..b86acf66c756
--- /dev/null
+++ b/dev-php/pecl-crack/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>php-bugs@gentoo.org</email>
+ <name>PHP</name>
+ </maintainer>
+</pkgmetadata>
diff --git a/dev-php/pecl-crack/pecl-crack-0.4-r4.ebuild b/dev-php/pecl-crack/pecl-crack-0.4-r4.ebuild
new file mode 100644
index 000000000000..df78d006ef24
--- /dev/null
+++ b/dev-php/pecl-crack/pecl-crack-0.4-r4.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+PHP_EXT_NAME="crack"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+DOCS="EXPERIMENTAL"
+
+USE_PHP="php5-6 php5-5 php5-4"
+
+inherit php-ext-pecl-r2 epatch
+
+KEYWORDS="amd64 ppc ppc64 x86"
+
+DESCRIPTION="PHP interface to the cracklib libraries"
+LICENSE="PHP-3 CRACKLIB"
+SLOT="0"
+IUSE=""
+
+src_prepare() {
+ local slot
+ for slot in $(php_get_slots) ; do
+ cd "${WORKDIR}/${slot}"
+ epatch "${FILESDIR}/fix-php-5-4-support.patch"
+ # Patch for http://pecl.php.net/bugs/bug.php?id=5765
+ epatch "${FILESDIR}/fix-pecl-bug-5765.patch"
+ done
+ php-ext-source-r2_src_prepare
+}
diff --git a/dev-php/pecl-crack/pecl-crack-0.4-r5.ebuild b/dev-php/pecl-crack/pecl-crack-0.4-r5.ebuild
new file mode 100644
index 000000000000..271e073679d2
--- /dev/null
+++ b/dev-php/pecl-crack/pecl-crack-0.4-r5.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PHP_EXT_NAME="crack"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_EXTRA_ECONF=""
+DOCS=( EXPERIMENTAL )
+
+USE_PHP="php5-6"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+
+DESCRIPTION="PHP interface to the cracklib libraries"
+LICENSE="PHP-3 CRACKLIB"
+SLOT="0"
+IUSE=""
+# Patch for http://pecl.php.net/bugs/bug.php?id=5765
+PATCHES=( "${FILESDIR}/fix-php-5-4-support.patch"
+"${FILESDIR}/fix-pecl-bug-5765.patch" )
diff --git a/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild b/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild
new file mode 100644
index 000000000000..f7a9d30a87f6
--- /dev/null
+++ b/dev-php/pecl-crack/pecl-crack-0.4-r6.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PHP_EXT_NAME="crack"
+PHP_EXT_INI="yes"
+PHP_EXT_ZENDEXT="no"
+PHP_EXT_EXTRA_ECONF=""
+DOCS=( EXPERIMENTAL )
+
+USE_PHP="php5-6 php7-0 php7-1"
+
+inherit php-ext-pecl-r3
+
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+
+DESCRIPTION="PHP interface to the cracklib libraries"
+LICENSE="PHP-3 CRACKLIB"
+SLOT="0"
+IUSE=""
+# Patch for http://pecl.php.net/bugs/bug.php?id=5765
+PATCHES=( "${FILESDIR}/fix-php-5-4-support.patch"
+"${FILESDIR}/fix-pecl-bug-5765.patch"
+"${FILESDIR}/${PV}-php7.patch"
+)