Re: Proposal: Reduce *-devel packages dependencies on other unneeded *-devel packages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/12/2018 12:32 AM, Stephen Gallagher wrote:

On Sun, Aug 12, 2018 at 4:39 AM Robert Marcano <robert@xxxxxxxxxxxxxxxxx <mailto:robert@xxxxxxxxxxxxxxxxx>> wrote:

    On Sat, Aug 11, 2018 at 8:07 PM Rex Dieter <rdieter@xxxxxxxxxxxx
    <mailto:rdieter@xxxxxxxxxxxx>> wrote:

        Robert Marcano wrote:

         > For example, someone developing against krb5-devel for a
        GSSAPI client,
         > probably doesn't need openssl-devel installed, that they are
        linking
         > against Kerberos doesn't means they use the same crypto library
         > directly, they could use nss for example.

        I think you're most likely going to need to deal with this on a
        case-by-case
        basis.  In this specific example, find out for sure if "probably
        doesn't
        need openssl-devel" is entirely accurate or not, and take
        appropriate
        measures.


    Not sure a case-by-case basis will always work, for example I force
    removed compat-openssl10-devel (rpm - e compat-openssl10-devel
    --nodeps) that is pulled by nodejs-devel, and I am able to link
    against NodeJS libraries, because the modules I need to build
    doesn't use OpenSSL. So compat-openssl10-devel should not be a hard
    dependency for nodejs-devel. Sadly the package maintainer think this
    is fine [1].

    A small packaging guideline change about reducing *-devel hard
    dependencies when they aren't  always required could help.

    [1] https://bugzilla.redhat.com/show_bug.cgi?id=1613852


The problem is that if you build Node.js with OpenSSL 1.0 and then you build a native NPM module with OpenSSL 1.1, you’re going to have a bad day trying to run it. I’m pretty sure you’re going to have a symbol conflict at runtime that will be hard to identify. (And will lead to me getting BZs about it).

Don't take it wrong, I understand the decision to go back to OpenSSL 1.0, but at that time there was no concern of people already having modules linked against 1.1 and suddenly 1.0 was loaded on NodeJS with an update. (Note I personally build my node modules inside a bubblewrapped process with no network so I can avoid those prebuilt binaries npm packages tend to download, they are annoying) but that is off-topic to this discussion

My problem with the dependency is that is is hard dependency with a compat-*-devel package. After I forcefully removed compat-openssl10-devel I could build non OpenSSL modules without problem.

# ldd ./node-sass/build/Release/obj.target/binding.node
sass/build/Release/obj.target/binding.node'
	linux-vdso.so.1 (0x00007ffd73af4000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fadc0303000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fadbff6f000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fadbfd57000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fadbfb38000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fadbf779000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fadc0b5d000)


That said, maybe this can be solved in a different way (and one that could handle switching OpenSSL versions within a release if needed). We might provide a macro in the nodejs-devel package (not nodejs-packaging) that records which OpenSSL we compiled against and then put in the guidelines that native NPMs that need OpenSSL must use that macro for BuildRequires.

Thanks for thinking about it, but think about outside Fedsora rpm building processes. I build my code (a mix of Java/C/Rust/JavaScript) on a builder with preloaded dependencies, to make this work (without forcefully removing dependencies) I will need to install nodejs-devel, build the node modules, then remove nodejs-devel and reinstall openssl-devel to build native code that links to OpenSSL.

The problem here is that compat-openssl10-devel conflicts with openssl-devel, that I think this is intentional. What about a Recommends instead of Requires, Fedora RPM builds do a clean install of dependencies, so they will pull compat-openssl10-devel, but let developers at their machines choose at their own expense, to remove it without --nodeps hacks.

And thinking about it, a lot *-devel packages interdependencies should be Recommends and not Requires. It would be great if running

  dnf --setopt=install_weak_deps=False install <package-devel>

worked only pulling strictly required dependencies.


I’m about to head to the airport after Flock, but I’ll think about this a bit in-transit and see what I come up with.

My workaround is --nodeps remove compat-openssl10-devel, so there is no rush. But people that have openssl-devel and nodejs-devel installed and do only graphical updates, will not notice their updates to nodejs are broken.

Enjoy Flock


    <https://bugzilla.redhat.com/show_bug.cgi?id=1613852>



_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/message/5WZQVHPHCOJEHJYI7FK7O7YEEFC2RBP7/

_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx/message/3XE6B6PID4NRXOXWFUMNQ2CI4THRXNV6/




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux