From d0a7746e1e0352f9d504b436e33afe811a17342a Mon Sep 17 00:00:00 2001 From: Takeshi Nakatani Date: Thu, 14 Nov 2024 13:19:16 +0900 Subject: [PATCH] Changed supported OS and modified some codes --- .github/workflows/build_helper.sh | 126 +++++++++++------------------- .github/workflows/ci.yml | 20 ++--- .github/workflows/ostypevars.sh | 67 ++++++++-------- buildutils/APKBUILD.templ.in | 2 +- buildutils/alpine_build.sh | 56 ++++++++++--- 5 files changed, 129 insertions(+), 142 deletions(-) diff --git a/.github/workflows/build_helper.sh b/.github/workflows/build_helper.sh index bcc42d4..3f2ca07 100755 --- a/.github/workflows/build_helper.sh +++ b/.github/workflows/build_helper.sh @@ -393,7 +393,7 @@ run_pre_create_package() run_create_package() { if ! CONFIGUREOPT="${CONFIGURE_EXT_OPT}" /bin/sh -c "${CREATE_PACKAGE_TOOL} --buildnum ${CI_BUILD_NUMBER} ${CREATE_PACKAGE_TOOL_OPT} ${CREATE_PACKAGE_TOOL_OPT_AUTO}"; then - PRNERR "Failed to create debian type packages" + PRNERR "Failed to create ${CI_OSTYPE} packages" return 1 fi return 0 @@ -670,12 +670,42 @@ if [ -n "${OPT_DEVELOPER_FULLNAME}" ]; then CI_DEVELOPER_FULLNAME="${OPT_DEVELOPER_FULLNAME}" elif [ -n "${ENV_DEVELOPER_FULLNAME}" ]; then CI_DEVELOPER_FULLNAME="${ENV_DEVELOPER_FULLNAME}" +else + # [NOTE] + # If this variable is not set in a project that uses configure, + # an attempt will be made to load the value from configure.ac etc. + # + if [ -f "${SRCTOP}/configure.custom" ]; then + CI_DEVELOPER_FULLNAME=$(grep '^[[:space:]]*DEB_NAME[[:space:]]*=' "${SRCTOP}/configure.custom" | sed -e 's|^[[:space:]]*DEB_NAME[[:space:]]*=[[:space:]]*||g' -e 's|^[[:space:]]*||g' -e 's|[[:space:]]*$||g') + fi + if [ -z "${CI_DEVELOPER_FULLNAME}" ] && [ -f "${SRCTOP}/configure.ac" ]; then + CI_DEVELOPER_FULLNAME=$(grep '^[[:space:]]*custom_dev_name[[:space:]]*=' "${SRCTOP}/configure.ac" | grep -v 'DEB_NAME' | sed -e 's|^[[:space:]]*custom_dev_name[[:space:]]*=[[:space:]]*||g' -e 's|^[[:space:]]*||g' -e 's|[[:space:]]*$||g' -e 's|"||g') + fi + if [ -z "${CI_DEVELOPER_FULLNAME}" ]; then + PRNWARN "DEVELOPER_FULLNAME is not set in the options or environment variables. There is no choice but to set the default value." + CI_DEVELOPER_FULLNAME="ANTPICKAX_DEVELOPER" + fi fi if [ -n "${OPT_DEVELOPER_EMAIL}" ]; then CI_DEVELOPER_EMAIL="${OPT_DEVELOPER_EMAIL}" elif [ -n "${ENV_DEVELOPER_EMAIL}" ]; then CI_DEVELOPER_EMAIL="${ENV_DEVELOPER_EMAIL}" +else + # [NOTE] + # If this variable is not set in a project that uses configure, + # an attempt will be made to load the value from configure.ac etc. + # + if [ -f "${SRCTOP}/configure.custom" ]; then + CI_DEVELOPER_EMAIL=$(grep '^[[:space:]]*DEV_EMAIL[[:space:]]*=' "${SRCTOP}/configure.custom" | sed -e 's|^[[:space:]]*DEV_EMAIL[[:space:]]*=[[:space:]]*||g' -e 's|^[[:space:]]*||g' -e 's|[[:space:]]*$||g') + fi + if [ -z "${CI_DEVELOPER_EMAIL}" ] && [ -f "${SRCTOP}/configure.ac" ]; then + CI_DEVELOPER_EMAIL=$(grep '^[[:space:]]*custom_dev_email[[:space:]]*=' "${SRCTOP}/configure.ac" | grep -v 'DEV_EMAIL' | sed -e 's|^[[:space:]]*custom_dev_email[[:space:]]*=[[:space:]]*||g' -e 's|^[[:space:]]*||g' -e 's|[[:space:]]*$||g' -e 's|"||g') + fi + if [ -z "${CI_DEVELOPER_EMAIL}" ]; then + PRNWARN "DEVELOPER_EMAIL is not set in the options or environment variables. There is no choice but to set the default value." + CI_DEVELOPER_EMAIL="antpickax-support@mail.yahoo.co.jp" + fi fi if [ -n "${OPT_FORCE_PUBLISH}" ]; then @@ -743,13 +773,19 @@ elif [ -n "${ENV_PACKAGECLOUD_DOWNLOAD_REPO}" ]; then fi # -# Set environments for debian package +# Set environments for debian/alpine package # if [ -n "${CI_DEVELOPER_FULLNAME}" ]; then - export DEBEMAIL="${CI_DEVELOPER_FULLNAME}" + export DEBFULLNAME="${CI_DEVELOPER_FULLNAME}" +else + PRNERR "\"CI_DEVELOPER_FULLNAME\" value is not set." + exit 1 fi if [ -n "${CI_DEVELOPER_EMAIL}" ]; then - export DEBFULLNAME="${CI_DEVELOPER_EMAIL}" + export DEBEMAIL="${CI_DEVELOPER_EMAIL}" +else + PRNERR "\"CI_DEVELOPER_EMAIL\" value is not set." + exit 1 fi # [NOTE] for ubuntu/debian @@ -840,14 +876,6 @@ elif [ "${IS_OS_DEBIAN}" -eq 1 ]; then CREATE_PACKAGE_TOOL="${CREATE_PACKAGE_TOOL_DEBIAN}" CREATE_PACKAGE_TOOL_OPT="${CREATE_PACKAGE_TOOL_OPT_DEBIAN}" -elif [ "${IS_OS_CENTOS}" -eq 1 ]; then - AUTOGEN_EXT_OPT="${AUTOGEN_EXT_OPT_RPM}" - CONFIGURE_EXT_OPT="${CONFIGURE_EXT_OPT_RPM}" - BUILD_MAKE_EXT_OPT="${BUILD_MAKE_EXT_OPT_DEBIAN}" - MAKE_TEST_OPT="${MAKE_TEST_OPT_DEBIAN}" - CREATE_PACKAGE_TOOL="${CREATE_PACKAGE_TOOL_RPM}" - CREATE_PACKAGE_TOOL_OPT="${CREATE_PACKAGE_TOOL_OPT_RPM}" - elif [ "${IS_OS_FEDORA}" -eq 1 ]; then AUTOGEN_EXT_OPT="${AUTOGEN_EXT_OPT_RPM}" CONFIGURE_EXT_OPT="${CONFIGURE_EXT_OPT_RPM}" @@ -968,7 +996,6 @@ echo "" echo " DIST_TAG = ${DIST_TAG}" echo " IS_OS_UBUNTU = ${IS_OS_UBUNTU}" echo " IS_OS_DEBIAN = ${IS_OS_DEBIAN}" -echo " IS_OS_CENTOS = ${IS_OS_CENTOS}" echo " IS_OS_FEDORA = ${IS_OS_FEDORA}" echo " IS_OS_ROCKY = ${IS_OS_ROCKY}" echo " IS_OS_ALPINE = ${IS_OS_ALPINE}" @@ -1036,7 +1063,7 @@ if [ "${CI_USE_PACKAGECLOUD_REPO}" -eq 1 ]; then # # Setup packagecloud.io repository # - if [ "${IS_OS_CENTOS}" -eq 1 ] || [ "${IS_OS_FEDORA}" -eq 1 ] || [ "${IS_OS_ROCKY}" -eq 1 ]; then + if [ "${IS_OS_FEDORA}" -eq 1 ] || [ "${IS_OS_ROCKY}" -eq 1 ]; then PC_REPO_ADD_SH="script.rpm.sh" PC_REPO_ADD_SH_RUN="bash" elif [ "${IS_OS_UBUNTU}" -eq 1 ] || [ "${IS_OS_DEBIAN}" -eq 1 ]; then @@ -1056,7 +1083,7 @@ if [ "${CI_USE_PACKAGECLOUD_REPO}" -eq 1 ]; then exit 1 fi else - PRNWARN "OS is not debian/ubuntu nor centos/fedora/rocky nor alpine, then we do not know which download script use. Thus skip to setup packagecloud.io repository." + PRNWARN "OS is not debian/ubuntu nor fedora/rocky nor alpine, then we do not know which download script use. Thus skip to setup packagecloud.io repository." fi else PRNINFO "Not set packagecloud.io repository." @@ -1090,28 +1117,7 @@ if [ "${CI_DO_PUBLISH}" -eq 1 ]; then GEM_BIN="gem" GEM_INSTALL_CMD="install" - if [ "${IS_OS_CENTOS}" -eq 1 ] && echo "${CI_OSTYPE}" | sed -e 's#:##g' | grep -q -i -e 'centos7' -e 'centos6'; then - # - # Case for CentOS - # - PRNWARN "OS is CentOS 7(6), so install ruby by special means(SCL)." - - if ({ RUNCMD "${INSTALLER_BIN}" "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" "${INSTALL_QUIET_ARG}" centos-release-scl || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install SCL packages" - exit 1 - fi - if ({ RUNCMD "${INSTALLER_BIN}" "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" "${INSTALL_QUIET_ARG}" rh-ruby27 rh-ruby27-ruby-devel rh-ruby27-rubygem-rake || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install ruby packages" - exit 1 - fi - . /opt/rh/rh-ruby27/enable - - if ({ RUNCMD "${GEM_BIN}" "${GEM_INSTALL_CMD}" package_cloud || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install packagecloud.io upload tools" - exit 1 - fi - - elif [ "${IS_OS_ALPINE}" -eq 1 ]; then + if [ "${IS_OS_ALPINE}" -eq 1 ]; then # # Case for Alpine # @@ -1241,7 +1247,7 @@ if [ "${CI_DO_PUBLISH}" -eq 1 ]; then else # - # Case for other than CentOS / Alpine / Debian 10 / Rocky Linux 8 + # Case for other than Alpine / Debian 10 / Rocky Linux 8 # if ({ RUNCMD "${GEM_BIN}" "${GEM_INSTALL_CMD}" rake package_cloud || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then PRNERR "Failed to install packagecloud.io upload tools" @@ -1258,29 +1264,10 @@ PRNSUCCESS "Install published tools for uploading packages to packagecloud.io" #-------------------------------------------------------------- PRNTITLE "Install cppcheck" -IS_SET_ANOTHER_REPOSITORIES=0 if [ "${RUN_CPPCHECK}" -eq 1 ]; then PRNINFO "Install cppcheck package." - if [ "${IS_OS_CENTOS}" -eq 1 ]; then - # - # CentOS - # - if ({ RUNCMD "${INSTALLER_BIN}" "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" epel-release || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install epel repository" - exit 1 - fi - if ({ RUNCMD yum-config-manager --disable epel || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to disable epel repository" - exit 1 - fi - if ({ RUNCMD "${INSTALLER_BIN}" --enablerepo=epel "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" cppcheck || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install cppcheck from epel repository" - exit 1 - fi - IS_SET_ANOTHER_REPOSITORIES=1 - - elif [ "${IS_OS_FEDORA}" -eq 1 ]; then + if [ "${IS_OS_FEDORA}" -eq 1 ]; then # # Fedora # @@ -1323,7 +1310,6 @@ if [ "${RUN_CPPCHECK}" -eq 1 ]; then PRNERR "Failed to install cppcheck" exit 1 fi - IS_SET_ANOTHER_REPOSITORIES=1 elif [ "${IS_OS_UBUNTU}" -eq 1 ] || [ "${IS_OS_DEBIAN}" -eq 1 ]; then # @@ -1359,27 +1345,7 @@ PRNTITLE "Install shellcheck" if [ "${RUN_SHELLCHECK}" -eq 1 ]; then PRNINFO "Install shellcheck package." - if [ "${IS_OS_CENTOS}" -eq 1 ]; then - # - # CentOS - # - if [ "${IS_SET_ANOTHER_REPOSITORIES}" -eq 0 ]; then - if ({ RUNCMD "${INSTALLER_BIN}" "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" epel-release || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install epel repository" - exit 1 - fi - if ({ RUNCMD yum-config-manager --disable epel || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to disable epel repository" - exit 1 - fi - IS_SET_ANOTHER_REPOSITORIES=1 - fi - if ({ RUNCMD "${INSTALLER_BIN}" --enablerepo=epel "${INSTALL_CMD}" "${INSTALL_CMD_ARG}" "${INSTALL_AUTO_ARG}" ShellCheck || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's/^/ /g') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then - PRNERR "Failed to install ShellCheck from epel repository" - exit 1 - fi - - elif [ "${IS_OS_FEDORA}" -eq 1 ]; then + if [ "${IS_OS_FEDORA}" -eq 1 ]; then # # Fedora # diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b806289..9dc57c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,16 +56,16 @@ jobs: # matrix: container: + - ubuntu:24.04 - ubuntu:22.04 - ubuntu:20.04 - debian:bookworm - debian:bullseye - - debian:buster - rockylinux:9 - rockylinux:8 - - centos:centos7 - - fedora:39 - - fedora:38 + - fedora:41 + - fedora:40 + - alpine:3.20 - alpine:3.19 - alpine:3.18 @@ -73,19 +73,9 @@ jobs: image: ${{ matrix.container }} steps: - # [NOTE] - # actions/checkout@v3 uses nodejs v16 and will be deprecated. - # However, @v4 does not work on centos7 depending on the glibc version, - # so we will continue to use @v3. - # - - name: Checkout source code(other than centos7) - if: matrix.container != 'centos:centos7' + - name: Checkout source code uses: actions/checkout@v4 - - name: Checkout source code(only centos7) - if: matrix.container == 'centos:centos7' - uses: actions/checkout@v3 - # # Set environments from secrets # diff --git a/.github/workflows/ostypevars.sh b/.github/workflows/ostypevars.sh index a1d0553..c700910 100644 --- a/.github/workflows/ostypevars.sh +++ b/.github/workflows/ostypevars.sh @@ -47,7 +47,6 @@ # PKG_EXT : The extension of the package file # IS_OS_UBUNTU : Set to 1 for Ubuntu, 0 otherwise # IS_OS_DEBIAN : Set to 1 for Debian, 0 otherwise -# IS_OS_CENTOS : Set to 1 for CentOS, 0 otherwise # IS_OS_FEDORA : Set to 1 for Fedora, 0 otherwise # IS_OS_ROCKY : Set to 1 for Rocky, 0 otherwise # IS_OS_ALPINE : Set to 1 for Alpine, 0 otherwise @@ -76,7 +75,6 @@ PKG_EXT="" IS_OS_UBUNTU=0 IS_OS_DEBIAN=0 -IS_OS_CENTOS=0 IS_OS_FEDORA=0 IS_OS_ROCKY=0 IS_OS_ALPINE=0 @@ -89,8 +87,9 @@ if [ -z "${CI_OSTYPE}" ]; then # Unknown OS : Nothing to do # : -elif [ "${CI_OSTYPE}" = "ubuntu:22.04" ] || [ "${CI_OSTYPE}" = "ubuntu:jammy" ]; then - DIST_TAG="ubuntu/jammy" + +elif echo "${CI_OSTYPE}" | grep -q -i -e "ubuntu:24.04" -e "ubuntu:noble"; then + DIST_TAG="ubuntu/noble" INSTALL_PKG_LIST="git autoconf autotools-dev make dh-make fakeroot dpkg-dev devscripts pkg-config ruby-dev rubygems rubygems-integration procps" INSTALLER_BIN="apt-get" UPDATE_CMD="update" @@ -103,8 +102,8 @@ elif [ "${CI_OSTYPE}" = "ubuntu:22.04" ] || [ "${CI_OSTYPE}" = "ubuntu:jammy" ]; PKG_EXT="deb" IS_OS_UBUNTU=1 -elif [ "${CI_OSTYPE}" = "ubuntu:20.04" ] || [ "${CI_OSTYPE}" = "ubuntu:focal" ]; then - DIST_TAG="ubuntu/focal" +elif echo "${CI_OSTYPE}" | grep -q -i -e "ubuntu:22.04" -e "ubuntu:jammy"; then + DIST_TAG="ubuntu/jammy" INSTALL_PKG_LIST="git autoconf autotools-dev make dh-make fakeroot dpkg-dev devscripts pkg-config ruby-dev rubygems rubygems-integration procps" INSTALLER_BIN="apt-get" UPDATE_CMD="update" @@ -117,8 +116,8 @@ elif [ "${CI_OSTYPE}" = "ubuntu:20.04" ] || [ "${CI_OSTYPE}" = "ubuntu:focal" ]; PKG_EXT="deb" IS_OS_UBUNTU=1 -elif [ "${CI_OSTYPE}" = "debian:12" ] || [ "${CI_OSTYPE}" = "debian:bookworm" ]; then - DIST_TAG="debian/bookworm" +elif echo "${CI_OSTYPE}" | grep -q -i -e "ubuntu:20.04" -e "ubuntu:focal"; then + DIST_TAG="ubuntu/focal" INSTALL_PKG_LIST="git autoconf autotools-dev make dh-make fakeroot dpkg-dev devscripts pkg-config ruby-dev rubygems rubygems-integration procps" INSTALLER_BIN="apt-get" UPDATE_CMD="update" @@ -129,10 +128,10 @@ elif [ "${CI_OSTYPE}" = "debian:12" ] || [ "${CI_OSTYPE}" = "debian:bookworm" ]; INSTALL_QUIET_ARG="-qq" PKG_OUTPUT_DIR="debian_build" PKG_EXT="deb" - IS_OS_DEBIAN=1 + IS_OS_UBUNTU=1 -elif [ "${CI_OSTYPE}" = "debian:11" ] || [ "${CI_OSTYPE}" = "debian:bullseye" ]; then - DIST_TAG="debian/bullseye" +elif echo "${CI_OSTYPE}" | grep -q -i -e "debian:12" -e "debian:bookworm"; then + DIST_TAG="debian/bookworm" INSTALL_PKG_LIST="git autoconf autotools-dev make dh-make fakeroot dpkg-dev devscripts pkg-config ruby-dev rubygems rubygems-integration procps" INSTALLER_BIN="apt-get" UPDATE_CMD="update" @@ -145,8 +144,8 @@ elif [ "${CI_OSTYPE}" = "debian:11" ] || [ "${CI_OSTYPE}" = "debian:bullseye" ]; PKG_EXT="deb" IS_OS_DEBIAN=1 -elif [ "${CI_OSTYPE}" = "debian:10" ] || [ "${CI_OSTYPE}" = "debian:buster" ]; then - DIST_TAG="debian/buster" +elif echo "${CI_OSTYPE}" | grep -q -i -e "debian:11" -e "debian:bullseye"; then + DIST_TAG="debian/bullseye" INSTALL_PKG_LIST="git autoconf autotools-dev make dh-make fakeroot dpkg-dev devscripts pkg-config ruby-dev rubygems rubygems-integration procps" INSTALLER_BIN="apt-get" UPDATE_CMD="update" @@ -159,7 +158,7 @@ elif [ "${CI_OSTYPE}" = "debian:10" ] || [ "${CI_OSTYPE}" = "debian:buster" ]; t PKG_EXT="deb" IS_OS_DEBIAN=1 -elif [ "${CI_OSTYPE}" = "rockylinux:9.0" ] || [ "${CI_OSTYPE}" = "rockylinux:9" ]; then +elif echo "${CI_OSTYPE}" | grep -q -i "rockylinux:9"; then DIST_TAG="el/9" INSTALL_PKG_LIST="git autoconf automake gcc-c++ make pkgconfig redhat-rpm-config rpm-build ruby-devel rubygems procps" INSTALLER_BIN="dnf" @@ -173,7 +172,7 @@ elif [ "${CI_OSTYPE}" = "rockylinux:9.0" ] || [ "${CI_OSTYPE}" = "rockylinux:9" PKG_EXT="rpm" IS_OS_ROCKY=1 -elif [ "${CI_OSTYPE}" = "rockylinux:8.6" ] || [ "${CI_OSTYPE}" = "rockylinux:8" ]; then +elif echo "${CI_OSTYPE}" | grep -q -i "rockylinux:8"; then DIST_TAG="el/8" INSTALL_PKG_LIST="git autoconf automake gcc-c++ make pkgconfig redhat-rpm-config rpm-build ruby-devel rubygems procps" INSTALLER_BIN="dnf" @@ -187,10 +186,10 @@ elif [ "${CI_OSTYPE}" = "rockylinux:8.6" ] || [ "${CI_OSTYPE}" = "rockylinux:8" PKG_EXT="rpm" IS_OS_ROCKY=1 -elif [ "${CI_OSTYPE}" = "centos:7" ] || [ "${CI_OSTYPE}" = "centos:centos7" ]; then - DIST_TAG="el/7" +elif echo "${CI_OSTYPE}" | grep -q -i "fedora:41"; then + DIST_TAG="fedora/41" INSTALL_PKG_LIST="git autoconf automake gcc-c++ make pkgconfig redhat-rpm-config rpm-build ruby-devel rubygems procps" - INSTALLER_BIN="yum" + INSTALLER_BIN="dnf" UPDATE_CMD="update" UPDATE_CMD_ARG="" INSTALL_CMD="install" @@ -199,10 +198,10 @@ elif [ "${CI_OSTYPE}" = "centos:7" ] || [ "${CI_OSTYPE}" = "centos:centos7" ]; t INSTALL_QUIET_ARG="-q" PKG_OUTPUT_DIR="." PKG_EXT="rpm" - IS_OS_CENTOS=1 + IS_OS_FEDORA=1 -elif [ "${CI_OSTYPE}" = "fedora:39" ]; then - DIST_TAG="fedora/39" +elif echo "${CI_OSTYPE}" | grep -q -i "fedora:40"; then + DIST_TAG="fedora/40" INSTALL_PKG_LIST="git autoconf automake gcc-c++ make pkgconfig redhat-rpm-config rpm-build ruby-devel rubygems procps" INSTALLER_BIN="dnf" UPDATE_CMD="update" @@ -215,21 +214,21 @@ elif [ "${CI_OSTYPE}" = "fedora:39" ]; then PKG_EXT="rpm" IS_OS_FEDORA=1 -elif [ "${CI_OSTYPE}" = "fedora:38" ]; then - DIST_TAG="fedora/38" - INSTALL_PKG_LIST="git autoconf automake gcc-c++ make pkgconfig redhat-rpm-config rpm-build ruby-devel rubygems procps" - INSTALLER_BIN="dnf" +elif echo "${CI_OSTYPE}" | grep -q -i "alpine:3.20"; then + DIST_TAG="alpine/v3.20" + INSTALL_PKG_LIST="bash sudo alpine-sdk automake autoconf musl-locales ruby-dev procps" + INSTALLER_BIN="apk" UPDATE_CMD="update" - UPDATE_CMD_ARG="" - INSTALL_CMD="install" - INSTALL_CMD_ARG="" - INSTALL_AUTO_ARG="-y" + UPDATE_CMD_ARG="--no-progress" + INSTALL_CMD="add" + INSTALL_CMD_ARG="--no-progress --no-cache" + INSTALL_AUTO_ARG="" INSTALL_QUIET_ARG="-q" - PKG_OUTPUT_DIR="." - PKG_EXT="rpm" - IS_OS_FEDORA=1 + PKG_OUTPUT_DIR="apk_build" + PKG_EXT="apk" + IS_OS_ALPINE=1 -elif [ "${CI_OSTYPE}" = "alpine:3.19" ]; then +elif echo "${CI_OSTYPE}" | grep -q -i "alpine:3.19"; then DIST_TAG="alpine/v3.19" INSTALL_PKG_LIST="bash sudo alpine-sdk automake autoconf musl-locales ruby-dev procps" INSTALLER_BIN="apk" @@ -243,7 +242,7 @@ elif [ "${CI_OSTYPE}" = "alpine:3.19" ]; then PKG_EXT="apk" IS_OS_ALPINE=1 -elif [ "${CI_OSTYPE}" = "alpine:3.18" ]; then +elif echo "${CI_OSTYPE}" | grep -q -i "alpine:3.18"; then DIST_TAG="alpine/v3.18" INSTALL_PKG_LIST="bash sudo alpine-sdk automake autoconf musl-locales ruby-dev procps" INSTALLER_BIN="apk" diff --git a/buildutils/APKBUILD.templ.in b/buildutils/APKBUILD.templ.in index 5b043df..c6f531c 100644 --- a/buildutils/APKBUILD.templ.in +++ b/buildutils/APKBUILD.templ.in @@ -55,6 +55,7 @@ arch="x86_64" license="MIT" depends=" + procps " depends_dev="" makedepends=" @@ -62,7 +63,6 @@ makedepends=" autoconf automake musl-locales - procps " install=" diff --git a/buildutils/alpine_build.sh b/buildutils/alpine_build.sh index 66473df..013a111 100755 --- a/buildutils/alpine_build.sh +++ b/buildutils/alpine_build.sh @@ -62,6 +62,7 @@ APK_TOPDIR="${SRCTOP}/apk_build" APKBUILD_TEMPLATE_FILE="${SRCTOP}/buildutils/APKBUILD.templ" APKBUILD_FILE="${APK_TOPDIR}/APKBUILD" APKBUILD_CONFIG_DIR="${HOME}/.abuild" +APK_KEYS_DIR="/etc/apk/keys" MAKE_VARIABLES_TOOL="${SRCTOP}/buildutils/make_variables.sh" PRGNAME_NOEXT=$(echo "${PRGNAME}" | sed -e 's/[\.].*$//g' | tr -d '\n') @@ -227,15 +228,23 @@ fi # # Check running as root user # +RUN_USER_ID=$(id -u) + +if [ -n "${RUN_USER_ID}" ] && [ "${RUN_USER_ID}" -eq 0 ]; then + SUDO_CMD="" +else + SUDO_CMD="sudo" +fi + # [NOTE] # The abuild tool drains errors when run as root. # To avoid this, the "-F" option is required. +# If you need verbose message, you can add "-v" option here. # -RUN_USER_ID=$(id -u) -ABUILD_OPT="" - if [ -n "${RUN_USER_ID}" ] && [ "${RUN_USER_ID}" -eq 0 ]; then ABUILD_OPT="-F" +else + ABUILD_OPT="" fi #--------------------------------------------------------------- @@ -287,6 +296,28 @@ cd "${SRCTOP}" || exit 1 #--------------------------------------------------------------- echo "[TITLE] Create RSA key for signing" +# +# Determining the RSA key location directory +# +# [NOTE] +# This directory path depends on the apk-tools version. +# It is different for 2.14.4 and later and previous versions. +# +APKTOOLS_ALL_VER=$(apk list apk-tools | awk '{print $1}' | tail -1) +APKTOOLS_MAJOR_VER=$(echo "${APKTOOLS_ALL_VER}" | sed -e 's#^[[:space:]]*apk-tools-##g' -e 's#-# #g' -e 's#\.# #g' | awk '{print $1}') +APKTOOLS_MINOR_VER=$(echo "${APKTOOLS_ALL_VER}" | sed -e 's#^[[:space:]]*apk-tools-##g' -e 's#-# #g' -e 's#\.# #g' | awk '{print $2}') +APKTOOLS_PATCH_VER=$(echo "${APKTOOLS_ALL_VER}" | sed -e 's#^[[:space:]]*apk-tools-##g' -e 's#-# #g' -e 's#\.# #g' | awk '{print $3}') +if [ -z "${APKTOOLS_MAJOR_VER}" ] || [ -z "${APKTOOLS_MINOR_VER}" ] || [ -z "${APKTOOLS_PATCH_VER}" ]; then + echo "[ERROR] Could not get aok-tools package version." 1>&2 + exit 1 +fi +APKTOOLS_MIX_VER=$((APKTOOLS_MAJOR_VER * 1000 * 1000 + APKTOOLS_MINOR_VER * 1000 + APKTOOLS_PATCH_VER)) +if [ "${APKTOOLS_MIX_VER}" -lt 2014004 ]; then + RSA_KEYS_DIR="${APK_TOPDIR}" +else + RSA_KEYS_DIR="${APK_KEYS_DIR}" +fi + # # Check "${HOME}/.abuild" directory # @@ -318,12 +349,13 @@ if ! find "${APKBUILD_CONFIG_DIR}" -name "${DEBEMAIL}"-\*\.rsa\.pub | grep -q "$ echo "[ERROR] Not found ${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-.rsa.pub files." 1>&2 exit 1 fi -if ! cp -p "${APKBUILD_CONFIG_DIR}"/"${DEBEMAIL}"-*.rsa "${APK_TOPDIR}"; then - echo "[ERROR] Failed to copy RSA private key(${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-.rsa) to ${APK_TOPDIR} directory." 1>&2 +if ! /bin/sh -c "${SUDO_CMD} cp -p ${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-*.rsa ${RSA_KEYS_DIR} >/dev/null 2>&1"; then + echo "[ERROR] Failed to copy RSA private key(${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-.rsa) to ${RSA_KEYS_DIR} directory." 1>&2 exit 1 fi -if ! cp -p "${APKBUILD_CONFIG_DIR}"/"${DEBEMAIL}"-*.rsa.pub "${APK_TOPDIR}"; then - echo "[ERROR] Failed to copy RSA public key(${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-.rsa.pub) to ${APK_TOPDIR} directory." 1>&2 +if ! /bin/sh -c "${SUDO_CMD} cp -p ${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-*.rsa.pub ${RSA_KEYS_DIR} >/dev/null 2>&1"; then + echo "[ERROR] Failed to copy RSA public key(${APKBUILD_CONFIG_DIR}/${DEBEMAIL}-.rsa.pub) to ${RSA_KEYS_DIR} directory." 1>&2 + exit 1 fi # @@ -338,12 +370,12 @@ rm -rf "${APKBUILD_CONFIG_DIR}" # # Set file name/key contents to variables # -APK_PACKAGE_PRIV_KEYNAME="$(find "${APK_TOPDIR}" -name "${DEBEMAIL}"-\*\.rsa 2>/dev/null | head -1 | sed -e "s#${APK_TOPDIR}/##g" | tr -d '\n')" -APK_PACKAGE_PUB_KEYNAME="$(find "${APK_TOPDIR}" -name "${DEBEMAIL}"-\*\.rsa\.pub 2>/dev/null | head -1 | sed -e "s#${APK_TOPDIR}/##g" | tr -d '\n')" +APK_PACKAGE_PRIV_KEYNAME="$(find "${RSA_KEYS_DIR}" -name "${DEBEMAIL}"-\*\.rsa 2>/dev/null | head -1 | sed -e "s#${RSA_KEYS_DIR}/##g" | tr -d '\n')" +APK_PACKAGE_PUB_KEYNAME="$(find "${RSA_KEYS_DIR}" -name "${DEBEMAIL}"-\*\.rsa\.pub 2>/dev/null | head -1 | sed -e "s#${RSA_KEYS_DIR}/##g" | tr -d '\n')" echo "[SUCCEED] Created RSA keys" -echo " RSA private key : ${APK_TOPDIR}/${APK_PACKAGE_PRIV_KEYNAME}" -echo " RSA public key : ${APK_TOPDIR}/${APK_PACKAGE_PUB_KEYNAME}" +echo " RSA private key : ${RSA_KEYS_DIR}/${APK_PACKAGE_PRIV_KEYNAME}" +echo " RSA public key : ${RSA_KEYS_DIR}/${APK_PACKAGE_PUB_KEYNAME}" echo "" #--------------------------------------------------------------- @@ -461,7 +493,7 @@ echo "[TITLE] Build APK packages." # # build APK packages # -if ({ /bin/sh -c "PACKAGER_PRIVKEY=${APK_TOPDIR}/${APK_PACKAGE_PRIV_KEYNAME} abuild ${ABUILD_OPT} -r -P $(pwd)" || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's#^# #') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then +if ({ /bin/sh -c "PACKAGER_PRIVKEY=${RSA_KEYS_DIR}/${APK_PACKAGE_PRIV_KEYNAME} abuild ${ABUILD_OPT} -r -P $(pwd)" || echo > "${PIPEFAILURE_FILE}"; } | sed -e 's#^# #') && rm "${PIPEFAILURE_FILE}" >/dev/null 2>&1; then echo "[ERROR] Failed to create APK packages." 1>&2 exit 1 fi