Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev-lang/erlang: introduce subslots #13780

Closed
wants to merge 6 commits into from

Conversation

arkamar
Copy link
Member

@arkamar arkamar commented Nov 28, 2019

This PR introduces subslots in erlang and subscribes few packages to it.

I believe we should support subslots in erlang in similar fashion like dev-lang/go for example. I have chosen 0/${PV} because time to time it happens that patch version fixes some bugs in compiler and therefore we want to recompile all erlang dependent packages.

Well, I am not sure if this is a correct way how to introduce subslots to any package, but I did not find any satisfactory guidelines. Please, tell me what do you think.

@gentoo-bot
Copy link

Pull Request assignment

Submitter: @arkamar
Areas affected: ebuilds
Packages affected: dev-erlang/ezlib, dev-erlang/fast_tls, dev-erlang/p1_utils, dev-erlang/proper, dev-lang/erlang...

dev-erlang/ezlib: ejabberd
dev-erlang/fast_tls: ejabberd
dev-erlang/p1_utils: ejabberd
dev-erlang/proper: ejabberd
dev-lang/erlang: @trofi
dev-util/rebar: @gentoo/proxy-maint (maintainer needed)

At least one of the listed packages is maintained entirely by non-GitHub developers!

Linked bugs

Bugs linked: 661080, 692294, 700260, 661126

Missing Bugzilla accounts

WARNING: The following maintainers do not match any Bugzilla accounts:

Please either fix the e-mail addresses in metadata.xml or create a Bugzilla account, and request reassignment afterwards.


In order to force reassignment and/or bug reference scan, please append [please reassign] to the pull request title.

Docs: Code of ConductCopyright policy (expl.) ● DevmanualGitHub PRsProxy-maint guide

@gentoo-bot gentoo-bot added maintainer-needed There is at least one affected package with no maintainer. Review it if you can. need assignment It was impossible to assign the PR correctly. Please assign it manually. bug linked Bug/Closes found in footer, and cross-linked with the PR. invalid email One or more of the maintainers don't have corresponding Bugzilla accounts. labels Nov 28, 2019
@trofi
Copy link
Contributor

trofi commented Nov 30, 2019

The changes look mostly ok. The motivation behind subslot for erlang should be stronger than fixing a bug. Otherwise it would warrant adding a subslot to every gentoo package.

I suggest stating the subslot motivation right in the ebuild in comment.

golang uses subslots because it does not maintain ABI compatibility for built go packages and effectively performs static linking against go compiler. To apply code changes to standalone packages made in go standard library you need to rebuild the package to recompile/relink newer standard library.

AFAIU erlang does not perform such a code duplication and just uses bytecode (and maybe something else with USE=hipe?). The valid motivation would be something like (please check which one is true):

  1. "erlang does not maintain bytecode stability across major releases (or even minor releases?)"
  2. "erlang inlines bytecode of standard library when builds dependencies"
  3. something else

I suspect some form of [1.] is taking place. Can you find it out?

@arkamar
Copy link
Member Author

arkamar commented Dec 3, 2019

Yes, I will look at it for sure. I just wanted to let you know that you can count with it.

@arkamar
Copy link
Member Author

arkamar commented Dec 5, 2019

I found Support, Compatibility, Deprecations, and Removal document, where section 6.3 describes what we need. I believe those two points are most important:

  1. Compiled BEAM Code, NIF Libraries and Drivers can be loaded on at least two subsequent releases. Loading on previous releases is not supported.
  2. Compiled HiPE Code can be loaded on the exact same build of ERTS that was used when compiling the code.

I believe we should use SLOT=0/$(ver_cut 1) at least, which will make both upgrades and downgrades safe for reasonable price, Ad 1.

The HiPE seems to be safe to use only with SLOT=0/${PV}, Ad 2. I am not aware if ebuild can set two different SLOTs base on use flags, which would be interesting use, however, common sense tells me no :)

Well, some projects can start with User-Defined Boot Script and those relies on exact application versions in OTP, but it seems that we do not have any package with this in ::gentoo, I checked all in dev-erlang category.

What do you think?

@trofi
Copy link
Contributor

trofi commented Dec 6, 2019

I found Support, Compatibility, Deprecations, and Removal document, where section 6.3 describes what we need.
...
I believe we should use SLOT=0/$(ver_cut 1) at least, which will make both upgrades and downgrades safe for reasonable price, Ad 1.
The HiPE seems to be safe to use only with SLOT=0/${PV}, Ad 2. I am not aware if ebuild can set two different SLOTs base on use flags, which would be interesting use, however, common sense tells me no :)

Gentoo has no way to set programmatic SLOTs. It's a Gentoo's deficiency. Let's pick the strictest constraint and settle on SLOT=0/${PV} and add the same rationale right into the ebuild.

Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
Bug: https://bugs.gentoo.org/661080
Bug: https://bugs.gentoo.org/661126
Bug: https://bugs.gentoo.org/692294
Bug: https://bugs.gentoo.org/700260
Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
Bug: https://bugs.gentoo.org/661080
Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
Bug: https://bugs.gentoo.org/661126
Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
Bug: https://bugs.gentoo.org/661126
Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
Closes: https://bugs.gentoo.org/700260
Package-Manager: Portage-2.3.76, Repoman-2.3.16
Signed-off-by: Petr Vaněk <arkamar@atlas.cz>
@arkamar
Copy link
Member Author

arkamar commented Dec 6, 2019

Done and rebased on top of current master.

@gentoo-repo-qa-bot
Copy link
Collaborator

Pull request CI report

Report generated at: 2019-12-06 15:18 UTC
Newest commit scanned: 0bf94fa
Status: ✅ good

Issues already there before the PR (double-check them):
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/consul
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/consul-template
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/diradm
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/graylog
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/puppet
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/puppet-agent
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/puppetdb
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/puppetserver
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-admin/vault
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-antivirus/clamav
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-antivirus/clamav-unofficial-sigs
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/docker
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/lxd
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/reg
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/virtualbox-additions
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/virtualbox-guest-additions
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-emulation/virtualbox-modules
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-eselect/eselect-opencl
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-metrics/blackbox_exporter
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-metrics/collectd
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#app-metrics/mongodb_exporter
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-db/etcd
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-db/mariadb
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-db/pgbouncer
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-db/postgresql
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-java/icedtea
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-lang/php
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-libs/leatherman
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-libs/libuv
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-perl/Archive-Tar-Stream
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-perl/MogileFS-Server
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-php/pecl-apcu_bc
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-php/pecl-http
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-php/pecl-redis
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-python/networkx
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-python/subprocess32
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-util/cmt
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-util/coccinelle
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-util/jenkins-bin
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#dev-vcs/python-gitlab
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#mail-filter/rspamd
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#media-gfx/evoluspencil
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#media-gfx/iscan
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#media-libs/bcg729
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-analyzer/munin
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-analyzer/nagios-core
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-analyzer/wireshark
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-dns/avahi
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-dns/bind
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-dns/pdns
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-dns/unbound
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-libs/nodejs
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/apt-cacher-ng
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/dropbear
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/gerbera
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/kea
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/memcached
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/rabbitmq-server
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/scponly
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-misc/stunnel
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-proxy/haproxy
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-proxy/squid
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-vpn/tor
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#net-wireless/kismet
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sci-libs/tensorflow
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sci-mathematics/rstudio
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-apps/guix
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-apps/policycoreutils
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-cluster/galera
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-cluster/kube-apiserver
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-cluster/kube-controller-manager
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-cluster/kube-scheduler
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-cluster/nova
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-fs/zfs
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#sys-process/cronie
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#www-apps/grafana-bin
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#www-apps/netbox
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#www-apps/zeppelin-bin
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#www-servers/nginx
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#x11-misc/picom
https://qa-reports.gentoo.org/output/gentoo-ci/7777aca/output.html#x11-wm/xpra

@gentoo-bot gentoo-bot closed this in b237bda Dec 7, 2019
@arkamar arkamar deleted the erlang-subslot branch December 7, 2019 14:01
@arkamar
Copy link
Member Author

arkamar commented Dec 7, 2019

thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug linked Bug/Closes found in footer, and cross-linked with the PR. invalid email One or more of the maintainers don't have corresponding Bugzilla accounts. maintainer-needed There is at least one affected package with no maintainer. Review it if you can. need assignment It was impossible to assign the PR correctly. Please assign it manually.
Projects
None yet
4 participants