From c0ee37354060b051670012983411e1bb574a2675 Mon Sep 17 00:00:00 2001 From: Greg Lin Date: Wed, 2 Dec 2020 16:37:15 -0600 Subject: [PATCH] Discontinue CentOS 6 builds for EOL This only stops the builds. Existing binaries will continue to be hosted, and the quick install script continues to support CentOS 6. --- Makefile | 2 +- README.md | 10 +- builder/Dockerfile.centos-6 | 224 ------------------------------------ builder/build.sh | 9 -- builder/clean_centos6.sh | 14 --- builder/docker-compose.yml | 11 -- builder/env_centos6.sh | 14 --- builder/package.centos-6 | 81 ------------- serverless-resources.yml | 14 --- serverless.yml | 4 +- 10 files changed, 4 insertions(+), 379 deletions(-) delete mode 100644 builder/Dockerfile.centos-6 delete mode 100755 builder/clean_centos6.sh delete mode 100755 builder/env_centos6.sh delete mode 100644 builder/package.centos-6 diff --git a/Makefile b/Makefile index c94d17d..6f28136 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -PLATFORMS := ubuntu-1604 ubuntu-1804 ubuntu-2004 debian-9 debian-10 centos-6 centos-7 centos-8 opensuse-42 opensuse-15 opensuse-152 +PLATFORMS := ubuntu-1604 ubuntu-1804 ubuntu-2004 debian-9 debian-10 centos-7 centos-8 opensuse-42 opensuse-15 opensuse-152 SLS_BINARY ?= ./node_modules/serverless/bin/serverless deps: diff --git a/README.md b/README.md index aa92011..1e5cd6b 100644 --- a/README.md +++ b/README.md @@ -74,12 +74,9 @@ sudo gdebi r-${R_VERSION}_1_amd64.deb #### RHEL/CentOS Linux Enable the [Extra Packages for Enterprise Linux](https://fedoraproject.org/wiki/EPEL) -repository (RHEL/CentOS 6 and 7 only): +repository (RHEL/CentOS 7 only): ```bash -# CentOS / RHEL 6 -sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm - # CentOS / RHEL 7 sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm ``` @@ -96,9 +93,6 @@ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noa Download the rpm package: ```bash -# CentOS / RHEL 6 -wget https://cdn.rstudio.com/r/centos-6/pkgs/R-${R_VERSION}-1-1.x86_64.rpm - # CentOS / RHEL 7 wget https://cdn.rstudio.com/r/centos-7/pkgs/R-${R_VERSION}-1-1.x86_64.rpm @@ -231,7 +225,7 @@ environment: # snip JOB_DEFINITION_ARN_debian_9: Ref: rBuildsBatchJobDefinitionDebian9 - SUPPORTED_PLATFORMS: ubuntu-1604,ubuntu-1804,debian-9,debian-10,centos-6,centos-7,centos-8,opensuse-42,opensuse-15 + SUPPORTED_PLATFORMS: ubuntu-1604,ubuntu-1804,debian-9,debian-10,centos-7,centos-8,opensuse-42,opensuse-15 ``` ### Makefile diff --git a/builder/Dockerfile.centos-6 b/builder/Dockerfile.centos-6 deleted file mode 100644 index 18bced7..0000000 --- a/builder/Dockerfile.centos-6 +++ /dev/null @@ -1,224 +0,0 @@ -FROM centos:centos6 - -ENV OS_IDENTIFIER centos-6 - -RUN yum -y update \ - && yum -y install epel-release \ - && yum -y install \ - bzip2-devel \ - cairo-devel \ - gcc-c++ \ - gcc-gfortran \ - gcc-objc \ - glibc-devel \ - groff \ - java-1.8.0-openjdk-devel \ - krb5-devel \ - krb5-libs \ - libICE-devel \ - libSM-devel \ - libX11-devel \ - libXmu-devel \ - libXt-devel \ - libgssapi-devel \ - libicu-devel \ - libidn-devel \ - libjpeg-devel \ - libpng-devel \ - libssh2-devel \ - libtiff-devel \ - ncurses-devel \ - openldap \ - openldap-devel \ - openssh-clients \ - openssh-server \ - openssl-devel \ - pango-devel \ - pcre-devel \ - pcre2-devel \ - pkgconfig \ - python34 \ - python34-pip \ - readline-devel \ - rpm-build \ - stunnel \ - tcl-devel \ - texinfo-tex \ - texlive-latex \ - tk-devel \ - valgrind-devel \ - wget \ - xz-devel \ - zlib-devel \ - && yum clean all - -# Install AWS CLI. -RUN pip3 install awscli --upgrade --user && \ - ln -s /root/.local/bin/aws /usr/bin/aws - -RUN chmod 0777 /opt - -# Compile newer versions of zlib, bzip2, xz, pcre, and curl. -# -# Several compression libraries that were at one time included in R-devel have been removed. -# Instead of providing these libraries, R-devel assumes they are pre-installed. On RedHat 6, -# this results in build errors when zlib, bzip, pcre, curl, and xz are required. These -# libraries must be downloaded and compiled before building R-devel. Reference: -# http://pj.freefaculty.org/blog/?p=315 -# -# It's also import to build the static versions of these libraries and link them -# statically when building R. This allows us to use the R binaries we build on -# another CentOS/RHEL 6 OS without updating the same five libraries. -# For more info, see the "R.spec" RPM spec file in the EPEL source archive at: -# http://download-ib01.fedoraproject.org/pub/epel/7/SRPMS/Packages/r/R-3.5.2-2.el7.src.rpm -# (search for "zlibhack" in R.spec). -# -# First, reate a directory for the additional libraries. -RUN mkdir -p /tmp/extra - -# zlib 1.2.8 -# -# Note: zlib 1.2.11 works fine for all R versions except 3.3.0, 3.3.1, and 3.3.2, -# so I went with an older version (1.2.8) to accommodate the flaky R versions. See the -# following note on https://www.r-statistics.com/2017/03/r-3-3-3-is-released/: -# -# The configure check for the zlib version is now robust to versions longer than 5 characters, -# including 1.2.11. -# -ARG ZLIB_VERSION=1.2.8 -ARG ZLIB_DOWNLOAD_SHA256=36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d -RUN curl -fsSL "https://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz" -o zlib.tar.gz \ - && echo "$ZLIB_DOWNLOAD_SHA256 zlib.tar.gz" | sha256sum -c - \ - && CWD=`pwd` && TMP=`mktemp -d` \ - && tar -C $TMP -zxvf zlib.tar.gz \ - && cd $TMP/zlib* \ - && ./configure --prefix=/tmp/extra --static \ - && make CFLAGS="-fpic -fPIC" \ - && make install \ - && cd $CWD && rm -rf $TMP && rm -rf zlib.tar.gz - -# bzip2 1.0.6 -ARG BZIP2_VERSION=1.0.6 -ARG BZIP2_DOWNLOAD_SHA1=3f89f861209ce81a6bab1fd1998c0ef311712002 -RUN curl -fsSL "https://sourceforge.net/projects/bzip2/files/bzip2-{$BZIP2_VERSION}.tar.gz/download" -o bzip2.tar.gz \ - && echo "$BZIP2_DOWNLOAD_SHA1 bzip2.tar.gz" | sha1sum -c - \ - && CWD=`pwd` && TMP=`mktemp -d` \ - && tar -C $TMP -zxvf bzip2.tar.gz \ - && cd $TMP/bzip2* \ - && make libbz2.a CFLAGS="-D_FILE_OFFSET_BITS=64 -fpic -fPIC" PREFIX=/tmp/extra \ - && make install PREFIX=/tmp/extra \ - && cd $CWD && rm -rf $TMP && rm -rf bzip2.tar.gz - -# xz 5.2.4 (for lzma libraries) -ARG XZ_VERSION=5.2.4 -ARG XZ_DOWNLOAD_SHA1=63ca380029597b951ce9afc6dec28f44f70bb5bd -RUN curl -fsSL "https://sourceforge.net/projects/lzmautils/files/xz-{$XZ_VERSION}.tar.gz/download" -o xz.tar.gz \ - && echo "$XZ_DOWNLOAD_SHA1 xz.tar.gz" | sha1sum -c - \ - && CWD=`pwd` && TMP=`mktemp -d` \ - && tar -C $TMP -zxvf xz.tar.gz \ - && cd $TMP/xz* \ - && CFLAGS="-fpic -fPIC" ./configure --enable-static=yes --enable-shared=no --prefix=/tmp/extra \ - && make -j8 \ - && make install \ - && cd $CWD && rm -rf $TMP && rm -rf xz.tar.gz - -# PCRE 8.42 -# -# The PCRE library provides PGP signatures for verifying downloads. Originally, I tried to do some -# PGP validation in the Dockerfile, but I ran into trouble with flaky key servers. To streamline -# things, I verified the download manually and then generated a sha256 checksum with the following -# commands: -# gpg --recv-key FB0F43D8 -# gpg pcre-8.42.tar.gz.sig -# sha256sum pcre-8.42.tar.gz -# -ARG PCRE_VERSION=8.42 -ARG PCRE_DOWNLOAD_SHA256=69acbc2fbdefb955d42a4c606dfde800c2885711d2979e356c0636efde9ec3b5 -RUN curl -fsSL "https://ftp.pcre.org/pub/pcre/pcre-{$PCRE_VERSION}.tar.gz" -o pcre.tar.gz \ - && echo "$PCRE_DOWNLOAD_SHA256 pcre.tar.gz" | sha256sum -c - \ - && CWD=`pwd` && TMP=`mktemp -d` \ - && tar -C $TMP -zxvf pcre.tar.gz \ - && cd $TMP/pcre* \ - && mkdir -p /tmp/extra \ - && CFLAGS="-fpic -fPIC" ./configure --enable-static=yes --enable-shared=no --enable-utf --enable-unicode-properties --enable-pcre8 --enable-pcre16 --enable-pcre32 --prefix=/tmp/extra \ - && make -j8 \ - && make install \ - && cd $CWD && rm -rf $TMP && rm -rf pcre.tar.gz - -# Curl 7.63.0 -# -# The curl library provides PGP signatures for verifying downloads. Originally, I tried to do some -# PGP validation in the Dockerfile, but I ran into trouble with flaky key servers. To streamline -# things, I verified the download manually and then generated a sha256 checksum with the following -# commands: -# gpg --recv-key B71E12C2 -# gpg curl-7.63.0.tar.gz.asc -# sha256sum curl-7.63.0.tar.gz -# -ARG CURL_VERSION=7.63.0 -ARG CURL_DOWNLOAD_SHA256=d483b89062832e211c887d7cf1b65c902d591b48c11fe7d174af781681580b41 -RUN curl -fsSL "https://curl.haxx.se/download/curl-{$CURL_VERSION}.tar.gz" -o curl.tar.gz \ - && echo "$CURL_DOWNLOAD_SHA256 curl.tar.gz" | sha256sum -c - \ - && CWD=`pwd` && TMP=`mktemp -d` \ - && tar -C $TMP -zxvf curl.tar.gz \ - && cd $TMP/curl* \ - && CFLAGS="-fpic -fPIC" ./configure --enable-static=yes --enable-shared=no --with-ssl --enable-ipv6 --with-gssapi --with-libidn --enable-ldaps --with-libssh2 --enable-threaded-resolver --prefix=/tmp/extra \ - && make V=1 \ - && make install \ - && cd $CWD && rm -rf $TMP && rm -rf curl.tar.gz - -# Compiler and linker flags for statically linking updated libraries -ENV CFLAGS="-fpic -fPIC -I/tmp/extra/include" -ENV CURL_CFLAGS='-DCURL_STATICLIB -I/tmp/extra/include' -ENV CURL_CPPFLAGS='-DCURL_STATICLIB -I/tmp/extra/include' - -# Configure flags for CentOS 6 that don't use the defaults in build.sh -ENV CONFIGURE_OPTIONS="\ - --enable-R-shlib \ - --with-tcltk \ - --enable-memory-profiling \ - --with-x \ - --with-system-valgrind-headers \ - --with-tcl-config=/usr/lib64/tclConfig.sh \ - --with-tk-config=/usr/lib64/tkConfig.sh \ - --enable-prebuilt-html" - -# RHEL 6 doesn't have texi2any, so use makeinfo. -ENV MAKEINFO=makeinfo - -# RHEL 6 doesn't have the inconsolata font, so override the defaults. -ENV R_RD4PDF="times,hyper" - -#-- required for fpm -- -## install rvm -RUN curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - \ - && curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - \ - && curl -L get.rvm.io | bash -s stable -## use rvm to install ruby -RUN source /etc/profile.d/rvm.sh \ - && /usr/local/rvm/bin/rvm reload \ - && /usr/local/rvm/bin/rvm requirements run \ - && /usr/local/rvm/bin/rvm install 2.6.3 \ - && /usr/local/rvm/bin/rvm use 2.6.3 --default - - -# RUN gem install fpm -v 0.4.26 -RUN export PATH=/usr/local/rvm/rubies/ruby-2.6.3/bin/:/.gems/bin:${PATH} \ - && export GEM_HOME=/.gems \ - && export GEM_PATH=/.gems \ - && gem install ffi:1.12.2 --no-document fpm \ - && /usr/local/rvm/bin/rvm repair wrappers - -RUN echo 'source /etc/profile.d/rvm.sh' >> .bashrc -#---------------------- - - -# Copy a script to help set up the environment -COPY env_centos6.sh ./env.sh - -COPY package.centos-6 /package.sh -COPY build.sh . - -# Copy a script to clean up after the build -COPY clean_centos6.sh ./clean.sh -ENTRYPOINT ./build.sh diff --git a/builder/build.sh b/builder/build.sh index 8dd0012..2e43653 100755 --- a/builder/build.sh +++ b/builder/build.sh @@ -51,14 +51,6 @@ fetch_r_source() { rm /tmp/R-${1}.tar.gz } -# On CentOS 6, we need to clean up references to the static library and header paths. -clean_r() { - if [[ -f /clean.sh ]]; then - echo "Cleaning R build on CentOS 6" - source /clean.sh - fi -} - # compile_r() - $1 as r version compile_r() { cd /tmp/R-${1} @@ -154,7 +146,6 @@ _version_is_greater_than() { set_up_environment fetch_r_source $R_VERSION compile_r $R_VERSION -clean_r package_r $R_VERSION archive_r $R_VERSION upload_r $R_VERSION diff --git a/builder/clean_centos6.sh b/builder/clean_centos6.sh deleted file mode 100755 index e1d1cc1..0000000 --- a/builder/clean_centos6.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -# For CentOS 6, we need to clean references to the static library and header paths -# out of the R configuration files -sed -i 's|-Wl,--whole-archive /tmp/extra/lib/libz.a /tmp/extra/lib/libbz2.a /tmp/extra/lib/liblzma.a /tmp/extra/lib/libpcre.a /tmp/extra/lib/libcurl.a -Wl,--no-whole-archive -L/tmp/extra/lib/||g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's|-Wl,--whole-archive /tmp/extra/lib/libz.a /tmp/extra/lib/libbz2.a /tmp/extra/lib/liblzma.a /tmp/extra/lib/libpcre.a /tmp/extra/lib/libcurl.a -Wl,--no-whole-archive -L/tmp/extra/lib/||g' /opt/R/${R_VERSION}/lib/pkgconfig/libR.pc -sed -i 's|-ldl -lpthread .* -lldap -lz -lrt||g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's|-ldl -lpthread .* -lldap -lz -lrt||g' /opt/R/${R_VERSION}/lib/pkgconfig/libR.pc -sed -i 's|-I/tmp/extra/include||g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's|-I/tmp/extra/include||g' /opt/R/${R_VERSION}/lib/R/bin/libtool -sed -i 's|-ldl -lpthread .* -lldap -lz||g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's|-ldl -lpthread .* -lldap||g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's|:/tmp/extra/lib||g' /opt/R/${R_VERSION}/lib/R/etc/ldpaths -sed -i 's|/tmp/extra/lib||g' /opt/R/${R_VERSION}/lib/R/etc/ldpaths diff --git a/builder/docker-compose.yml b/builder/docker-compose.yml index 1c0a446..137008e 100644 --- a/builder/docker-compose.yml +++ b/builder/docker-compose.yml @@ -56,17 +56,6 @@ services: image: r-builds:debian-10 volumes: - ./integration/tmp:/tmp/output - centos-6: - command: ./build.sh - environment: - - R_VERSION=${R_VERSION} - - LOCAL_STORE=/tmp/output - build: - context: . - dockerfile: Dockerfile.centos-6 - image: r-builds:centos-6 - volumes: - - ./integration/tmp:/tmp/output centos-7: command: ./build.sh environment: diff --git a/builder/env_centos6.sh b/builder/env_centos6.sh deleted file mode 100755 index 8e6ffa9..0000000 --- a/builder/env_centos6.sh +++ /dev/null @@ -1,14 +0,0 @@ -# Test to see if $R_VERSION is <= 3.1.3. If so, append some additional configure options -# to the $CONFIGURE_OPTIONS env var. -NEWLINE=$'\n' -if [[ "$(printf '%s\n' "${R_VERSION}${NEWLINE}3.1.3" | sort -V | head -n 1)" == "$R_VERSION" ]]; then \ - export CONFIGURE_OPTIONS="${CONFIGURE_OPTIONS} \ - --with-system-zlib \ - --with-system-bzlib \ - --with-system-pcre \ - --with-system-xz" -fi - -# Get library linking information from CURL. This is then used to populate LDFLAGS -export CURL_LIBS="`/tmp/extra/bin/curl-config --libs`" -export LDFLAGS="-ldl -lpthread -lc -lrt -Wl,--as-needed -Wl,--whole-archive /tmp/extra/lib/libz.a /tmp/extra/lib/libbz2.a /tmp/extra/lib/liblzma.a /tmp/extra/lib/libpcre.a /tmp/extra/lib/libcurl.a -Wl,--no-whole-archive -L/tmp/extra/lib/ ${CURL_LIBS}" diff --git a/builder/package.centos-6 b/builder/package.centos-6 deleted file mode 100644 index a855002..0000000 --- a/builder/package.centos-6 +++ /dev/null @@ -1,81 +0,0 @@ -#!/bin/bash - -if [[ ! -d /tmp/output/centos-6 ]]; then - mkdir -p /tmp/output/centos-6 -fi - -# R 3.x requires PCRE1 -pcre_lib='pcre2-devel' -if [[ "${R_VERSION}" =~ ^3 ]]; then - pcre_lib='pcre-devel' -fi - -# create post-install script required for openblas -cat <> /post-install.sh -mv /opt/R/${R_VERSION}/lib/R/lib/libRblas.so /opt/R/${R_VERSION}/lib/R/lib/libRblas.so.keep -ln -s /usr/lib64/libopenblasp.so /opt/R/${R_VERSION}/lib/R/lib/libRblas.so -EOF - -# create after-remove script to remove internal blas -cat <> /before-remove.sh -if [ -d /opt/R/${R_VERSION} ]; then - rm -r /opt/R/${R_VERSION} -fi -EOF - -# set environment for fpm -export PATH=/usr/local/rvm/rubies/ruby-2.6.3/bin/:/.gems/bin:${PATH} -export GEM_HOME=/.gems -export GEM_PATH=/.gems - -# Additional config for C++11 support in R 3.6. -# R 3.6.0 no longer sets CXX11 flags without a full C++11 compiler present, but -# the default gcc 4.4.7 still partially supports C++11 through -std=gnu++0x. -# Use the same CXX11 flags as the defaults in R versions prior to 3.6.0. -sed -i 's/^CXX11\ =\ .*/CXX11\ =\ g++/g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's/^CXX11FLAGS\ =\ .*/CXX11FLAGS\ =\ -g\ -O2\ \$\(LTO\)/g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's/^CXX11PICFLAGS\ =\ .*/CXX11PICFLAGS\ =\ -fpic/g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf -sed -i 's/^CXX11STD\ =\ .*/CXX11STD\ =\ -std=gnu++0x/g' /opt/R/${R_VERSION}/lib/R/etc/Makeconf - -fpm \ - -s dir \ - -t rpm \ - -v 1 \ - -n R-${R_VERSION} \ - --vendor "RStudio, PBC" \ - --deb-priority "optional" \ - --deb-field 'Bugs: https://github.com/rstudio/r-builds/issues' \ - --url "http://www.r-project.org/" \ - --description "GNU R statistical computation and graphics system" \ - --maintainer "RStudio, PBC https://github.com/rstudio/r-builds" \ - --license "GPL-2" \ - --after-install /post-install.sh \ - --after-remove /before-remove.sh \ - -p /tmp/output/centos-6/ \ - -d bzip2-devel \ - -d dejavu-sans-fonts \ - -d gcc \ - -d gcc-c++ \ - -d gcc-gfortran \ - -d libcurl-devel \ - -d libicu \ - -d libSM \ - -d libtiff \ - -d libXmu \ - -d libXt \ - -d make \ - -d openblas-devel \ - -d pango \ - -d ${pcre_lib} \ - -d tcl \ - -d tk \ - -d unzip \ - -d which \ - -d xz-devel \ - -d zip \ - -d zlib-devel \ - /opt/R/${R_VERSION} - -shopt -s extglob -export PKG_FILE=$(ls /tmp/output/centos-6/[rR]-${R_VERSION}*.@(deb|rpm) | head -1) - diff --git a/serverless-resources.yml b/serverless-resources.yml index 24e5ed4..e4b0020 100644 --- a/serverless-resources.yml +++ b/serverless-resources.yml @@ -201,20 +201,6 @@ rBuildsBatchJobDefinitionDebian10: Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:debian-10" Timeout: AttemptDurationSeconds: 7200 -rBuildsBatchJobDefinitionCentos6: - Type: AWS::Batch::JobDefinition - Properties: - Type: container - ContainerProperties: - Command: - - ./build.sh - Vcpus: 4 - Memory: 4096 - JobRoleArn: - "Fn::GetAtt": [ rBuildsEcsTaskIamRole, Arn ] - Image: "#{AWS::AccountId}.dkr.ecr.#{AWS::Region}.amazonaws.com/r-builds:centos-6" - Timeout: - AttemptDurationSeconds: 7200 rBuildsBatchJobDefinitionCentos7: Type: AWS::Batch::JobDefinition Properties: diff --git a/serverless.yml b/serverless.yml index e5fd799..0f07ec2 100644 --- a/serverless.yml +++ b/serverless.yml @@ -45,8 +45,6 @@ provider: Ref: rBuildsBatchJobDefinitionDebian9 JOB_DEFINITION_ARN_debian_10: Ref: rBuildsBatchJobDefinitionDebian10 - JOB_DEFINITION_ARN_centos_6: - Ref: rBuildsBatchJobDefinitionCentos6 JOB_DEFINITION_ARN_centos_7: Ref: rBuildsBatchJobDefinitionCentos7 JOB_DEFINITION_ARN_centos_8: @@ -57,7 +55,7 @@ provider: Ref: rBuildsBatchJobDefinitionOpensuse15 JOB_DEFINITION_ARN_opensuse_152: Ref: rBuildsBatchJobDefinitionOpensuse152 - SUPPORTED_PLATFORMS: ubuntu-1604,ubuntu-1804,ubuntu-2004,debian-9,debian-10,centos-6,centos-7,centos-8,opensuse-42,opensuse-15,opensuse-152 + SUPPORTED_PLATFORMS: ubuntu-1604,ubuntu-1804,ubuntu-2004,debian-9,debian-10,centos-7,centos-8,opensuse-42,opensuse-15,opensuse-152 functions: queueBuilds: