Updated files for support ALPINE v3.17 (#2116)

This commit is contained in:
Takeshi Nakatani 2023-03-05 13:30:59 +09:00 committed by GitHub
parent a25a9450a6
commit 526700f2de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 68 additions and 20 deletions

View File

@ -61,6 +61,7 @@ jobs:
- fedora:37 - fedora:37
- fedora:36 - fedora:36
- opensuse/leap:15 - opensuse/leap:15
- alpine:3.17
container: container:
image: ${{ matrix.container }} image: ${{ matrix.container }}

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/bin/sh
# #
# s3fs - FUSE-based file system backed by Amazon S3 # s3fs - FUSE-based file system backed by Amazon S3
# #
@ -19,9 +19,17 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# #
# [NOTE]
# Since bash is not present in some Runner containers, this script
# runs in sh.
# pipefail etc. are not native variables of sh. It exists in bash's
# sh compatibility mode, but doesn't work in sh compatibility mode
# of ash such as alpine.
# However, it's not fatal that pipefail doesn't work for this script.
#
set -o errexit set -o errexit
set -o nounset set -o nounset
set -o pipefail #set -o pipefail
#----------------------------------------------------------- #-----------------------------------------------------------
# Common variables # Common variables
@ -70,10 +78,12 @@ CONFIGURE_OPTIONS="CXXFLAGS='-O -std=c++03 -DS3FS_PTHREAD_ERRORCHECK=1' --prefix
PACKAGE_ENABLE_REPO_OPTIONS="" PACKAGE_ENABLE_REPO_OPTIONS=""
PACKAGE_INSTALL_ADDITIONAL_OPTIONS="" PACKAGE_INSTALL_ADDITIONAL_OPTIONS=""
SHELLCHECK_DIRECT_INSTALL=0 SHELLCHECK_DIRECT_INSTALL=0
AWSCLI_DIRECT_INSTALL=1
if [ "${CONTAINER_FULLNAME}" = "ubuntu:22.04" ]; then if [ "${CONTAINER_FULLNAME}" = "ubuntu:22.04" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -82,6 +92,7 @@ if [ "${CONTAINER_FULLNAME}" = "ubuntu:22.04" ]; then
elif [ "${CONTAINER_FULLNAME}" = "ubuntu:20.04" ]; then elif [ "${CONTAINER_FULLNAME}" = "ubuntu:20.04" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -90,6 +101,7 @@ elif [ "${CONTAINER_FULLNAME}" = "ubuntu:20.04" ]; then
elif [ "${CONTAINER_FULLNAME}" = "ubuntu:18.04" ]; then elif [ "${CONTAINER_FULLNAME}" = "ubuntu:18.04" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -98,6 +110,7 @@ elif [ "${CONTAINER_FULLNAME}" = "ubuntu:18.04" ]; then
elif [ "${CONTAINER_FULLNAME}" = "ubuntu:16.04" ]; then elif [ "${CONTAINER_FULLNAME}" = "ubuntu:16.04" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -106,6 +119,7 @@ elif [ "${CONTAINER_FULLNAME}" = "ubuntu:16.04" ]; then
elif [ "${CONTAINER_FULLNAME}" = "debian:bullseye" ]; then elif [ "${CONTAINER_FULLNAME}" = "debian:bullseye" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl procps python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl procps python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -114,6 +128,7 @@ elif [ "${CONTAINER_FULLNAME}" = "debian:bullseye" ]; then
elif [ "${CONTAINER_FULLNAME}" = "debian:buster" ]; then elif [ "${CONTAINER_FULLNAME}" = "debian:buster" ]; then
PACKAGE_MANAGER_BIN="apt-get" PACKAGE_MANAGER_BIN="apt-get"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl procps python3-pip unzip" INSTALL_PACKAGES="autoconf autotools-dev default-jre-headless fuse libfuse-dev libcurl4-openssl-dev libxml2-dev locales-all mime-support libtool pkg-config libssl-dev attr curl procps python3-pip unzip"
INSTALL_CHECKER_PKGS="cppcheck shellcheck" INSTALL_CHECKER_PKGS="cppcheck shellcheck"
@ -122,6 +137,7 @@ elif [ "${CONTAINER_FULLNAME}" = "debian:buster" ]; then
elif [ "${CONTAINER_FULLNAME}" = "rockylinux:9" ]; then elif [ "${CONTAINER_FULLNAME}" = "rockylinux:9" ]; then
PACKAGE_MANAGER_BIN="dnf" PACKAGE_MANAGER_BIN="dnf"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
PACKAGE_ENABLE_REPO_OPTIONS="--enablerepo=crb" PACKAGE_ENABLE_REPO_OPTIONS="--enablerepo=crb"
# [NOTE] # [NOTE]
@ -142,6 +158,7 @@ elif [ "${CONTAINER_FULLNAME}" = "rockylinux:9" ]; then
elif [ "${CONTAINER_FULLNAME}" = "rockylinux:8" ]; then elif [ "${CONTAINER_FULLNAME}" = "rockylinux:8" ]; then
PACKAGE_MANAGER_BIN="dnf" PACKAGE_MANAGER_BIN="dnf"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel attr diffutils curl python3 unzip" INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel attr diffutils curl python3 unzip"
INSTALL_CHECKER_PKGS="cppcheck" INSTALL_CHECKER_PKGS="cppcheck"
@ -155,6 +172,7 @@ elif [ "${CONTAINER_FULLNAME}" = "rockylinux:8" ]; then
elif [ "${CONTAINER_FULLNAME}" = "centos:centos7" ]; then elif [ "${CONTAINER_FULLNAME}" = "centos:centos7" ]; then
PACKAGE_MANAGER_BIN="yum" PACKAGE_MANAGER_BIN="yum"
PACKAGE_UPDATE_OPTIONS="update -y" PACKAGE_UPDATE_OPTIONS="update -y"
PACKAGE_INSTALL_OPTIONS="install -y"
# [NOTE] # [NOTE]
# ShellCheck version(0.3.8) is too low to check. # ShellCheck version(0.3.8) is too low to check.
@ -168,6 +186,7 @@ elif [ "${CONTAINER_FULLNAME}" = "centos:centos7" ]; then
elif [ "${CONTAINER_FULLNAME}" = "fedora:37" ]; then elif [ "${CONTAINER_FULLNAME}" = "fedora:37" ]; then
PACKAGE_MANAGER_BIN="dnf" PACKAGE_MANAGER_BIN="dnf"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
# TODO: Cannot use java-latest-openjdk (17) due to modules issue in S3Proxy/jclouds/Guice # TODO: Cannot use java-latest-openjdk (17) due to modules issue in S3Proxy/jclouds/Guice
INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel curl attr diffutils procps python3-pip unzip" INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel curl attr diffutils procps python3-pip unzip"
@ -177,6 +196,7 @@ elif [ "${CONTAINER_FULLNAME}" = "fedora:37" ]; then
elif [ "${CONTAINER_FULLNAME}" = "fedora:36" ]; then elif [ "${CONTAINER_FULLNAME}" = "fedora:36" ]; then
PACKAGE_MANAGER_BIN="dnf" PACKAGE_MANAGER_BIN="dnf"
PACKAGE_UPDATE_OPTIONS="update -y -qq" PACKAGE_UPDATE_OPTIONS="update -y -qq"
PACKAGE_INSTALL_OPTIONS="install -y"
# TODO: Cannot use java-latest-openjdk (17) due to modules issue in S3Proxy/jclouds/Guice # TODO: Cannot use java-latest-openjdk (17) due to modules issue in S3Proxy/jclouds/Guice
INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel curl attr diffutils procps python3-pip unzip" INSTALL_PACKAGES="curl-devel fuse fuse-devel gcc libstdc++-devel gcc-c++ glibc-langpack-en java-11-openjdk-headless libxml2-devel mailcap git automake make openssl-devel curl attr diffutils procps python3-pip unzip"
@ -186,11 +206,23 @@ elif [ "${CONTAINER_FULLNAME}" = "fedora:36" ]; then
elif [ "${CONTAINER_FULLNAME}" = "opensuse/leap:15" ]; then elif [ "${CONTAINER_FULLNAME}" = "opensuse/leap:15" ]; then
PACKAGE_MANAGER_BIN="zypper" PACKAGE_MANAGER_BIN="zypper"
PACKAGE_UPDATE_OPTIONS="refresh" PACKAGE_UPDATE_OPTIONS="refresh"
PACKAGE_INSTALL_OPTIONS="install -y"
INSTALL_PACKAGES="automake curl-devel fuse fuse-devel gcc-c++ java-11-openjdk-headless libxml2-devel make openssl-devel python3-pip curl attr ShellCheck unzip" INSTALL_PACKAGES="automake curl-devel fuse fuse-devel gcc-c++ java-11-openjdk-headless libxml2-devel make openssl-devel python3-pip curl attr ShellCheck unzip"
INSTALL_CHECKER_PKGS="cppcheck ShellCheck" INSTALL_CHECKER_PKGS="cppcheck ShellCheck"
INSTALL_CHECKER_PKG_OPTIONS="" INSTALL_CHECKER_PKG_OPTIONS=""
elif [ "${CONTAINER_FULLNAME}" = "alpine:3.17" ]; then
PACKAGE_MANAGER_BIN="apk"
PACKAGE_UPDATE_OPTIONS="update --no-progress"
PACKAGE_INSTALL_OPTIONS="add --no-progress --no-cache"
INSTALL_PACKAGES="bash curl g++ make automake autoconf libtool git curl-dev fuse-dev libxml2-dev coreutils procps attr sed mailcap openjdk11 aws-cli"
INSTALL_CHECKER_PKGS="cppcheck shellcheck"
INSTALL_CHECKER_PKG_OPTIONS=""
AWSCLI_DIRECT_INSTALL=0
else else
echo "No container configured for: ${CONTAINER_FULLNAME}" echo "No container configured for: ${CONTAINER_FULLNAME}"
exit 1 exit 1
@ -209,10 +241,10 @@ echo "${PRGNAME} [INFO] Updates."
# Install packages ( with cppcheck ) # Install packages ( with cppcheck )
# #
echo "${PRGNAME} [INFO] Install packages." echo "${PRGNAME} [INFO] Install packages."
/bin/sh -c "${PACKAGE_MANAGER_BIN} ${PACKAGE_ENABLE_REPO_OPTIONS} install -y ${PACKAGE_INSTALL_ADDITIONAL_OPTIONS} ${INSTALL_PACKAGES}" /bin/sh -c "${PACKAGE_MANAGER_BIN} ${PACKAGE_ENABLE_REPO_OPTIONS} ${PACKAGE_INSTALL_OPTIONS} ${PACKAGE_INSTALL_ADDITIONAL_OPTIONS} ${INSTALL_PACKAGES}"
echo "${PRGNAME} [INFO] Install cppcheck package." echo "${PRGNAME} [INFO] Install cppcheck package."
/bin/sh -c "${PACKAGE_MANAGER_BIN} ${INSTALL_CHECKER_PKG_OPTIONS} install -y ${INSTALL_CHECKER_PKGS}" /bin/sh -c "${PACKAGE_MANAGER_BIN} ${INSTALL_CHECKER_PKG_OPTIONS} ${PACKAGE_INSTALL_OPTIONS} ${INSTALL_CHECKER_PKGS}"
# #
# Install ShellCheck manually # Install ShellCheck manually
@ -242,13 +274,18 @@ java -version
# #
# Install awscli # Install awscli
# #
echo "${PRGNAME} [INFO] Install awscli2 package." if [ "${AWSCLI_DIRECT_INSTALL}" -eq 1 ]; then
CURRENT_DIR=$(pwd) echo "${PRGNAME} [INFO] Install awscli2 package."
cd /tmp
curl "${AWSCLI_URI}" -o "${AWSCLI_ZIP_FILE}" CURRENT_DIR=$(pwd)
unzip "${AWSCLI_ZIP_FILE}" cd /tmp || exit 1
./aws/install
cd "${CURRENT_DIR}" curl "${AWSCLI_URI}" -o "${AWSCLI_ZIP_FILE}"
unzip "${AWSCLI_ZIP_FILE}"
./aws/install
cd "${CURRENT_DIR}" || exit 1
fi
#----------------------------------------------------------- #-----------------------------------------------------------
# Set environment for configure # Set environment for configure

View File

@ -33,7 +33,8 @@ echo "--- Finished commit hash file ---"
echo "--- Start autotools -------------" echo "--- Start autotools -------------"
aclocal \ autoupdate \
&& aclocal \
&& autoheader \ && autoheader \
&& automake --add-missing \ && automake --add-missing \
&& autoconf && autoconf
@ -47,6 +48,6 @@ exit 0
# tab-width: 4 # tab-width: 4
# c-basic-offset: 4 # c-basic-offset: 4
# End: # End:
# vim600: expandtab sw=4 ts= fdm=marker # vim600: expandtab sw=4 ts=4 fdm=marker
# vim<600: expandtab sw=4 ts=4 # vim<600: expandtab sw=4 ts=4
# #

View File

@ -1957,6 +1957,9 @@ bool S3fsCurl::ResetHandle(AutoLock::Type locktype)
if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_NOPROGRESS, 0)){ if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_NOPROGRESS, 0)){
return false; return false;
} }
// [NOTE]
// CURLOPT_PROGRESSFUNCTION should be changed to CURLOPT_XFERINFOFUNCTION,
// but CnetOS7's curl version is old, so it haven't been changed yet.
if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_PROGRESSFUNCTION, S3fsCurl::CurlProgress)){ if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_PROGRESSFUNCTION, S3fsCurl::CurlProgress)){
return false; return false;
} }
@ -3020,7 +3023,7 @@ int S3fsCurl::GetIAMv2ApiToken(const char* token_url, int token_ttl, const char*
// Expect header is empty before the request is sent. // Expect header is empty before the request is sent.
requestHeaders = curl_slist_sort_insert(requestHeaders, "Expect", ""); requestHeaders = curl_slist_sort_insert(requestHeaders, "Expect", "");
if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_PUT, true)){ if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_UPLOAD, true)){
return -EIO; return -EIO;
} }
if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_URL, url.c_str())){ if(CURLE_OK != curl_easy_setopt(hCurl, CURLOPT_URL, url.c_str())){

View File

@ -749,7 +749,7 @@ function test_hardlink {
( (
set +o pipefail set +o pipefail
ln "${TEST_TEXT_FILE}" "${ALT_TEST_TEXT_FILE}" 2>&1 | grep -q 'Operation not supported' ln "${TEST_TEXT_FILE}" "${ALT_TEST_TEXT_FILE}" 2>&1 | grep -q -e 'Operation not supported' -e 'Not supported'
) )
rm_test_file rm_test_file
@ -1796,11 +1796,17 @@ function test_overwrite_existing_file_range {
describe "Test overwrite range succeeds ..." describe "Test overwrite range succeeds ..."
dd if=<(seq 1000) of="${TEST_TEXT_FILE}" dd if=<(seq 1000) of="${TEST_TEXT_FILE}"
dd if=/dev/zero of="${TEST_TEXT_FILE}" seek=1 count=1 bs=1024 conv=notrunc dd if=/dev/zero of="${TEST_TEXT_FILE}" seek=1 count=1 bs=1024 conv=notrunc
cmp "${TEST_TEXT_FILE}" <(
seq 1000 | head -c 1024 # [NOTE]
dd if=/dev/zero count=1 bs=1024 # In ALPINE, comparisons using redirects often fail.
seq 1000 | tail -c +2049 # Therefore, create a real file for comparison and use it.
) #
dd if=<(seq 1000) of=/tmp/cmp_base_file
dd if=/dev/zero of=/tmp/cmp_base_file seek=1 count=1 bs=1024 conv=notrunc
cmp "${TEST_TEXT_FILE}" /tmp/cmp_base_file
rm_test_file /tmp/cmp_base_file
rm_test_file rm_test_file
} }