From b4aaea24ece75dc19850f03cad867ae78d70c8c9 Mon Sep 17 00:00:00 2001 From: Takeshi Nakatani Date: Mon, 18 Nov 2024 10:52:37 +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 ++++++++++--- buildutils/make_description.sh | 13 ++- 6 files changed, 139 insertions(+), 145 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 4279b0a..d871466 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,16 +55,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 @@ -72,19 +72,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 969eaa2..452935b 100644 --- a/.github/workflows/ostypevars.sh +++ b/.github/workflows/ostypevars.sh @@ -46,7 +46,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 @@ -75,7 +74,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 @@ -88,8 +86,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" @@ -102,8 +101,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" @@ -116,8 +115,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" @@ -128,10 +127,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" @@ -144,8 +143,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" @@ -158,7 +157,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" @@ -172,7 +171,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" @@ -186,10 +185,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" @@ -198,10 +197,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" @@ -214,21 +213,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 groff util-linux-misc musl-locales ruby-dev procps coreutils" + 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 groff util-linux-misc musl-locales ruby-dev procps coreutils" INSTALLER_BIN="apk" @@ -242,7 +241,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 groff util-linux-misc musl-locales ruby-dev procps coreutils" INSTALLER_BIN="apk" diff --git a/buildutils/APKBUILD.templ.in b/buildutils/APKBUILD.templ.in index 0050199..eccf3fd 100644 --- a/buildutils/APKBUILD.templ.in +++ b/buildutils/APKBUILD.templ.in @@ -54,6 +54,7 @@ arch="x86_64" license="MIT" depends=" + procps curl " depends_dev="" @@ -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 diff --git a/buildutils/make_description.sh b/buildutils/make_description.sh index 36d996d..5ffc604 100755 --- a/buildutils/make_description.sh +++ b/buildutils/make_description.sh @@ -97,8 +97,15 @@ while [ $# -ne 0 ]; do exit 1 fi IS_SHORT=0 - ESC_LF_CHAR="\\n\\" EXCLUSIVE_OPT=1 + # [NOTE] + # I want to set ESC_LF_CHAR to "\n\". + # We can write as follows to set this, but to be compatible with vim and ShellCheck, so ex3 is used. + # ex1) ESC_LF_CHAR="\\n\\" -> vim will confuse it. + # ex2) ESC_LF_CHAR='\n\' -> ShellCheck will output a warning. + # ex3) ESC_LF_CHAR='\n'\\ -> This is the correct. + # + ESC_LF_CHAR='\n'\\ elif [ "$1" = "-d" ] || [ "$1" = "-D" ] || [ "$1" = "--deblong" ] || [ "$1" = "--DEBLONG" ]; then if [ "${EXCLUSIVE_OPT}" -eq 1 ]; then @@ -136,7 +143,7 @@ done # indicate sections, so use them as markers to insert characters. # This allows you to see the section breaks. # -if ! nroff -man "${MAN_FILE}" 2>/dev/null | col -b 2>/dev/null | sed -e 's/[0-9][0-9]*m//g' -e 's/^[[:space:]]/_____/g' >"${TEMP_FILE}" 2>/dev/null; then +if ! nroff -man "${MAN_FILE}" 2>/dev/null | sed -e 's/[[:cntrl:]]\[[0-9][0-9]*m//g' -e 's/[[:cntrl:]][[:graph:]]//g' -e 's/^[[:space:]]/_____/g' >"${TEMP_FILE}" 2>/dev/null; then echo "[ERROR] Could not read ${MAN_FILE} file with converting." 1>&2 echo "No description because the ${PRGNAME} program failed to extract the description." rm -f "${TEMP_FILE}" @@ -152,7 +159,7 @@ while IFS= read -r ONE_LINE; do # # revert inserted special chars. # - REVERTED_LINE=$(echo "${ONE_LINE}" | sed -e 's/^_____//g' -e 's/^[[:space:]]*//g') + REVERTED_LINE=$(echo "${ONE_LINE}" | sed -e 's/^_____//g' -e 's/^[[:space:]]*//g' -e 's/[[:space:]]*$//g') if [ "${LINE_LEVEL}" -eq 0 ]; then if [ -n "${REVERTED_LINE}" ] && [ "${REVERTED_LINE}" = "NAME" ]; then