bootstrap: If the mold linker is available prefer it over gold
[metze/samba-autobuild/.git] / bootstrap / config.py
index f6a7dd1123f10a49194c17658d661249f68e1324..27e6d22d3f5cb1a08fb808053688cbc3e3867698 100644 (file)
@@ -20,6 +20,9 @@ Manage dependencies and bootstrap environments for Samba.
 
 Config file for packages and templates.
 
+Update the lists in this file to require new packages in the
+container images used in GitLab CI
+
 Author: Joe Guo <joeg@catalyst.net.nz>
 """
 import os
@@ -36,7 +39,9 @@ COMMON = [
     'autoconf',
     'binutils',
     'bison',
+    'ccache',
     'curl',
+    'chrpath',
     'flex',
     'gcc',
     'gdb',
@@ -55,6 +60,7 @@ COMMON = [
     'sudo',  # docker images has no sudo by default
     'tar',
     'tree',
+    'wget',
 ]
 
 
@@ -68,7 +74,7 @@ PKGS = [
     ('mingw-w64', 'mingw64-gcc'),
     ('zlib1g-dev', 'zlib-devel'),
     ('libbsd-dev', 'libbsd-devel'),
-    ('libaio-dev', 'libaio-devel'),
+    ('liburing-dev', 'liburing-devel'),
     ('libarchive-dev', 'libarchive-devel'),
     ('libblkid-dev', 'libblkid-devel'),
     ('libcap-dev', 'libcap-devel'),
@@ -101,6 +107,7 @@ PKGS = [
     ('libunwind-dev', 'libunwind-devel'),  # for back trace
     ('libglib2.0-dev', 'glib2-devel'),
     ('libicu-dev', 'libicu-devel'),
+    ('heimdal-multidev', ''),
 
     # NAME1, NAME2
     # for debian, locales provide locale support with language packs
@@ -112,7 +119,7 @@ PKGS = [
     ('bind9utils', 'bind-utils'),
     ('dnsutils', ''),
     ('xsltproc', 'libxslt'),
-    ('krb5-user', ''),
+    ('krb5-user', 'krb5-workstation'),
     ('krb5-config', ''),
     ('krb5-kdc', 'krb5-server'),
     ('apt-utils', 'yum-utils'),
@@ -122,28 +129,31 @@ PKGS = [
     ('', 'rpcgen'),  # required for test
     # refer: https://fedoraproject.org/wiki/Changes/SunRPCRemoval
     ('', 'libtirpc-devel'),  # for <rpc/rpc.h> header on fedora
-    ('', 'libnsl2-devel'),  # for <rpcsvc/yp_prot.h> header on fedora
     ('', 'rpcsvc-proto-devel'), # for <rpcsvc/rquota.h> header
     ('mawk', 'gawk'),
 
     ('python3', 'python3'),
+    ('python3-cryptography', 'python3-cryptography'), # for krb5 tests
     ('python3-dev', 'python3-devel'),
     ('python3-dbg', ''),
-    ('python3-iso8601', ''),
+    ('python3-iso8601', 'python3-iso8601'),
     ('python3-gpg', 'python3-gpg'),  # defaults to ubuntu/fedora latest
-    ('python3-crypto', 'python3-crypto'),
     ('python3-markdown', 'python3-markdown'),
     ('python3-matplotlib', ''),
     ('python3-dnspython', 'python3-dns'),
     ('python3-pexpect', ''),  # for wintest only
+    ('python3-pyasn1', 'python3-pyasn1'), # for krb5 tests
+    ('python3-setproctitle', 'python3-setproctitle'),
 
-    ('', 'libsemanage-python'),
-    ('', 'policycoreutils-python'),
+    ('', 'python3-libsemanage'),
+    ('', 'python3-policycoreutils'),
 
     # perl
     ('libparse-yapp-perl', 'perl-Parse-Yapp'),
-    ('libjson-perl', 'perl-JSON-Parse'),
+    ('libjson-perl', 'perl-JSON'),
+    ('', 'perl-JSON-Parse'),
     ('perl-modules', ''),
+    ('', 'perl-FindBin'),
     ('', 'perl-Archive-Tar'),
     ('', 'perl-ExtUtils-MakeMaker'),
     ('', 'perl-Test-Base'),
@@ -156,6 +166,9 @@ PKGS = [
     ('glusterfs-common', 'glusterfs-devel'),
     ('libcephfs-dev', 'libcephfs-devel'),
 
+    # spotlight
+    ('libtracker-sparql-2.0-dev', 'tracker-devel'),
+
     # misc
     # @ means group for rpm, use fedora as rpm default
     ('build-essential', '@development-tools'),
@@ -217,7 +230,7 @@ if [ ! -f /usr/bin/python3 ]; then
 fi
 """
 
-CENTOS8_YUM_BOOTSTRAP = r"""
+CENTOS8S_YUM_BOOTSTRAP = r"""
 #!/bin/bash
 {GENERATED_MARKER}
 set -xueo pipefail
@@ -225,7 +238,11 @@ set -xueo pipefail
 yum update -y
 yum install -y dnf-plugins-core
 yum install -y epel-release
-yum config-manager --set-enabled PowerTools -y
+
+yum -v repolist all
+yum config-manager --set-enabled powertools -y || \
+    yum config-manager --set-enabled powertools -y
+
 yum update -y
 
 yum install -y \
@@ -337,6 +354,8 @@ RUN /tmp/bootstrap.sh && /tmp/locale.sh
 
 # if ld.gold exists, force link it to ld
 RUN set -x; LD=$(which ld); LD_GOLD=$(which ld.gold); test -x $LD_GOLD && ln -sf $LD_GOLD $LD && test -x $LD && echo "$LD is now $LD_GOLD"
+# if ld.mold exists, force link it to ld (prefer mold over gold! ;-)
+RUN set -x; LD=$(which ld); LD_MOLD=$(which ld.mold); test -x $LD_MOLD && ln -sf $LD_MOLD $LD && test -x $LD && echo "$LD is now $LD_MOLD"
 
 # make test can not work with root, so we have to create a new user
 RUN useradd -m -U -s /bin/bash samba && \
