Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 597272 - net-libs/gnutls - please add slot operator on dev-scheme/guile
Summary: net-libs/gnutls - please add slot operator on dev-scheme/guile
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Crypto team [DISABLED]
URL:
Whiteboard:
Keywords: PATCH
Depends on:
Blocks:
 
Reported: 2016-10-16 12:17 UTC by Thomas Deutschmann (RETIRED)
Modified: 2016-10-16 18:34 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Deutschmann (RETIRED) gentoo-dev 2016-10-16 12:17:05 UTC
Due to bug 590810 the invalid slot operator was removed instead of fixed.

(In reply to Pacho Ramos from comment https://bugs.gentoo.org/show_bug.cgi?id=590810#c5)
> the bug is invalid. Also, finally guile-2 went to the same slot as 1.8
> 
> Anyway, feel free to drop :*, the problem is that I don't know if this needs
> to be rebuilt when guile subslot changes (I cannot downgrade again from
> guile-2 to 1.8... if anyone can still update and check... it would be as
> easy as update from guile-1.8 to 2 and see if gnutls[guile] needs to be
> rebuilt by emerge @preserved-rebuild :/

Yes, it has to.

When you build net-libs/gnutls[guile] we will get

/var/tmp/portage/net-libs/gnutls-3.5.5/image/usr/lib64/guile/
└── 2.0
    ├── guile-gnutls-v-2.so -> guile-gnutls-v-2.so.0.0.0
    ├── guile-gnutls-v-2.so.0 -> guile-gnutls-v-2.so.0.0.0
    ├── guile-gnutls-v-2.so.0.0.0

and this lib is linked against guile:

 # lddtree /var/tmp/portage/net-libs/gnutls-3.5.5/image/usr/lib64/guile/2.0/guile-gnutls-v-2.so.0.0.0
guile-gnutls-v-2.so.0.0.0 => /var/tmp/portage/net-libs/gnutls-3.5.5/image/usr/lib64/guile/2.0/guile-gnutls-v-2.so.0.0.0 (interpreter => none)
    libgnutls.so.30 => /usr/lib64/libgnutls.so.30
        libz.so.1 => /lib64/libz.so.1
        libidn.so.11 => /usr/lib64/libidn.so.11
        libtasn1.so.6 => /usr/lib64/libtasn1.so.6
        libnettle.so.6 => /usr/lib64/libnettle.so.6
        libhogweed.so.4 => /usr/lib64/libhogweed.so.4
        libgmp.so.10 => /usr/lib64/libgmp.so.10
    libguile-2.0.so.22 => /usr/lib64/libguile-2.0.so.22
        libgc.so.1 => /usr/lib64/libgc.so.1
            libdl.so.2 => /lib64/libdl.so.2
        libffi.so.6 => /usr/lib64/libffi.so.6
        libunistring.so.2 => /usr/lib64/libunistring.so.2
        libltdl.so.7 => /usr/lib64/libltdl.so.7
        libcrypt.so.1 => /lib64/libcrypt.so.1
        libm.so.6 => /lib64/libm.so.6
        ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2
    libpthread.so.0 => /lib64/libpthread.so.0
    libc.so.6 => /lib64/libc.so.6


So please add back an slot operator on dev-scheme/guile, i.e:

diff --git a/net-libs/gnutls/gnutls-3.5.5.ebuild b/net-libs/gnutls/gnutls-3.5.5.ebuild
index 5e892cd..d841a18 100644
--- a/net-libs/gnutls/gnutls-3.5.5.ebuild
+++ b/net-libs/gnutls/gnutls-3.5.5.ebuild
@@ -23,7 +23,7 @@ RDEPEND=">=dev-libs/libtasn1-4.3[${MULTILIB_USEDEP}]
        >=dev-libs/gmp-5.1.3-r1[${MULTILIB_USEDEP}]
        tools? ( sys-devel/autogen )
        dane? ( >=net-dns/unbound-1.4.20[${MULTILIB_USEDEP}] )
-       guile? ( >=dev-scheme/guile-1.8[networking] )
+       guile? ( >=dev-scheme/guile-1.8:=[networking] )
        nls? ( >=virtual/libintl-0-r1[${MULTILIB_USEDEP}] )
        pkcs11? ( >=app-crypt/p11-kit-0.23.1[${MULTILIB_USEDEP}] )
        zlib? ( >=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}] )
Comment 1 Alon Bar-Lev (RETIRED) gentoo-dev 2016-10-16 12:56:59 UTC
I am not sure how this fixes the problem, it only delays it.
There was a slot gor guile, there is now no slot.

Had one written an ebuild that use guile now, he would not have specified any slot operator.

GnuTLS (and others) should be written as if there was no slot.
Comment 2 Thomas Deutschmann (RETIRED) gentoo-dev 2016-10-16 13:18:31 UTC
The problem is simple:
If you emerge net-libs/gnutls[guile] today, your package manager (emerge) will _not_ record that any action should be taken when depending dev-scheme/guile atom changes.

So when a new dev-scheme/guile version which requires a rebuild becomes available, even that the guile maintainer has increased SUBSLOT of dev-scheme/guile to indicate an ABI breakage, your package manager would be unable to solve the problem for you. Emerge for example would tell you to run manually run `emerge @revdep-rebuild` due to FEATURES=preserve-libs.


This will be solved when you tell your package manager to rebuild when a SLOT/sublot of a depending atom changes. I.e. with my proposed change you will tell your package manager: gnutls requires dev-scheme/guile but when SLOT _or_ SUBSLOT changes, gnutls must be rebuild.

So next time dev-scheme/guile gets bumped (with a changed SLOT/SUBSLOT indication), emerge will automatically trigger the rebuild of net-libs/gnutls for the user (well, only after the user has already gnutls with the subslot operator on dev-scheme/guile recorded in his/her pkg db).


Bug 590810 was about the fact that the subslot operator was invalid. I.e. an asterisk don't say "any" like many people imagine. On the contrary, it implicit tells portage to ignore any changed subslots...
Comment 3 Alon Bar-Lev (RETIRED) gentoo-dev 2016-10-16 13:27:01 UTC
I am probably missing something. Do you suggest that any library dependency should be written with := slot operator? Or is there something special with this case?
Comment 4 Thomas Deutschmann (RETIRED) gentoo-dev 2016-10-16 13:31:51 UTC
Any linked atom which provides a SUBSLOT should be written like that, yes. That's because if that linked atom has an API breakage we have to rebuild our atom and if we "subscribe" to that SUBSLOT the package manager will do that for the user without additional user interaction.
Comment 5 Alon Bar-Lev (RETIRED) gentoo-dev 2016-10-16 15:40:24 UTC
OK, so if like slot subslot is 0, then this applies to all packages, right? Why repoman does not provide a warning like it does provide if there is a slot?
Comment 6 Thomas Deutschmann (RETIRED) gentoo-dev 2016-10-16 15:58:39 UTC
I don't know. Probably because nobody requested such a feature yet. Feel free to file a bug against repoman ;)

But that's out of scope of this request. Can we please get back a working slot operator on guile atom for gnutls?
Comment 7 Alon Bar-Lev (RETIRED) gentoo-dev 2016-10-16 18:34:58 UTC
(In reply to Thomas Deutschmann from comment #6)
> I don't know. Probably because nobody requested such a feature yet. Feel
> free to file a bug against repoman ;)
> 
> But that's out of scope of this request. Can we please get back a working
> slot operator on guile atom for gnutls?

sure, I am just confused.