Patchwork openssl: Move libcrypto to base_libdir

login
register
mail settings
Submitter Andrei Gherzan
Date Feb. 9, 2012, 6:30 p.m.
Message ID <1328812244-32105-1-git-send-email-andrei@gherzan.ro>
Download mbox | patch
Permalink /patch/21059/
State New
Headers show

Comments

Andrei Gherzan - Feb. 9, 2012, 6:30 p.m.
This fix is for dhclient. It needs libcrypto at runtime and if
libcrypto is in libdir, it's path can be inaccessible on systems
where /usr is on nfs for example or dhclient is needed before
/usr is mounted.

Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
---
 meta/recipes-connectivity/openssl/openssl.inc      |    8 +++++++-
 .../recipes-connectivity/openssl/openssl_1.0.0g.bb |    2 +-
 2 files changed, 8 insertions(+), 2 deletions(-)
Phil Blundell - Feb. 9, 2012, 6:33 p.m.
On Thu, 2012-02-09 at 20:30 +0200, Andrei Gherzan wrote:
> +	# Moving libcrypto to /usr
> +	mkdir -p ${D}/${base_libdir}/
> +	mv ${D}${libdir}/libcrypto* ${D}${base_libdir}/

That looks like it will fail if ${libdir} and ${base_libdir} are the
same.

> +	sed -i s/usr// ${D}/${libdir}/pkgconfig/libcrypto.pc

Also, this seems like it might fail if ${prefix} was set to something
other than "/usr".  

Do you really want to put the development files in ${base_libdir}
anyway?  I would have thought that even the most enthusiastic proponents
of a standalone / would not expect to be able to use the compiler
without /usr mounted.

p.
Saul Wold - Feb. 9, 2012, 6:34 p.m.
On 02/09/2012 10:30 AM, Andrei Gherzan wrote:
> This fix is for dhclient. It needs libcrypto at runtime and if
> libcrypto is in libdir, it's path can be inaccessible on systems
> where /usr is on nfs for example or dhclient is needed before
> /usr is mounted.
>
> Signed-off-by: Andrei Gherzan<andrei@gherzan.ro>
> ---
>   meta/recipes-connectivity/openssl/openssl.inc      |    8 +++++++-
>   .../recipes-connectivity/openssl/openssl_1.0.0g.bb |    2 +-
>   2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-connectivity/openssl/openssl.inc b/meta/recipes-connectivity/openssl/openssl.inc
> index 771f146..76a28ff 100644
> --- a/meta/recipes-connectivity/openssl/openssl.inc
> +++ b/meta/recipes-connectivity/openssl/openssl.inc
> @@ -36,10 +36,11 @@ export AS = "${CC} -c"
>   inherit pkgconfig siteinfo
>
>   PACKAGES =+ "libcrypto libssl ${PN}-misc"
> -FILES_libcrypto = "${libdir}/libcrypto.so.*"
> +FILES_libcrypto = "${base_libdir}/libcrypto${SOLIBS}"
>   FILES_libssl = "${libdir}/libssl.so.*"
>   FILES_${PN} =+ " ${libdir}/ssl/*"
>   FILES_${PN}-misc = "${libdir}/ssl/misc ${libdir}/ssl/openssl.cnf"
> +FILES_${PN}-dev += "${base_libdir}/libcrypto${SOLIBSDEV}"
>
>   do_configure_prepend_darwin () {
>   	sed -i -e '/version-script=openssl\.ld/d' Configure
> @@ -132,6 +133,11 @@ do_install () {
>   	oe_libinstall -so libcrypto ${D}${libdir}
>   	oe_libinstall -so libssl ${D}${libdir}
>
> +	# Moving libcrypto to /usr
> +	mkdir -p ${D}/${base_libdir}/
> +	mv ${D}${libdir}/libcrypto* ${D}${base_libdir}/
> +	sed -i s/usr// ${D}/${libdir}/pkgconfig/libcrypto.pc
> +

You still did not fix the case of libdir == base_libdir as Phil pointed out.

Sau!

>   	install -d ${D}${includedir}
>   	cp --dereference -R include/openssl ${D}${includedir}
>   	sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
> diff --git a/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb b/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
> index 80dfcb3..8ffe931 100644
> --- a/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
> +++ b/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
> @@ -6,7 +6,7 @@ DEPENDS += "ocf-linux"
>
>   CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
>
> -PR = "${INC_PR}.0"
> +PR = "${INC_PR}.1"
>
>   LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"
>
Khem Raj - Feb. 9, 2012, 7:54 p.m.
On Thu, Feb 9, 2012 at 10:33 AM, Phil Blundell <philb@gnu.org> wrote:
>
> Do you really want to put the development files in ${base_libdir}
> anyway?  I would have thought that even the most enthusiastic proponents
> of a standalone / would not expect to be able to use the compiler
> without /usr mounted.

eventually I think we will end up with everything being in ${base_libdir} :)
or we have to make sure that stripped out debug files and standard dev
libs and headers
go into /usr

this should be made an option before we go on making these changes IMOs
I like stuff in /usr and I don't so much care about / and /usr being
on different partitions
Phil Blundell - Feb. 10, 2012, 1:37 p.m.
On Thu, 2012-02-09 at 11:54 -0800, Khem Raj wrote:
> eventually I think we will end up with everything being in ${base_libdir} :)
> or we have to make sure that stripped out debug files and standard dev
> libs and headers
> go into /usr

The .debug data does always go into /usr/lib/debug (even on micro).
That path is hardcoded in package.bbclass or some such place and doesn't
depend on ${prefix} or ${libdir}.

> this should be made an option before we go on making these changes IMOs
> I like stuff in /usr and I don't so much care about / and /usr being
> on different partitions

Yes, I agree.  As I mentioned the other day, I think having a
DISTRO_FEATURE for "/ usable without /usr mounted" would be a fine idea
and then all this sort of thing can be made conditional on that.

In this particular case I think there's also an underlying issue that,
for most people, having dhcp linked against openssl is probably just not
nececessary.  I assume this dependency is because of secure ddns or some
such thing, which is a fine feature but, I suspect, not one that the
majority of OE distros are actually using.

p.

Patch

diff --git a/meta/recipes-connectivity/openssl/openssl.inc b/meta/recipes-connectivity/openssl/openssl.inc
index 771f146..76a28ff 100644
--- a/meta/recipes-connectivity/openssl/openssl.inc
+++ b/meta/recipes-connectivity/openssl/openssl.inc
@@ -36,10 +36,11 @@  export AS = "${CC} -c"
 inherit pkgconfig siteinfo
 
 PACKAGES =+ "libcrypto libssl ${PN}-misc"
-FILES_libcrypto = "${libdir}/libcrypto.so.*"
+FILES_libcrypto = "${base_libdir}/libcrypto${SOLIBS}"
 FILES_libssl = "${libdir}/libssl.so.*"
 FILES_${PN} =+ " ${libdir}/ssl/*"
 FILES_${PN}-misc = "${libdir}/ssl/misc ${libdir}/ssl/openssl.cnf"
+FILES_${PN}-dev += "${base_libdir}/libcrypto${SOLIBSDEV}"
 
 do_configure_prepend_darwin () {
 	sed -i -e '/version-script=openssl\.ld/d' Configure
@@ -132,6 +133,11 @@  do_install () {
 	oe_libinstall -so libcrypto ${D}${libdir}
 	oe_libinstall -so libssl ${D}${libdir}
 
+	# Moving libcrypto to /usr
+	mkdir -p ${D}/${base_libdir}/
+	mv ${D}${libdir}/libcrypto* ${D}${base_libdir}/
+	sed -i s/usr// ${D}/${libdir}/pkgconfig/libcrypto.pc
+
 	install -d ${D}${includedir}
 	cp --dereference -R include/openssl ${D}${includedir}
 	sed -i -e '1s,.*,#!${bindir}/env perl,' ${D}${libdir}/ssl/misc/CA.pl
diff --git a/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb b/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
index 80dfcb3..8ffe931 100644
--- a/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
+++ b/meta/recipes-connectivity/openssl/openssl_1.0.0g.bb
@@ -6,7 +6,7 @@  DEPENDS += "ocf-linux"
 
 CFLAG += "-DHAVE_CRYPTODEV -DUSE_CRYPTODEV_DIGESTS"
 
-PR = "${INC_PR}.0"
+PR = "${INC_PR}.1"
 
 LIC_FILES_CHKSUM = "file://LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8"