diff options
-rw-r--r-- | main/ruby/APKBUILD | 23 | ||||
-rw-r--r-- | main/ruby/ruby-openssl-1.0.0.patch | 167 |
2 files changed, 185 insertions, 5 deletions
diff --git a/main/ruby/APKBUILD b/main/ruby/APKBUILD index a24a4cbc93..87063abdaf 100644 --- a/main/ruby/APKBUILD +++ b/main/ruby/APKBUILD @@ -3,19 +3,27 @@ pkgname=ruby pkgver=1.8.7_p174 _pkgver=1.8.7-p174 -pkgrel=4 +pkgrel=6 pkgdesc="An object-oriented language for quick and easy programming" url="http://www.ruby-lang.org/en/" license="Ruby" depends= makedepends="zlib-dev openssl-dev libiconv-dev gdbm-dev db-dev readline-dev" subpackages="$pkgname-doc $pkgname-dev" -source="ftp://ftp.ruby-lang.org/pub/ruby/1.8/${pkgname}-${_pkgver}.tar.bz2" +source="ftp://ftp.ruby-lang.org/pub/ruby/1.8/${pkgname}-${_pkgver}.tar.bz2 + ruby-openssl-1.0.0.patch" # # maybe its a good idea to split dep libs to seperate pkg's. # + +_builddir="$srcdir/$pkgname-${_pkgver}" +prepare() { + cd "$_builddir" + patch -p0 -i "$srcdir"/ruby-openssl-1.0.0.patch +} + build() { - cd "$srcdir/$pkgname-${_pkgver}" + cd "$_builddir" # -fomit-frame-pointer makes ruby segfault, see gentoo bug #150413 # In many places aliasing rules are broken; play it safe @@ -24,7 +32,7 @@ build() { # turn off distcc/ccache # http://bugs.alpinelinux.org/issues/show/1 - export CC=cc + export CC=gcc ./configure --build=${CHOST:-i486-alpine-linux-uclibc} \ --prefix=/usr \ @@ -36,10 +44,15 @@ build() { --with-extra-site-search-path='/usr/lib/site_ruby/$(ruby_ver)/i686-linux' \ --enable-shared make || return 1 +} + +package() { + cd "$_builddir" make DESTDIR="$pkgdir" install install -Dm644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}"/COPYING || return 1 } -md5sums="88c45aaf627b4404e5e4273cb03ba2ee ruby-1.8.7-p174.tar.bz2" +md5sums="88c45aaf627b4404e5e4273cb03ba2ee ruby-1.8.7-p174.tar.bz2 +3361f559a6b338b792ff4946a41708dd ruby-openssl-1.0.0.patch" diff --git a/main/ruby/ruby-openssl-1.0.0.patch b/main/ruby/ruby-openssl-1.0.0.patch new file mode 100644 index 0000000000..1ebded911e --- /dev/null +++ b/main/ruby/ruby-openssl-1.0.0.patch @@ -0,0 +1,167 @@ +diff -up ext/openssl/ossl.c.ossl10 ext/openssl/ossl.c +--- ext/openssl/ossl.c.ossl10 2007-02-13 00:01:19.000000000 +0100 ++++ ext/openssl/ossl.c 2009-08-26 12:29:41.000000000 +0200 +@@ -92,7 +92,7 @@ ossl_x509_ary2sk(VALUE ary) + + #define OSSL_IMPL_SK2ARY(name, type) \ + VALUE \ +-ossl_##name##_sk2ary(STACK *sk) \ ++ossl_##name##_sk2ary(STACK_OF(type) *sk) \ + { \ + type *t; \ + int i, num; \ +@@ -102,7 +102,7 @@ ossl_##name##_sk2ary(STACK *sk) \ + OSSL_Debug("empty sk!"); \ + return Qnil; \ + } \ +- num = sk_num(sk); \ ++ num = sk_##type##_num(sk); \ + if (num < 0) { \ + OSSL_Debug("items in sk < -1???"); \ + return rb_ary_new(); \ +@@ -110,7 +110,7 @@ ossl_##name##_sk2ary(STACK *sk) \ + ary = rb_ary_new2(num); \ + \ + for (i=0; i<num; i++) { \ +- t = (type *)sk_value(sk, i); \ ++ t = sk_##type##_value(sk, i); \ + rb_ary_push(ary, ossl_##name##_new(t)); \ + } \ + return ary; \ +diff -up ext/openssl/ossl_pkcs7.c.ossl10 ext/openssl/ossl_pkcs7.c +--- ext/openssl/ossl_pkcs7.c.ossl10 2007-02-13 00:01:19.000000000 +0100 ++++ ext/openssl/ossl_pkcs7.c 2009-08-26 12:53:05.000000000 +0200 +@@ -543,12 +543,11 @@ ossl_pkcs7_add_certificate(VALUE self, V + return self; + } + +-static STACK * +-pkcs7_get_certs_or_crls(VALUE self, int want_certs) ++static STACK_OF(X509) * ++pkcs7_get_certs(VALUE self) + { + PKCS7 *pkcs7; + STACK_OF(X509) *certs; +- STACK_OF(X509_CRL) *crls; + int i; + + GetPKCS7(self, pkcs7); +@@ -556,17 +555,38 @@ pkcs7_get_certs_or_crls(VALUE self, int + switch(i){ + case NID_pkcs7_signed: + certs = pkcs7->d.sign->cert; +- crls = pkcs7->d.sign->crl; + break; + case NID_pkcs7_signedAndEnveloped: + certs = pkcs7->d.signed_and_enveloped->cert; ++ break; ++ default: ++ certs = NULL; ++ } ++ ++ return certs; ++} ++ ++static STACK_OF(X509_CRL) * ++pkcs7_get_crls(VALUE self) ++{ ++ PKCS7 *pkcs7; ++ STACK_OF(X509_CRL) *crls; ++ int i; ++ ++ GetPKCS7(self, pkcs7); ++ i = OBJ_obj2nid(pkcs7->type); ++ switch(i){ ++ case NID_pkcs7_signed: ++ crls = pkcs7->d.sign->crl; ++ break; ++ case NID_pkcs7_signedAndEnveloped: + crls = pkcs7->d.signed_and_enveloped->crl; + break; + default: +- certs = crls = NULL; ++ crls = NULL; + } + +- return want_certs ? certs : crls; ++ return crls; + } + + static VALUE +@@ -581,7 +601,7 @@ ossl_pkcs7_set_certificates(VALUE self, + STACK_OF(X509) *certs; + X509 *cert; + +- certs = pkcs7_get_certs_or_crls(self, 1); ++ certs = pkcs7_get_certs(self); + while((cert = sk_X509_pop(certs))) X509_free(cert); + rb_iterate(rb_each, ary, ossl_pkcs7_set_certs_i, self); + +@@ -591,7 +611,7 @@ ossl_pkcs7_set_certificates(VALUE self, + static VALUE + ossl_pkcs7_get_certificates(VALUE self) + { +- return ossl_x509_sk2ary(pkcs7_get_certs_or_crls(self, 1)); ++ return ossl_x509_sk2ary(pkcs7_get_certs(self)); + } + + static VALUE +@@ -621,7 +641,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar + STACK_OF(X509_CRL) *crls; + X509_CRL *crl; + +- crls = pkcs7_get_certs_or_crls(self, 0); ++ crls = pkcs7_get_crls(self); + while((crl = sk_X509_CRL_pop(crls))) X509_CRL_free(crl); + rb_iterate(rb_each, ary, ossl_pkcs7_set_crls_i, self); + +@@ -631,7 +651,7 @@ ossl_pkcs7_set_crls(VALUE self, VALUE ar + static VALUE + ossl_pkcs7_get_crls(VALUE self) + { +- return ossl_x509crl_sk2ary(pkcs7_get_certs_or_crls(self, 0)); ++ return ossl_x509crl_sk2ary(pkcs7_get_crls(self)); + } + + static VALUE +diff -up ext/openssl/ossl_ssl.c.ossl10 ext/openssl/ossl_ssl.c +--- ext/openssl/ossl_ssl.c.ossl10 2007-03-12 05:12:32.000000000 +0100 ++++ ext/openssl/ossl_ssl.c 2009-08-26 12:08:48.000000000 +0200 +@@ -89,12 +89,18 @@ static char *ossl_sslctx_attrs[] = { + static char *ossl_ssl_attr_readers[] = { "io", "context", }; + static char *ossl_ssl_attrs[] = { "sync_close", }; + ++#if OPENSSL_VERSION_NUMBER >= 0x10000000L ++#define OSSL_MORE_CONST const ++#define STACK _STACK ++#else ++#define OSSL_MORE_CONST ++#endif + /* + * SSLContext class + */ + struct { + const char *name; +- SSL_METHOD *(*func)(void); ++ OSSL_MORE_CONST SSL_METHOD *(*func)(void); + } ossl_ssl_method_tab[] = { + #define OSSL_SSL_METHOD_ENTRY(name) { #name, name##_method } + OSSL_SSL_METHOD_ENTRY(TLSv1), +@@ -407,7 +413,7 @@ ossl_sslctx_setup(VALUE self) + } + + static VALUE +-ossl_ssl_cipher_to_ary(SSL_CIPHER *cipher) ++ossl_ssl_cipher_to_ary(OSSL_MORE_CONST SSL_CIPHER *cipher) + { + VALUE ary; + int bits, alg_bits; +@@ -805,7 +811,7 @@ static VALUE + ossl_ssl_get_cipher(VALUE self) + { + SSL *ssl; +- SSL_CIPHER *cipher; ++ OSSL_MORE_CONST SSL_CIPHER *cipher; + + Data_Get_Struct(self, SSL, ssl); + if (!ssl) {
\ No newline at end of file |