[arvados] created: 2.6.0-406-gc3624c8dd

git repository hosting git at public.arvados.org
Fri Jul 28 19:58:34 UTC 2023


        at  c3624c8dd724eb2946524293c552ad588a4aac37 (commit)


commit c3624c8dd724eb2946524293c552ad588a4aac37
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 15:53:45 2023 -0400

    20787: Note Alma/CentOS/Red Hat/Rocky 8 support in install docs
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/doc/_includes/_install_ca_cert.liquid b/doc/_includes/_install_ca_cert.liquid
index 279356a34..a886a62db 100644
--- a/doc/_includes/_install_ca_cert.liquid
+++ b/doc/_includes/_install_ca_cert.liquid
@@ -48,7 +48,7 @@ h4. Debian/Ubuntu
 </code></pre>
 </notextile>
 
-h4. CentOS
+h4. Alma/CentOS/Red Hat/Rocky
 
 <notextile>
 <pre><code>cp {{ca_cert_name}} /etc/pki/ca-trust/source/anchors/
diff --git a/doc/_includes/_install_compute_docker.liquid b/doc/_includes/_install_compute_docker.liquid
index a6f2515ab..9c3e54c7c 100644
--- a/doc/_includes/_install_compute_docker.liquid
+++ b/doc/_includes/_install_compute_docker.liquid
@@ -15,7 +15,7 @@ If you are using a distribution in the compute nodes that ships with cgroups v2
 
 After making changes, reboot the system to make these changes effective.
 
-h3. Red Hat and CentOS
+h3. Alma/CentOS/Red Hat/Rocky
 
 <notextile>
 <pre><code>~$ <span class="userinput">sudo grubby --update-kernel=ALL --args='cgroup_enable=memory swapaccount=1 systemd.unified_cgroup_hierarchy=0'</span>
diff --git a/doc/_includes/_install_packages.liquid b/doc/_includes/_install_packages.liquid
index ca587d0f2..595b0a8b7 100644
--- a/doc/_includes/_install_packages.liquid
+++ b/doc/_includes/_install_packages.liquid
@@ -13,10 +13,10 @@ fallback on arvados_component if not defined
 
 h2(#install-packages). Install {{packages_to_install | join: " and " }}
 
-h3. Red Hat and CentOS
+h3. Alma/CentOS/Red Hat/Rocky
 
 <notextile>
-<pre><code># <span class="userinput">yum install {{packages_to_install | join: " "}}</span>
+<pre><code># <span class="userinput">dnf install {{packages_to_install | join: " "}}</span>
 </code></pre>
 </notextile>
 
diff --git a/doc/_includes/_install_ruby_and_bundler.liquid b/doc/_includes/_install_ruby_and_bundler.liquid
index ecef04ba5..8fae4bf3b 100644
--- a/doc/_includes/_install_ruby_and_bundler.liquid
+++ b/doc/_includes/_install_ruby_and_bundler.liquid
@@ -16,9 +16,16 @@ h2(#packages). Option 1: Install from packages
 Future versions of Arvados may require a newer version of Ruby than is packaged with your OS.  Using OS packages simplifies initial install, but may complicate upgrades that rely on a newer Ruby.  If this is a concern, we recommend using "RVM":#rvm.
 {% include 'notebox_end' %}
 
-h3. CentOS 7
+h3. Alma/CentOS/Red Hat/Rocky
 
-The Ruby version shipped with CentOS 7 is too old.  Use "RVM":#rvm to install a newer version of Ruby (we recommend installing version 2.7 or newer).
+The Ruby version shipped with version 7 of these distributions is too old.  Use "RVM":#rvm to install a newer version of Ruby (we recommend installing version 2.7 or newer).
+
+Ruby 2.7 is available in a module with version 8 of these distributions. You can install it by running:
+
+<notextile>
+<pre><code># <span class="userinput">dnf module enable ruby:2.7</span>
+# <span class="userinput">dnf install --enablerepo=devel ruby ruby-devel</span></code></pre>
+</notextile>
 
 h3. Debian and Ubuntu
 
@@ -34,10 +41,10 @@ h2(#rvm). Option 2: Install with RVM
 
 h3. Install gpg and curl
 
-h4. CentOS 7
+h4. Alma/CentOS/Red Hat/Rocky
 
 <pre>
-yum install gpg curl which
+dnf install gpg curl which
 </pre>
 
 h4. Debian and Ubuntu
@@ -78,10 +85,10 @@ Install prerequisites for Debian 10, Ubuntu 18.04 and Ubuntu 20.04:
     libssl-dev libxslt1.1 zlib1g-dev
 </span></code></pre></notextile>
 
-Install prerequisites for CentOS 7:
+Install prerequisites for Alma/CentOS/Red Hat/Rocky:
 
 <notextile>
-<pre><code><span class="userinput">sudo yum install \
+<pre><code><span class="userinput">sudo dnf install \
     libyaml-devel glibc-headers autoconf gcc-c++ glibc-devel \
     patch readline-devel zlib-devel libffi-devel openssl-devel \
     make automake libtool bison sqlite-devel tar
diff --git a/doc/_includes/_supportedlinux.liquid b/doc/_includes/_supportedlinux.liquid
index 08a20750c..a68290935 100644
--- a/doc/_includes/_supportedlinux.liquid
+++ b/doc/_includes/_supportedlinux.liquid
@@ -6,7 +6,11 @@ SPDX-License-Identifier: CC-BY-SA-3.0
 
 table(table table-bordered table-condensed).
 |_. *Supported Linux Distributions*|
+|AlmaLinux 8|
+|CentOS 8|
 |CentOS 7|
+|Red Hat Enterprise Linux 8|
+|Rocky Linux 8|
 |Debian 11 ("bullseye")|
 |Debian 10 ("buster")|
 |Ubuntu 20.04 ("focal")|
diff --git a/doc/install/install-arv-git-httpd.html.textile.liquid b/doc/install/install-arv-git-httpd.html.textile.liquid
index d437cbbb0..476c89005 100644
--- a/doc/install/install-arv-git-httpd.html.textile.liquid
+++ b/doc/install/install-arv-git-httpd.html.textile.liquid
@@ -34,10 +34,10 @@ Git services must be installed on the same host as the Arvados Rails API server.
 
 h2(#dependencies). Install dependencies
 
-h3. CentOS 7
+h3. Alma/CentOS/Red Hat/Rocky
 
 <notextile>
-<pre><code># <span class="userinput">yum install git perl-Data-Dumper openssh-server</span>
+<pre><code># <span class="userinput">dnf install git perl-Data-Dumper openssh-server</span>
 </code></pre>
 </notextile>
 
@@ -246,10 +246,10 @@ h2(#install-packages). Install the arvados-git-httpd package
 
 The arvados-git-httpd package provides HTTP access, using Arvados authentication tokens instead of passwords. It must be installed on the system where your git repositories are stored.
 
-h3. CentOS 7
+h3. Alma/CentOS/Red Hat/Rocky
 
 <notextile>
-<pre><code># <span class="userinput">yum install arvados-git-httpd</span>
+<pre><code># <span class="userinput">dnf install arvados-git-httpd</span>
 </code></pre>
 </notextile>
 
diff --git a/doc/install/install-postgresql.html.textile.liquid b/doc/install/install-postgresql.html.textile.liquid
index 5bb7e422d..35ba41ad0 100644
--- a/doc/install/install-postgresql.html.textile.liquid
+++ b/doc/install/install-postgresql.html.textile.liquid
@@ -13,6 +13,7 @@ Arvados requires at least version *9.4* of PostgreSQL. We recommend using versio
 
 * "AWS":#aws
 * "CentOS 7":#centos7
+* "Alma/CentOS/Red Hat/Rocky 8":#rh8
 * "Debian or Ubuntu":#debian
 
 h3(#aws). AWS
@@ -35,6 +36,23 @@ h3(#centos7). CentOS 7
 # Configure the database to launch at boot and start now
   <notextile><pre># <span class="userinput">systemctl enable --now rh-postgresql12-postgresql</span></pre></notextile>
 
+h3(#rh8). Alma/CentOS/Red Hat/Rocky 8
+
+{% comment %}
+The default version on RH8 is PostgreSQL 10. You can install up to PostgreSQL 13.
+{% endcomment %}
+
+# Install PostgreSQL
+  <notextile><pre># <span class="userinput">yum install postgresql-server postgresql-contrib</span></pre></notextile>
+# Initialize the database
+  <notextile><pre># <span class="userinput">postgresql-setup initdb</span></pre></notextile>
+# Configure the database to accept password connections from localhost
+  <notextile><pre><code># <span class="userinput">sed -ri -e 's/^(host +all +all +(127\.0\.0\.1\/32|::1\/128) +)ident$/\1md5/' /var/lib/pgsql/data/pg_hba.conf</span></code></pre></notextile>
+# Configure the database to accept password connections from the local network (replace @10.9.8.0/24@ with your private network mask)
+  <notextile><pre><code># <span class="userinput">echo 'host all all 10.9.8.0/24 md5' | tee -a /var/lib/pgsql/data/pg_hba.conf</span></code></pre></notextile>
+# Configure the database to launch at boot and start now
+  <notextile><pre># <span class="userinput">systemctl enable --now postgresql</span></pre></notextile>
+
 h3(#debian). Debian or Ubuntu
 
 Debian 10 (Buster) and Ubuntu 16.04 (Xenial) and later versions include a sufficiently recent version of Postgres.
diff --git a/doc/install/install-webshell.html.textile.liquid b/doc/install/install-webshell.html.textile.liquid
index 74ee359f0..8de6fb595 100644
--- a/doc/install/install-webshell.html.textile.liquid
+++ b/doc/install/install-webshell.html.textile.liquid
@@ -105,7 +105,7 @@ For additional shell nodes with @shell-in-a-box@, add @location@ and @upstream@
 
 h2(#config-shellinabox). Configure shellinabox
 
-h3. Red Hat and CentOS
+h3. Alma/CentOS/Red Hat/Rocky
 
 Edit @/etc/sysconfig/shellinaboxd@:
 
diff --git a/doc/install/nginx.html.textile.liquid b/doc/install/nginx.html.textile.liquid
index 98da587eb..7d97c3e38 100644
--- a/doc/install/nginx.html.textile.liquid
+++ b/doc/install/nginx.html.textile.liquid
@@ -16,6 +16,12 @@ h3. CentOS 7
 <code># <span class="userinput">yum install nginx</span></code></pre>
 </notextile>
 
+h3. Alma/CentOS/Red Hat/Rocky 8
+
+<notextile>
+<pre><code># <span class="userinput">dnf install nginx</span></code></pre>
+</notextile>
+
 h3. Debian and Ubuntu
 
 <notextile>
diff --git a/doc/install/packages.html.textile.liquid b/doc/install/packages.html.textile.liquid
index 634c7833d..7a0defc1f 100644
--- a/doc/install/packages.html.textile.liquid
+++ b/doc/install/packages.html.textile.liquid
@@ -12,6 +12,7 @@ SPDX-License-Identifier: CC-BY-SA-3.0
 On any host where you install Arvados software, you'll need to add the Arvados package repository.  They're available for several popular distributions.
 
 * "CentOS 7":#centos7
+* "Alma/CentOS/Red Hat/Rocky 8":#rh8
 * "Debian and Ubuntu":#debian
 
 h3(#centos7). CentOS 7
@@ -29,6 +30,21 @@ gpgkey=http://rpm.arvados.org/CentOS/RPM-GPG-KEY-arvados
 
 {% include 'gpg_key_fingerprint' %}
 
+h3(#rh8). Alma/CentOS/Red Hat/Rocky 8
+
+Packages are available for all distributions based on RHEL 8, including AlmaLinux and Rocky Linux. To install them with dnf, save this configuration block in @/etc/yum.repos.d/arvados.repo@:
+
+<notextile>
+<pre><code>[arvados]
+name=Arvados
+baseurl=http://rpm.arvados.org/CentOS/$releasever/os/$basearch/
+gpgcheck=1
+gpgkey=http://rpm.arvados.org/CentOS/RPM-GPG-KEY-arvados
+</code></pre>
+</notextile>
+
+{% include 'gpg_key_fingerprint' %}
+
 h3(#debian). Debian and Ubuntu
 
 Packages are available for recent versions of Debian and Ubuntu.
diff --git a/doc/install/salt-vagrant.html.textile.liquid b/doc/install/salt-vagrant.html.textile.liquid
index 19a2cd510..0e400759c 100644
--- a/doc/install/salt-vagrant.html.textile.liquid
+++ b/doc/install/salt-vagrant.html.textile.liquid
@@ -84,7 +84,7 @@ To access your Arvados instance using command line clients (such as arv-get and
 </code></pre>
 </notextile>
 
-* On CentOS:
+* On Alma/CentOS/Red Hat/Rocky:
 
 <notextile>
 <pre><code>cp arvados-root-cert.pem /etc/pki/ca-trust/source/anchors/

commit 2bc489b1c5f9dd683e8ff33741dd1b1d66fef3ca
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 15:12:44 2023 -0400

    20787: Copyedit "CentOS" for consistent capitalization
    
    I left the upgrade notes alone since they're more anchored in time, but
    this should get the rest of the documentation.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/doc/_includes/_install_packages.liquid b/doc/_includes/_install_packages.liquid
index bfac32d83..ca587d0f2 100644
--- a/doc/_includes/_install_packages.liquid
+++ b/doc/_includes/_install_packages.liquid
@@ -1,4 +1,8 @@
 {% comment %}
+Copyright (C) The Arvados Authors. All rights reserved.
+
+SPDX-License-Identifier: CC-BY-SA-3.0
+
 packages_to_install should be a list
 fallback on arvados_component if not defined
 {% endcomment %}
@@ -9,7 +13,7 @@ fallback on arvados_component if not defined
 
 h2(#install-packages). Install {{packages_to_install | join: " and " }}
 
-h3. Red Hat and Centos
+h3. Red Hat and CentOS
 
 <notextile>
 <pre><code># <span class="userinput">yum install {{packages_to_install | join: " "}}</span>
diff --git a/doc/_includes/_install_ruby_and_bundler.liquid b/doc/_includes/_install_ruby_and_bundler.liquid
index 549e14463..ecef04ba5 100644
--- a/doc/_includes/_install_ruby_and_bundler.liquid
+++ b/doc/_includes/_install_ruby_and_bundler.liquid
@@ -16,9 +16,9 @@ h2(#packages). Option 1: Install from packages
 Future versions of Arvados may require a newer version of Ruby than is packaged with your OS.  Using OS packages simplifies initial install, but may complicate upgrades that rely on a newer Ruby.  If this is a concern, we recommend using "RVM":#rvm.
 {% include 'notebox_end' %}
 
-h3. Centos 7
+h3. CentOS 7
 
-The Ruby version shipped with Centos 7 is too old.  Use "RVM":#rvm to install a newer version of Ruby (we recommend installing version 2.7 or newer).
+The Ruby version shipped with CentOS 7 is too old.  Use "RVM":#rvm to install a newer version of Ruby (we recommend installing version 2.7 or newer).
 
 h3. Debian and Ubuntu
 
@@ -34,7 +34,7 @@ h2(#rvm). Option 2: Install with RVM
 
 h3. Install gpg and curl
 
-h4. Centos 7
+h4. CentOS 7
 
 <pre>
 yum install gpg curl which
diff --git a/doc/install/install-arv-git-httpd.html.textile.liquid b/doc/install/install-arv-git-httpd.html.textile.liquid
index b75890325..d437cbbb0 100644
--- a/doc/install/install-arv-git-httpd.html.textile.liquid
+++ b/doc/install/install-arv-git-httpd.html.textile.liquid
@@ -34,7 +34,7 @@ Git services must be installed on the same host as the Arvados Rails API server.
 
 h2(#dependencies). Install dependencies
 
-h3. Centos 7
+h3. CentOS 7
 
 <notextile>
 <pre><code># <span class="userinput">yum install git perl-Data-Dumper openssh-server</span>
@@ -246,7 +246,7 @@ h2(#install-packages). Install the arvados-git-httpd package
 
 The arvados-git-httpd package provides HTTP access, using Arvados authentication tokens instead of passwords. It must be installed on the system where your git repositories are stored.
 
-h3. Centos 7
+h3. CentOS 7
 
 <notextile>
 <pre><code># <span class="userinput">yum install arvados-git-httpd</span>
diff --git a/doc/install/install-webshell.html.textile.liquid b/doc/install/install-webshell.html.textile.liquid
index 95254abde..74ee359f0 100644
--- a/doc/install/install-webshell.html.textile.liquid
+++ b/doc/install/install-webshell.html.textile.liquid
@@ -105,7 +105,7 @@ For additional shell nodes with @shell-in-a-box@, add @location@ and @upstream@
 
 h2(#config-shellinabox). Configure shellinabox
 
-h3. Red Hat and Centos
+h3. Red Hat and CentOS
 
 Edit @/etc/sysconfig/shellinaboxd@:
 
diff --git a/doc/install/nginx.html.textile.liquid b/doc/install/nginx.html.textile.liquid
index d86f3858b..98da587eb 100644
--- a/doc/install/nginx.html.textile.liquid
+++ b/doc/install/nginx.html.textile.liquid
@@ -9,7 +9,7 @@ Copyright (C) The Arvados Authors. All rights reserved.
 SPDX-License-Identifier: CC-BY-SA-3.0
 {% endcomment %}
 
-h3. Centos 7
+h3. CentOS 7
 
 <notextile>
 <pre><code># <span class="userinput">yum install epel-release</span></code>
diff --git a/doc/install/packages.html.textile.liquid b/doc/install/packages.html.textile.liquid
index 49e393700..634c7833d 100644
--- a/doc/install/packages.html.textile.liquid
+++ b/doc/install/packages.html.textile.liquid
@@ -11,10 +11,10 @@ SPDX-License-Identifier: CC-BY-SA-3.0
 
 On any host where you install Arvados software, you'll need to add the Arvados package repository.  They're available for several popular distributions.
 
-* "Centos 7":#centos7
+* "CentOS 7":#centos7
 * "Debian and Ubuntu":#debian
 
-h3(#centos7). CentOS
+h3(#centos7). CentOS 7
 
 Packages are available for CentOS 7. To install them with yum, save this configuration block in @/etc/yum.repos.d/arvados.repo@:
 

commit 9bbc59a7acfc5fd8eae33aef687c4354c76e1984
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 14:51:18 2023 -0400

    20787: Add basic documentation for how to add a new target distro
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/README b/build/README
index 85513bdbe..f31d39a21 100644
--- a/build/README
+++ b/build/README
@@ -67,3 +67,27 @@ build-dev-docker-jobs-image.sh           Build developer arvados/jobs Docker ima
 run-library.sh                           A library of functions shared by the
                                          various scripts in this
                                          directory.
+
+Adding a new target
+===================
+
+In order to build packages on a new distribution, you MUST:
+
+* Add a rule for `TARGET/generated` to `package-build-dockerfiles/Makefile`.
+* Add the new `TARGET/generated` rule to the `all` target in
+  `package-build-dockerfiles/Makefile`.
+* Write `package-build-dockerfiles/TARGET/Dockerfile`.
+* Add a rule for `TARGET/generated` to `package-test-dockerfiles/Makefile`.
+* Add the new `TARGET/generated` rule to the `all` target in
+  `package-test-dockerfiles/Makefile`.
+* Write `package-test-dockerfiles/TARGET/Dockerfile`.
+* Create `package-testing/test-packages-TARGET.sh`, ideally by making it a
+  symlink to `FORMAT-common-test-packages.sh`.
+
+Of course, any part of our package build or test infrastructure may need to
+be updated to accommodate the process for new distributions. If you're
+having trouble building lots of packages, consider grepping these build
+scripts for the identifier of the closest working target, and see if you may
+need to add branches or similar hooks for your target. If you're having
+trouble building specific packages, consider doing the same for those
+packages' `fpm-info.sh` files.

commit 312158c2fddda00922ff1dc7714bd4d60b1c6d00
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 14:41:15 2023 -0400

    20787: Add basic intro documentation to build README
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/README b/build/README
index 54d5ea404..85513bdbe 100644
--- a/build/README
+++ b/build/README
@@ -1,4 +1,41 @@
-Scripts in this directory:
+Prerequisites
+=============
+
+In order to build packages, you will need:
+
+* Docker installed
+* permission to run Docker commands
+* the `WORKSPACE` environment variable set to the absolute path of an
+  Arvados Git work tree
+
+Quickstart
+==========
+
+Build and test all the packages for debian10 on your architecture by
+running:
+
+    ./run-build-test-packages-one-target.sh --arch "$(arch)"
+
+This will build package build and test Docker images for debian10, build all
+packages in a build container, then test all packages in a test container.
+
+Use a different distro by adding the `--target TARGET` option.
+
+Limit the build to a single package by adding the `--only-build
+PACKAGE_NAME` option. This is helpful when a build is mostly in good shape
+and you're tracking down last bugs in one or two packages.
+
+Get more verbose output by adding the `--debug` option.
+
+By default the script avoids rebuilding or retesting packages that it
+detects have already been done in past runs. You can force the script to
+rebuild or retest package(s) with the `--force-build` and `--force-test`
+options, respectively.
+
+Run the script with `--help` for more information about other options.
+
+Scripts in this directory
+=========================
 
 run-tests.sh                             Run unit and integration test suite.
 

commit 2403ea4807b357e1351fd397baf5d0fe94f3c059
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 15:32:32 2023 -0400

    20787: Update bundler version in rocky8 Docker images
    
    This updates the version to match our `Gemfile.lock` files and avoids a
    warning.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/package-build-dockerfiles/rocky8/Dockerfile b/build/package-build-dockerfiles/rocky8/Dockerfile
index a13b3e1a1..147f376c7 100644
--- a/build/package-build-dockerfiles/rocky8/Dockerfile
+++ b/build/package-build-dockerfiles/rocky8/Dockerfile
@@ -72,7 +72,7 @@ RUN gpg --import --no-tty /tmp/mpapis.asc && \
     /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
     /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
     echo "gem: --no-document" >> ~/.gemrc && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
+    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.3.26 && \
     /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.10.2
 
 RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
diff --git a/build/package-test-dockerfiles/rocky8/Dockerfile b/build/package-test-dockerfiles/rocky8/Dockerfile
index f6d5fb363..328c291cf 100644
--- a/build/package-test-dockerfiles/rocky8/Dockerfile
+++ b/build/package-test-dockerfiles/rocky8/Dockerfile
@@ -43,6 +43,6 @@ RUN touch /var/lib/rpm/* && \
     curl -L https://get.rvm.io | bash -s stable && \
     /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
     /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
-    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.9
+    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.3.26
 
 COPY localrepo.repo /etc/yum.repos.d/localrepo.repo

commit 955ae4eb8d37c648e211816db9510f81dc9df621
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 15:01:17 2023 -0400

    20787: Update for new createrepo package+executable name
    
    In Debian 12 the package is named createrepo-c and it installs
    /usr/bin/createrepo_c. With this change, the build script prefers that
    name, but still looks for and uses `createrepo`.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/run-build-packages-one-target.sh b/build/run-build-packages-one-target.sh
index 905af1cbc..298bd1cc9 100755
--- a/build/run-build-packages-one-target.sh
+++ b/build/run-build-packages-one-target.sh
@@ -139,16 +139,14 @@ fi
 
 if [[ -n "$test_packages" ]]; then
   if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.rpm')" ]] ; then
-    set +e
-    /usr/bin/which createrepo >/dev/null
-    if [[ "$?" != "0" ]]; then
+    CREATEREPO="$(command -v createrepo createrepo_c | tail -n1)"
+    if [[ -z "$CREATEREPO" ]]; then
       echo >&2
-      echo >&2 "Error: please install createrepo. E.g. sudo apt-get install createrepo"
+      echo >&2 "Error: please install createrepo. E.g. sudo apt install createrepo-c"
       echo >&2
       exit 1
     fi
-    set -e
-    createrepo $WORKSPACE/packages/$TARGET
+    "$CREATEREPO" $WORKSPACE/packages/$TARGET
   fi
 
   if [[ -n "$(find $WORKSPACE/packages/$TARGET -name '*.deb')" ]] ; then

commit 9024c11d84cf9e1847593fcb3615c009cbd2ebf1
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 14:09:02 2023 -0400

    20787: Streamline setup of Python build variables
    
    Instead of setting Debian defaults and overriding them,
    
    1. set global defaults
    2. set target-specific variables
    3. set deb/rpm-specific defaults as needed
    
    I hope this makes clearer what's actually a target-specific variable
    vs. a regular difference between Debian and Red Hat, and so makes it
    easier to add targets in the future.
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh
index 960932dbe..3be5cf267 100755
--- a/build/run-build-packages.sh
+++ b/build/run-build-packages.sh
@@ -109,51 +109,44 @@ fi
 declare -a PYTHON3_BACKPORTS
 
 PYTHON3_EXECUTABLE=python3
-PYTHON3_VERSION=$($PYTHON3_EXECUTABLE -c 'import sys; print("{v.major}.{v.minor}".format(v=sys.version_info))')
-
-## These defaults are suitable for any Debian-based distribution.
-# You can customize them as needed in distro sections below.
-PYTHON3_PACKAGE=python$PYTHON3_VERSION
 PYTHON3_PKG_PREFIX=python3
 PYTHON3_PREFIX=/usr
-PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/dist-packages
-## End Debian Python defaults.
-
 case "$TARGET" in
-    debian*)
-        FORMAT=deb
+    centos7)
+        FORMAT=rpm
+        # In CentOS 7, libcurl is linked against libnss. pycurl needs to know
+        # that in order to link to it correctly. This environment variable tells
+        # it that.
+        # libcurl is linked against openssl in RH8+ so this should not be
+        # necessary in later versions.
+        export PYCURL_SSL_LIBRARY=nss
         ;;
     ubuntu1804)
         FORMAT=deb
         PYTHON3_EXECUTABLE=python3.8
-        PYTHON3_VERSION=$($PYTHON3_EXECUTABLE -c 'import sys; print("{v.major}.{v.minor}".format(v=sys.version_info))')
-        PYTHON3_PACKAGE=python$PYTHON3_VERSION
-        PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/dist-packages
-        ;;
-    ubuntu*)
-        FORMAT=deb
         ;;
-    centos*)
+    centos*|rocky*)
         FORMAT=rpm
-        PYTHON3_PACKAGE=$(rpm -qf "$(which python"$PYTHON3_VERSION")" --queryformat '%{NAME}\n')
-        PYTHON3_PKG_PREFIX=$PYTHON3_PACKAGE
-        PYTHON3_PREFIX=/usr
-        PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/site-packages
-        export PYCURL_SSL_LIBRARY=nss
         ;;
-    rocky*)
-        FORMAT=rpm
-        PYTHON3_PACKAGE=$(rpm -qf "$(which python"$PYTHON3_VERSION")" --queryformat '%{NAME}\n')
-        PYTHON3_PKG_PREFIX=python3
-        PYTHON3_PREFIX=/usr
-        PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/site-packages
+    debian*|ubuntu*)
+        FORMAT=deb
         ;;
     *)
         echo -e "$0: Unknown target '$TARGET'.\n" >&2
         exit 1
         ;;
 esac
-
+: "${PYTHON3_VERSION:=$("$PYTHON3_EXECUTABLE" -c 'import sys; print("{v.major}.{v.minor}".format(v=sys.version_info))')}"
+case "$FORMAT" in
+    deb)
+        : "${PYTHON3_INSTALL_LIB:=lib/python$PYTHON3_VERSION/dist-packages}"
+        : "${PYTHON3_PACKAGE:=python$PYTHON3_VERSION}"
+        ;;
+    rpm)
+        : "${PYTHON3_INSTALL_LIB:=lib/python$PYTHON3_VERSION/site-packages}"
+        : "${PYTHON3_PACKAGE:=$(rpm -qf "$(command -v "python$PYTHON3_VERSION")" --queryformat '%{NAME}\n')}"
+        ;;
+esac
 
 if [[ -z "$WORKSPACE" ]]; then
   echo >&2 "$helpmessage"

commit 50868bb689a1ce2931196438233cf5c2fdb194ad
Author: Brett Smith <brett.smith at curii.com>
Date:   Fri Jul 28 13:48:08 2023 -0400

    20787: Add initial support for rocky8 package builds
    
    Arvados-DCO-1.1-Signed-off-by: Brett Smith <brett.smith at curii.com>

diff --git a/.licenseignore b/.licenseignore
index 361f09b4e..36d2876c5 100644
--- a/.licenseignore
+++ b/.licenseignore
@@ -8,6 +8,7 @@ AUTHORS
 */bootstrap.js
 *bootstrap-theme.css
 build/package-test-dockerfiles/centos7/localrepo.repo
+build/package-test-dockerfiles/rocky8/localrepo.repo
 build/package-test-dockerfiles/ubuntu1604/etc-apt-preferences.d-arvados
 *by-sa-3.0.html
 *by-sa-3.0.txt
diff --git a/apps/workbench/fpm-info.sh b/apps/workbench/fpm-info.sh
index a09638a35..a933fb702 100644
--- a/apps/workbench/fpm-info.sh
+++ b/apps/workbench/fpm-info.sh
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: AGPL-3.0
 
 case "$TARGET" in
-    centos*)
+    centos*|rocky*)
         fpm_depends+=(git bison make automake gcc gcc-c++ graphviz shared-mime-info)
         ;;
     ubuntu1804)
diff --git a/build/package-build-dockerfiles/Makefile b/build/package-build-dockerfiles/Makefile
index b8f6315e7..416e746d2 100644
--- a/build/package-build-dockerfiles/Makefile
+++ b/build/package-build-dockerfiles/Makefile
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: AGPL-3.0
 
 SHELL := '/bin/bash'
-all: centos7/generated debian10/generated debian11/generated ubuntu1804/generated ubuntu2004/generated
+all: centos7/generated debian10/generated debian11/generated rocky8/generated ubuntu1804/generated ubuntu2004/generated
 
 centos7/generated: common-generated-all
 	test -d centos7/generated || mkdir centos7/generated
@@ -17,6 +17,10 @@ debian11/generated: common-generated-all
 	test -d debian11/generated || mkdir debian11/generated
 	cp -f -rlt debian11/generated common-generated/*
 
+rocky8/generated: common-generated-all
+	test -d rocky8/generated || mkdir rocky8/generated
+	cp -f -rlt rocky8/generated common-generated/*
+
 ubuntu1804/generated: common-generated-all
 	test -d ubuntu1804/generated || mkdir ubuntu1804/generated
 	cp -f -rlt ubuntu1804/generated common-generated/*
diff --git a/build/package-build-dockerfiles/rocky8/Dockerfile b/build/package-build-dockerfiles/rocky8/Dockerfile
new file mode 100644
index 000000000..a13b3e1a1
--- /dev/null
+++ b/build/package-build-dockerfiles/rocky8/Dockerfile
@@ -0,0 +1,96 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+ARG HOSTTYPE
+ARG BRANCH
+ARG GOVERSION
+
+FROM rockylinux:8-minimal as build_x86_64
+# Install go
+ONBUILD ARG GOVERSION
+ONBUILD ADD generated/go${GOVERSION}.linux-amd64.tar.gz /usr/local/
+ONBUILD RUN ln -s /usr/local/go/bin/go /usr/local/bin/
+# Install nodejs and npm
+ONBUILD ADD generated/node-v10.23.1-linux-x64.tar.xz /usr/local/
+ONBUILD RUN ln -s /usr/local/node-v10.23.1-linux-x64/bin/* /usr/local/bin/
+
+FROM rockylinux:8-minimal as build_aarch64
+# Install go
+ONBUILD ARG GOVERSION
+ONBUILD ADD generated/go${GOVERSION}.linux-arm64.tar.gz /usr/local/
+ONBUILD RUN ln -s /usr/local/go/bin/go /usr/local/bin/
+# Install nodejs and npm
+ONBUILD ADD generated/node-v10.23.1-linux-arm64.tar.xz /usr/local/
+ONBUILD RUN ln -s /usr/local/node-v10.23.1-linux-arm64/bin/* /usr/local/bin/
+
+FROM build_${HOSTTYPE}
+
+MAINTAINER Arvados Package Maintainers <packaging at arvados.org>
+
+# Install dependencies.
+RUN microdnf --enablerepo=devel install \
+    automake \
+    bison \
+    bzip2 \
+    fuse-devel \
+    gcc \
+    gcc-c++ \
+    git \
+    libattr-devel \
+    libcurl-devel \
+    libffi-devel \
+    libtool \
+    libyaml-devel \
+    make \
+    nss-devel \
+    openssl-devel \
+    pam-devel \
+    patch \
+    postgresql-devel \
+    python3 \
+    python3-devel \
+    python3-pip \
+    python3-virtualenv \
+    readline-devel \
+    rpm-build \
+    ruby \
+    sqlite-devel \
+    tar \
+    unzip \
+    wget \
+    which \
+    xz-libs \
+    zlib-devel
+
+# Install RVM
+ADD generated/mpapis.asc /tmp/
+ADD generated/pkuczynski.asc /tmp/
+RUN gpg --import --no-tty /tmp/mpapis.asc && \
+    gpg --import --no-tty /tmp/pkuczynski.asc && \
+    curl -L https://get.rvm.io | bash -s stable && \
+    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
+    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
+    echo "gem: --no-document" >> ~/.gemrc && \
+    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.19 && \
+    /usr/local/rvm/bin/rvm-exec default gem install fpm --version 1.10.2
+
+RUN /usr/local/rvm/bin/rvm-exec default bundle config --global jobs $(let a=$(grep -c processor /proc/cpuinfo )-1; echo $a)
+# Cf. https://build.betterup.com/one-weird-trick-that-will-speed-up-your-bundle-install/
+ENV MAKE "make --jobs $(grep -c processor /proc/cpuinfo)"
+
+# Preseed the go module cache and the ruby gems, using the currently checked
+# out branch of the source tree. This avoids potential compatibility issues
+# between the version of Ruby and certain gems.
+RUN git clone --depth 1 git://git.arvados.org/arvados.git /tmp/arvados && \
+    cd /tmp/arvados && \
+    if [[ -n "${BRANCH}" ]]; then git checkout ${BRANCH}; fi && \
+    cd /tmp/arvados/services/api && \
+    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    cd /tmp/arvados/apps/workbench && \
+    /usr/local/rvm/bin/rvm-exec default bundle install && \
+    cd /tmp/arvados && \
+    go mod download
+
+ENV WORKSPACE /arvados
+CMD ["/usr/local/rvm/bin/rvm-exec", "default", "bash", "/jenkins/run-build-packages.sh", "--target", "rocky8"]
diff --git a/build/package-test-dockerfiles/Makefile b/build/package-test-dockerfiles/Makefile
index 849decb9a..96a80055a 100644
--- a/build/package-test-dockerfiles/Makefile
+++ b/build/package-test-dockerfiles/Makefile
@@ -2,7 +2,7 @@
 #
 # SPDX-License-Identifier: AGPL-3.0
 
-all: centos7/generated debian10/generated debian11/generated ubuntu1804/generated ubuntu2004/generated
+all: centos7/generated debian10/generated debian11/generated rocky8/generated ubuntu1804/generated ubuntu2004/generated
 
 centos7/generated: common-generated-all
 	test -d centos7/generated || mkdir centos7/generated
@@ -16,6 +16,10 @@ debian11/generated: common-generated-all
 	test -d debian11/generated || mkdir debian11/generated
 	cp -f -rlt debian11/generated common-generated/*
 
+rocky8/generated: common-generated-all
+	test -d rocky8/generated || mkdir rocky8/generated
+	cp -f -rlt rocky8/generated common-generated/*
+
 ubuntu1804/generated: common-generated-all
 	test -d ubuntu1804/generated || mkdir ubuntu1804/generated
 	cp -f -rlt ubuntu1804/generated common-generated/*
diff --git a/build/package-test-dockerfiles/rocky8/Dockerfile b/build/package-test-dockerfiles/rocky8/Dockerfile
new file mode 100644
index 000000000..f6d5fb363
--- /dev/null
+++ b/build/package-test-dockerfiles/rocky8/Dockerfile
@@ -0,0 +1,48 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
+FROM rockylinux:8-minimal
+MAINTAINER Arvados Package Maintainers <packaging at arvados.org>
+
+# Install dependencies.
+RUN microdnf --enablerepo=devel install \
+    autoconf \
+    automake \
+    bison \
+    bzip2 \
+    cpio \
+    diffutils \
+    findutils \
+    gcc-c++ \
+    glibc-devel \
+    glibc-headers \
+    gzip \
+    libffi-devel \
+    libtool \
+    make \
+    openssl-devel \
+    patch \
+    procps-ng \
+    python3 \
+    readline-devel \
+    ruby \
+    shadow-utils \
+    sqlite-devel \
+    tar \
+    wget \
+    which \
+    zlib-devel
+
+# Install RVM
+ADD generated/mpapis.asc /tmp/
+ADD generated/pkuczynski.asc /tmp/
+RUN touch /var/lib/rpm/* && \
+    gpg --import --no-tty /tmp/mpapis.asc && \
+    gpg --import --no-tty /tmp/pkuczynski.asc && \
+    curl -L https://get.rvm.io | bash -s stable && \
+    /usr/local/rvm/bin/rvm install 2.7 -j $(grep -c processor /proc/cpuinfo) && \
+    /usr/local/rvm/bin/rvm alias create default ruby-2.7 && \
+    /usr/local/rvm/bin/rvm-exec default gem install bundler --version 2.2.9
+
+COPY localrepo.repo /etc/yum.repos.d/localrepo.repo
diff --git a/build/package-test-dockerfiles/rocky8/localrepo.repo b/build/package-test-dockerfiles/rocky8/localrepo.repo
new file mode 100644
index 000000000..a4f6ab3b8
--- /dev/null
+++ b/build/package-test-dockerfiles/rocky8/localrepo.repo
@@ -0,0 +1,5 @@
+[localrepo]
+name=Arvados Test
+baseurl=file:///arvados/packages/rocky8
+gpgcheck=0
+enabled=1
diff --git a/build/package-testing/common-test-rails-server-package.sh b/build/package-testing/common-test-rails-server-package.sh
index e04556bb6..a60fcc465 100755
--- a/build/package-testing/common-test-rails-server-package.sh
+++ b/build/package-testing/common-test-rails-server-package.sh
@@ -47,6 +47,10 @@ case "$TARGET" in
         yum install --assumeyes httpd
         yum reinstall --assumeyes "$PACKAGE_NAME"
         ;;
+    rocky*)
+        microdnf install httpd
+        microdnf reinstall "$PACKAGE_NAME"
+        ;;
     *)
         echo -e "$0: Unknown target '$TARGET'.\n" >&2
         exit 1
diff --git a/build/package-testing/rpm-common-test-packages.sh b/build/package-testing/rpm-common-test-packages.sh
index 12450dd4f..7cd2be7cd 100755
--- a/build/package-testing/rpm-common-test-packages.sh
+++ b/build/package-testing/rpm-common-test-packages.sh
@@ -14,16 +14,23 @@ if [[ "$DEBUG" != "0" ]]; then
   STDERR_IF_DEBUG=/dev/stderr
 fi
 
-target=$(basename "$0" | grep -Eo '\bcentos[[:digit:]]+\b')
+target="$(basename "$0" .sh)"
+target="${target##*-}"
 
-yum -q clean all
+case "$target" in
+    centos*) yum -q clean all ;;
+    rocky*) microdnf clean all ;;
+esac
 touch /var/lib/rpm/*
 
 export ARV_PACKAGES_DIR="/arvados/packages/$target"
 
 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.before"
 
-yum install --assumeyes -e 0 $1
+case "$target" in
+    centos*) yum install --assumeyes -e 0 $1 ;;
+    rocky*) microdnf install $1 ;;
+esac
 
 rpm -qa | sort > "$ARV_PACKAGES_DIR/$1.after"
 
diff --git a/build/package-testing/test-packages-rocky8.sh b/build/package-testing/test-packages-rocky8.sh
new file mode 120000
index 000000000..64ef6040c
--- /dev/null
+++ b/build/package-testing/test-packages-rocky8.sh
@@ -0,0 +1 @@
+rpm-common-test-packages.sh
\ No newline at end of file
diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh
index aded25b59..960932dbe 100755
--- a/build/run-build-packages.sh
+++ b/build/run-build-packages.sh
@@ -141,6 +141,13 @@ case "$TARGET" in
         PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/site-packages
         export PYCURL_SSL_LIBRARY=nss
         ;;
+    rocky*)
+        FORMAT=rpm
+        PYTHON3_PACKAGE=$(rpm -qf "$(which python"$PYTHON3_VERSION")" --queryformat '%{NAME}\n')
+        PYTHON3_PKG_PREFIX=python3
+        PYTHON3_PREFIX=/usr
+        PYTHON3_INSTALL_LIB=lib/python$PYTHON3_VERSION/site-packages
+        ;;
     *)
         echo -e "$0: Unknown target '$TARGET'.\n" >&2
         exit 1
diff --git a/build/run-library.sh b/build/run-library.sh
index c2466faac..49cab6a0f 100755
--- a/build/run-library.sh
+++ b/build/run-library.sh
@@ -919,11 +919,6 @@ fpm_build_virtualenv_worker () {
   LICENSE_STRING=`grep license $WORKSPACE/$PKG_DIR/setup.py|cut -f2 -d=|sed -e "s/[',\\"]//g"`
   COMMAND_ARR+=('--license' "$LICENSE_STRING")
 
-  if [[ "$package_format" == "rpm" ]]; then
-    # Make sure to conflict with the old rh-python36 packages we used to publish
-    COMMAND_ARR+=('--conflicts' "rh-python36-python-$PKG")
-  fi
-
   if [[ "$DEBUG" != "0" ]]; then
     COMMAND_ARR+=('--verbose' '--log' 'info')
   fi
@@ -940,9 +935,21 @@ fpm_build_virtualenv_worker () {
   fi
 
   COMMAND_ARR+=('--depends' "$PYTHON3_PACKAGE")
-
-  # avoid warning
-  COMMAND_ARR+=('--deb-no-default-config-files')
+  case "$package_format" in
+      deb)
+          COMMAND_ARR+=(
+              # Avoid warning
+              --deb-no-default-config-files
+          ) ;;
+      rpm)
+          COMMAND_ARR+=(
+              # Conflict with older packages we used to publish
+              --conflicts "rh-python36-python-$PKG"
+              # Do not generate /usr/lib/.build-id links on RH8+
+              # (otherwise our packages conflict with platform-python)
+              --rpm-rpmbuild-define "_build_id_links none"
+          ) ;;
+  esac
 
   # Append --depends X and other arguments specified by fpm-info.sh in
   # the package source dir. These are added last so they can override
diff --git a/cmd/arvados-client/fpm-info.sh b/cmd/arvados-client/fpm-info.sh
index 0e4415a83..c71763245 100644
--- a/cmd/arvados-client/fpm-info.sh
+++ b/cmd/arvados-client/fpm-info.sh
@@ -5,7 +5,7 @@
 fpm_depends+=(fuse)
 
 case "$TARGET" in
-    centos*)
+    centos*|rocky*)
         fpm_depends+=(fuse-libs)
         ;;
 esac
diff --git a/lib/pam/fpm-info.sh b/lib/pam/fpm-info.sh
index 43c04a67e..952fb557c 100644
--- a/lib/pam/fpm-info.sh
+++ b/lib/pam/fpm-info.sh
@@ -3,5 +3,8 @@
 # SPDX-License-Identifier: Apache-2.0
 
 fpm_depends+=(ca-certificates)
+case "$TARGET" in
+    rocky*) fpm_depends+=(pam) ;;
+esac
 
 fpm_args+=(--conflicts=libpam-arvados)
diff --git a/services/api/fpm-info.sh b/services/api/fpm-info.sh
index 570f4601c..69c947470 100644
--- a/services/api/fpm-info.sh
+++ b/services/api/fpm-info.sh
@@ -5,7 +5,7 @@
 fpm_depends+=('git >= 1.7.10')
 
 case "$TARGET" in
-    centos*)
+    centos*|rocky*)
         fpm_depends+=(libcurl-devel postgresql-devel bison make automake gcc gcc-c++ postgresql shared-mime-info)
         ;;
     ubuntu1804)
diff --git a/services/fuse/fpm-info.sh b/services/fuse/fpm-info.sh
index f789abe69..4d98172f8 100644
--- a/services/fuse/fpm-info.sh
+++ b/services/fuse/fpm-info.sh
@@ -5,7 +5,7 @@
 fpm_depends+=(fuse)
 
 case "$TARGET" in
-    centos*)
+    centos*|rocky*)
         fpm_depends+=(fuse-libs)
         ;;
     debian* | ubuntu*)
diff --git a/services/keep-web/fpm-info.sh b/services/keep-web/fpm-info.sh
index 6bcbf67fe..41d020efe 100644
--- a/services/keep-web/fpm-info.sh
+++ b/services/keep-web/fpm-info.sh
@@ -3,7 +3,7 @@
 # SPDX-License-Identifier: AGPL-3.0
 
 case "$TARGET" in
-    centos*)
+    centos*|rocky*)
         fpm_depends+=(mailcap)
         ;;
     debian* | ubuntu*)

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list