diff --git a/archivers/py-attic/Makefile b/archivers/py-attic/Makefile index 8705585e8b42..e6f9672559f4 100644 --- a/archivers/py-attic/Makefile +++ b/archivers/py-attic/Makefile @@ -3,7 +3,7 @@ PORTNAME= attic PORTVERSION= 0.16 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= archivers python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} @@ -15,14 +15,15 @@ COMMENT= Deduplicating backup program LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE -BROKEN_FreeBSD_12= does not build with OpenSSL 1.1 -BROKEN_FreeBSD_13= does not build with OpenSSL 1.1 +DEPRECATED= Unsupported by upstream, please migrate to archivers/py-borg. \ + See https://borgbackup.readthedocs.io/en/stable/usage/upgrade.html\#borg-upgrade +EXPIRATION_DATE= 2019-09-01 BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}msgpack>=0.1.10:devel/py-msgpack@${PY_FLAVOR} RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}msgpack>=0.1.10:devel/py-msgpack@${PY_FLAVOR} USES= python:3.3-3.6 ssl -USE_PYTHON= autoplist distutils +USE_PYTHON= autoplist cython distutils PYDISTUTILS_BUILDPATH=${BUILD_WRKSRC}/build/lib.${OPSYS:tl}-${UNAMER}-${ARCH}-${PYTHON_VER} REINPLACE_ARGS= -i '' diff --git a/archivers/py-attic/files/patch-attic_crypto.pyx b/archivers/py-attic/files/patch-attic_crypto.pyx new file mode 100644 index 000000000000..56c7bda86680 --- /dev/null +++ b/archivers/py-attic/files/patch-attic_crypto.pyx @@ -0,0 +1,59 @@ +--- attic/crypto.pyx.orig 2015-04-27 20:15:50 UTC ++++ attic/crypto.pyx +@@ -23,8 +23,9 @@ cdef extern from "openssl/evp.h": + pass + const EVP_MD *EVP_sha256() + const EVP_CIPHER *EVP_aes_256_ctr() +- void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a) +- void EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a) ++ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new() ++ const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *a) ++ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a) + + int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, const unsigned char *iv) +@@ -84,16 +85,16 @@ def get_random_bytes(n): + cdef class AES: + """A thin wrapper around the OpenSSL EVP cipher API + """ +- cdef EVP_CIPHER_CTX ctx ++ cdef EVP_CIPHER_CTX * ctx + + def __cinit__(self, key, iv=None): +- EVP_CIPHER_CTX_init(&self.ctx) +- if not EVP_EncryptInit_ex(&self.ctx, EVP_aes_256_ctr(), NULL, NULL, NULL): ++ self.ctx = EVP_CIPHER_CTX_new(); ++ if not EVP_EncryptInit_ex(self.ctx, EVP_aes_256_ctr(), NULL, NULL, NULL): + raise Exception('EVP_EncryptInit_ex failed') + self.reset(key, iv) + + def __dealloc__(self): +- EVP_CIPHER_CTX_cleanup(&self.ctx) ++ EVP_CIPHER_CTX_free(self.ctx) + + def reset(self, key=None, iv=None): + cdef const unsigned char *key2 = NULL +@@ -102,12 +103,12 @@ cdef class AES: + key2 = key + if iv: + iv2 = iv +- if not EVP_EncryptInit_ex(&self.ctx, NULL, NULL, key2, iv2): ++ if not EVP_EncryptInit_ex(self.ctx, NULL, NULL, key2, iv2): + raise Exception('EVP_EncryptInit_ex failed') + + @property + def iv(self): +- return self.ctx.iv[:16] ++ return EVP_CIPHER_CTX_iv(self.ctx)[:16] + + def encrypt(self, data): + cdef int inl = len(data) +@@ -116,7 +117,7 @@ cdef class AES: + if not out: + raise MemoryError + try: +- if not EVP_EncryptUpdate(&self.ctx, out, &outl, data, inl): ++ if not EVP_EncryptUpdate(self.ctx, out, &outl, data, inl): + raise Exception('EVP_EncryptUpdate failed') + return out[:inl] + finally: