Update on EPEL-8 Status
Where is EPEL-8? (tl;dr:)
- Getting koji to work smoothly with modules has been hard. A multi-level fix has had to be worked to get it working in staging.
- Needed a way to split out default modules to deal with koji merge options. Grobisplitter was written to do this
- Koji needed further patching to deal with src.rpms with same NVR but different targets (some python2 and python3 come from same src.rpm but were built in different times).
- DNF reposync from RHEL-7 would delete the wrong files if you tried the
- DNF does not know how to reposync modules if it is not the local arch.
- Code Ready Builder is not always in sync with packages in main trees. If you need a -devel and it isn’t in CRB, then you have to wait until it is there to build something.
- As a couple of fixes landed in mergerepo and koji, we are re-evaluating how we do builds in the next stage of building.
- Packages with different names may come with from the same src.rpm. In RHEL-8 many python27 and python36 packages have the same parent src.rpm but were in different build times. Koji’s standard repo comparison mode will choose one or the other.
- Packages may have the same names-version-releases but were built in different module streams (say perl-5.26 and perl-5.24) Koji would then choose a package depending on whatever had the largest src.rpm which meant it could try to build a buildroot with perl-5.24 perl modules but perl-5.26 as the master perl.
ant:1.10:820181213135032:5ea3b708:x86_64 container-tools:rhel8:8000020190416221845:2ffa3d27:x86_64 container-tools:rhel8:820190211172150:20125149:x86_64 freeradius:3.0:8000020190425181943:75ec4169:x86_64 freeradius:3.0:820190131191847:fbe42456:x86_64 gimp:2.8:820181213135540:77fc8825:x86_64 go-toolset:rhel8:820190208025401:b754926a:x86_64 httpd:2.4:8000020190405071959:55190bc5:x86_64 httpd:2.4:820190206142837:9edba152:x86_64 idm:client:820190227213458:49cc9d1b:x86_64 inkscape:0.92.3:820181213140018:77fc8825:x86_64 javapackages-runtime:201801:820181213140046:302ab70f:x86_64 javapackages-tools:201801:820181217165704:dca7b4a4:x86_64 llvm-toolset:rhel8:820190207221833:9edba152:x86_64 mailman:2.1:820181213140247:77fc8825:x86_64 mariadb:10.3:820190206164045:9edba152:x86_64 mariadb:10.3:820190314153642:9edba152:x86_64 maven:3.5:820181213140354:5ea3b708:x86_64 mercurial:4.8:820190108205035:77fc8825:x86_64 merged_repo mysql:8.0:820190104140943:9edba152:x86_64 nginx:1.14:820181214004940:9edba152:x86_64 nodejs:10:820190108092226:9edba152:x86_64 non_modular perl-App-cpanminus:1.7044:820181214184336:e5ce1481:x86_64 perl-DBD-MySQL:4.046:820181214121012:6bc6cad6:x86_64 perl-DBD-Pg:3.7:820181214121102:6fcea174:x86_64 perl-DBD-SQLite:1.58:820181214121133:6bc6cad6:x86_64 perl-DBI:1.641:820190116185335:fbe42456:x86_64 perl-FCGI:0.78:820181214153815:fbe42456:x86_64 perl-YAML:1.24:820181214175558:8652dbeb:x86_64 perl:5.26:820181219174508:9edba152:x86_64 php:7.2:820181215112050:76554e01:x86_64 postgresql:10:820190104140132:9edba152:x86_64 python27:2.7:8000020190410132513:c0efe978:x86_64 python27:2.7:820190212161047:43711c95:x86_64 python36:3.6:8000020190410133122:593c47b3:x86_64 python36:3.6:820190123171828:17efdbc7:x86_64 redis:5:820181217094919:9edba152:x86_64 rhn-tools:1.0:8000020190425124933:6ec19280:x86_64 rhn-tools:1.0:820190321094720:e122ddfa:x86_64 ruby:2.5:820190111110530:9edba152:x86_64 rust-toolset:rhel8:820181214214108:b09eea91:x86_64 satellite-5-client:1.0:820190204085912:9edba152:x86_64 scala:2.10:820181213143541:2b79a98f:x86_64 squid:4:820181213143653:9edba152:x86_64 subversion:1.10:820181215112250:a51370e3:x86_64 swig:3.0:820181213143944:9edba152:x86_64 varnish:6:820181213144015:9edba152:x86_64 virt-devel:rhel:820190226174025:9edba152:x86_64 virt:rhel:8000020190510171727:55190bc5:x86_64 virt:rhel:8000020190516125745:55190bc5:x86_64 virt:rhel:820190226174025:9edba152:x86_64
glibc-*-2.2-2. Koji would pull in
glibc-devel-2.1-2and try to match it against
glibc-2.2-2. This of course caused builds to fail.
One, grobisplitter needs to learn about package order and pull in just the latest package into a non-modular repo. Two, another layer of indirection is needed where after we split out all the repositories we use reposync again to just pull from the grobisplit repositories. In this case we do so with a
-nand only have the latest packages. The second option seemed easier to pursue as most of the grobisplitter toolkit should become irrelevant when the next generation of Ursa-Major comes out.
Code Ready Problems
Build Over View
- RHEL-8 packages are reposync from cdn onto infrastructure.fedoraproject.org nfs directory.
- grobisplitter runs on grobisplitter01.phx2.fedoraproject.org to break out each module into repositories in a
- createrepo is run on
- a symbolic link is set to
reposync -n -dis run against
- createrepo is run on
- koji points to
- packages can be built
- packages can be signed
- bodhi and other items do their parts
- we compose