[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