@@ -373,91 +392,39 @@ end
 
 
 DEB_DISTS = {
-    'debian7': {
-        'docker_image': 'debian:7',
-        'vagrant_box': 'debian/wheezy64',
-        'replace': {
-            'libgnutls28-dev': 'libgnutls-dev',
-            'libsystemd-dev': '',  # not available, remove
-            'lmdb-utils': '',  # not available, remove
-            'liblmdb-dev': '',  # not available, remove
-            'python-gpg': 'python-gpgme',
-            'python3-gpg': '',  # no python3 gpg pkg available, remove
-            'language-pack-en': '',   # included in locales
-        }
-    },
-    'debian8': {
-        'docker_image': 'debian:8',
-        'vagrant_box': 'debian/jessie64',
+    'debian10': {
+        'docker_image': 'debian:10',
+        'vagrant_box': 'debian/buster64',
         'replace': {
-            'python-gpg': 'python-gpgme',
-            'python3-gpg': 'python3-gpgme',
             'language-pack-en': '',   # included in locales
+            'liburing-dev': '',   # not available
         }
     },
-    'debian9': {
-        'docker_image': 'debian:9',
-        'vagrant_box': 'debian/stretch64',
+    'debian11': {
+        'docker_image': 'debian:11',
+        'vagrant_box': 'debian/bullseye64',
         'replace': {
             'language-pack-en': '',   # included in locales
         }
     },
-    'ubuntu1404': {
-        'docker_image': 'ubuntu:14.04',
-        'vagrant_box': 'ubuntu/trusty64',
+    'ubuntu1804': {
+        'docker_image': 'ubuntu:18.04',
+        'vagrant_box': 'ubuntu/bionic64',
         'replace': {
-            'libsystemd-dev': '',  # remove
-            'libgnutls28-dev': 'libgnutls-dev',
-            'python-gpg': 'python-gpgme',
-            'python3-gpg': 'python3-gpgme',
-            'lmdb-utils': 'lmdb-utils/trusty-backports',
-            'liblmdb-dev': 'liblmdb-dev/trusty-backports',
-            'libunwind-dev': 'libunwind8-dev',
-            'glusterfs-common': '',
-            'libcephfs-dev': '',
+            'liburing-dev': '',   # not available
         }
     },
-    'ubuntu1604': {
-        'docker_image': 'ubuntu:16.04',
-        'vagrant_box': 'ubuntu/xenial64',
+    'ubuntu2004': {
+        'docker_image': 'ubuntu:20.04',
+        'vagrant_box': 'ubuntu/focal64',
         'replace': {
-            'python-gpg': 'python-gpgme',
-            'python3-gpg': 'python3-gpgme',
-            'glusterfs-common': '',
-            'libcephfs-dev': '',
+            'liburing-dev': '',   # not available
         }
     },
-    'ubuntu1804': {
-        'docker_image': 'ubuntu:18.04',
-        'vagrant_box': 'ubuntu/bionic64',
-    },
 }
 
 
 RPM_DISTS = {
-    'centos6': {
-        'docker_image': 'centos:6',
-        'vagrant_box': 'centos/6',
-        'bootstrap': YUM_BOOTSTRAP,
-        'replace': {
-            'lsb-release': 'redhat-lsb',
-            'python3': 'python36',
-            'python3-devel': 'python36-devel',
-            'python2-gpg': 'pygpgme',
-            'python3-gpg': '',  # no python3-gpg yet
-            '@development-tools': '"@Development Tools"',  # add quotes
-            'glibc-langpack-en': '',  # included in glibc-common
-            'glibc-locale-source': '',  # included in glibc-common
-            'procps-ng': 'procps',  # centos6 still use old name
-            # update perl core modules on centos
-            # fix: Can't locate Archive/Tar.pm in @INC
-            'perl': 'perl-core',
-            'rpcsvc-proto-devel': '',
-            'glusterfs-api-devel': '',
-            'glusterfs-devel': '',
-            'libcephfs-devel': '',
-        }
-    },
     'centos7': {
         'docker_image': 'centos:7',
         'vagrant_box': 'centos/7',
@@ -465,9 +432,10 @@ RPM_DISTS = {
         'replace': {
             'lsb-release': 'redhat-lsb',
             'python3': 'python36',
-            'python3-crypto': 'python36-crypto',
+            'python3-cryptography': 'python36-cryptography',
             'python3-devel': 'python36-devel',
             'python3-dns': 'python36-dns',
+            'python3-pyasn1': 'python36-pyasn1',
             'python3-gpg': 'python36-gpg',
             'python3-iso8601' : 'python36-iso8601',
             'python3-markdown': 'python36-markdown',
@@ -482,58 +450,56 @@ RPM_DISTS = {
             # update perl core modules on centos
             # fix: Can't locate Archive/Tar.pm in @INC
             'perl': 'perl-core',
+            'perl-FindBin': '',
             'rpcsvc-proto-devel': '',
             'glusterfs-api-devel': '',
             'glusterfs-devel': '',
             'libcephfs-devel': '',
-            'gnutls-devel': 'compat-gnutls34-devel',
+            'gnutls-devel': 'compat-gnutls37-devel',
+            'liburing-devel': '',   # not available
+            'python3-setproctitle': 'python36-setproctitle',
+            'tracker-devel': '', # do not install
         }
     },
-    'centos8': {
-        'docker_image': 'centos:8',
-        'vagrant_box': 'centos/8',
-        'bootstrap': CENTOS8_YUM_BOOTSTRAP,
+    'centos8s': {
+        'docker_image': 'quay.io/centos/centos:stream8',
+        'vagrant_box': 'centos/stream8',
+        'bootstrap': CENTOS8S_YUM_BOOTSTRAP,
         'replace': {
             'lsb-release': 'redhat-lsb',
             '@development-tools': '"@Development Tools"',  # add quotes
-            'libsemanage-python': 'python3-libsemanage',
             'lcov': '', # does not exist
             'perl-JSON-Parse': '', # does not exist?
             'perl-Test-Base': 'perl-Test-Simple',
-            'policycoreutils-python': 'python3-policycoreutils',
-            'python3-crypto': '',
-            'quota-devel': '', # FIXME: Add me back, once available!
+            'perl-FindBin': '',
+            'liburing-devel': '', # not available yet, Add me back, once available!
         }
     },
-    'fedora29': {
-        'docker_image': 'fedora:29',
-        'vagrant_box': 'fedora/29-cloud-base',
+    'fedora34': {
+        'docker_image': 'fedora:34',
+        'vagrant_box': 'fedora/34-cloud-base',
         'bootstrap': DNF_BOOTSTRAP,
         'replace': {
             'lsb-release': 'redhat-lsb',
+            'perl-FindBin': '',
+            'python3-iso8601': 'python3-dateutil',
+            'libtracker-sparql-2.0-dev': '',  # only tracker 3.x is available
         }
     },
-    'fedora30': {
-        'docker_image': 'fedora:30',
-        'vagrant_box': 'fedora/30-cloud-base',
+    'fedora35': {
+        'docker_image': 'fedora:35',
+        'vagrant_box': 'fedora/35-cloud-base',
         'bootstrap': DNF_BOOTSTRAP,
         'replace': {
             'lsb-release': 'redhat-lsb',
+            'perl-FindBin': '',
+            'python3-iso8601': 'python3-dateutil',
+            'libtracker-sparql-2.0-dev': '',  # only tracker 3.x is available
         }
     },
-    'fedora31': {
-        'docker_image': 'fedora:31',
-        'vagrant_box': 'fedora/31-cloud-base',
-        'bootstrap': DNF_BOOTSTRAP,
-        'replace': {
-            'lsb-release': 'redhat-lsb',
-            'libsemanage-python': 'python3-libsemanage',
-            'policycoreutils-python': 'python3-policycoreutils',
-        }
-    },
-    'opensuse150': {
-        'docker_image': 'opensuse/leap:15.0',
-        'vagrant_box': 'opensuse/openSUSE-15.0-x86_64',
+    'opensuse151': {
+        'docker_image': 'opensuse/leap:15.1',
+        'vagrant_box': 'opensuse/openSUSE-15.1-x86_64',
         'bootstrap': ZYPPER_BOOTSTRAP,
         'replace': {
             '@development-tools': '',
@@ -545,27 +511,26 @@ RPM_DISTS = {
             'jansson-devel': 'libjansson-devel',
             'keyutils-libs-devel': 'keyutils-devel',
             'krb5-workstation': 'krb5-client',
-            'libnsl2-devel': 'libnsl-devel',
-            'libsemanage-python': 'python2-semanage',
+            'python3-libsemanage': 'python2-semanage',
             'openldap-devel': 'openldap2-devel',
             'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
             'perl-JSON-Parse': 'perl-JSON-XS',
             'perl-generators': '',
             'perl-interpreter': '',
+            'perl-FindBin': '',
             'procps-ng': 'procps',
-            'python-dns': 'python2-dnspython',
-            'python3-crypto': 'python3-pycrypto',
             'python3-dns': 'python3-dnspython',
             'python3-markdown': 'python3-Markdown',
             'quota-devel': '',
             'glusterfs-api-devel': '',
             'libtasn1-tools': '', # asn1Parser is part of libtasn1
             'mingw64-gcc': '', # doesn't exist
+            'liburing-devel': '',   # not available
         }
     },
-    'opensuse151': {
-        'docker_image': 'opensuse/leap:15.1',
-        'vagrant_box': 'opensuse/openSUSE-15.1-x86_64',
+    'opensuse152': {
+        'docker_image': 'opensuse/leap:15.2',
+        'vagrant_box': 'opensuse/openSUSE-15.2-x86_64',
         'bootstrap': ZYPPER_BOOTSTRAP,
         'replace': {
             '@development-tools': '',
@@ -577,22 +542,20 @@ RPM_DISTS = {
             'jansson-devel': 'libjansson-devel',
             'keyutils-libs-devel': 'keyutils-devel',
             'krb5-workstation': 'krb5-client',
-            'libnsl2-devel': 'libnsl-devel',
-            'libsemanage-python': 'python2-semanage',
+            'python3-libsemanage': 'python2-semanage',
             'openldap-devel': 'openldap2-devel',
             'perl-Archive-Tar': 'perl-Archive-Tar-Wrapper',
             'perl-JSON-Parse': 'perl-JSON-XS',
             'perl-generators': '',
             'perl-interpreter': '',
+            'perl-FindBin': '',
             'procps-ng': 'procps',
-            'python-dns': 'python2-dnspython',
-            'python3-crypto': 'python3-pycrypto',
+            'python3-iso8601': 'python3-python-dateutil',
             'python3-dns': 'python3-dnspython',
             'python3-markdown': 'python3-Markdown',
             'quota-devel': '',
             'glusterfs-api-devel': '',
             'libtasn1-tools': '', # asn1Parser is part of libtasn1
-            'mingw64-gcc': '', # doesn't exist
         }
     }
 }