diff --git a/.github/workflows/package_linux.yml b/.github/workflows/package_linux.yml index 4dc9a70e8798..e23f70961062 100644 --- a/.github/workflows/package_linux.yml +++ b/.github/workflows/package_linux.yml @@ -89,28 +89,28 @@ jobs: fail-fast: false matrix: id: - - almalinux-8-amd64 - - almalinux-8-arm64 - - almalinux-9-amd64 - - almalinux-9-arm64 - - almalinux-10-amd64 - - almalinux-10-arm64 - - amazon-linux-2023-amd64 - - amazon-linux-2023-arm64 - - centos-9-stream-amd64 - - centos-9-stream-arm64 - - debian-bookworm-amd64 - - debian-bookworm-arm64 + # - almalinux-8-amd64 + # - almalinux-8-arm64 + # - almalinux-9-amd64 + # - almalinux-9-arm64 + # - almalinux-10-amd64 + # - almalinux-10-arm64 + # - amazon-linux-2023-amd64 + # - amazon-linux-2023-arm64 + # - centos-9-stream-amd64 + # - centos-9-stream-arm64 + # - debian-bookworm-amd64 + # - debian-bookworm-arm64 - debian-trixie-amd64 - - debian-trixie-arm64 - - debian-forky-amd64 - - debian-forky-arm64 - - ubuntu-jammy-amd64 - - ubuntu-jammy-arm64 - - ubuntu-noble-amd64 - - ubuntu-noble-arm64 + # - debian-trixie-arm64 + # - debian-forky-amd64 + # - debian-forky-arm64 + # - ubuntu-jammy-amd64 + # - ubuntu-jammy-arm64 + # - ubuntu-noble-amd64 + # - ubuntu-noble-arm64 env: - DOCKER_VOLUME_PREFIX: ".docker/" + BUILD_DIR: "${{ github.workspace }}/packages.build" steps: - name: Checkout Arrow uses: actions/checkout@v6 @@ -182,17 +182,18 @@ jobs: version="${GITHUB_REF_NAME#apache-arrow-}" echo "ARROW_VERSION=${version}" >> "${GITHUB_ENV}" fi - - name: Cache Docker Volumes + - name: Cache ccache uses: actions/cache@v5 with: - path: .docker + path: ${{ env.BUILD_DIR }}/ccache key: package-linux-${{ matrix.id }}-${{ hashFiles('cpp/**', 'c_glib/**') }} restore-keys: package-linux-${{ matrix.id }}- - - name: Set up Ruby + - name: Install dependencies run: | sudo apt update sudo apt install -y \ rake \ + reprotest \ ruby \ ruby-dev - name: Prepare apache-arrow-apt-source for arm64 @@ -235,10 +236,17 @@ jobs: env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | - pushd dev/tasks/linux-packages - rake docker:pull || : - rake --trace ${TASK_NAMESPACE}:build BUILD_DIR=build - popd + rake -C dev/tasks/linux-packages docker:pull || : + if [ "${TASK_NAMESPACE}" = "apt" ]; then + reprotest \ + --vary=-fileordering \ + --build-command \ + "rake -C dev/tasks/linux-packages ${TASK_NAMESPACE}:build" \ + "${PWD}" \ + "dev/tasks/linux-packages/*/apt/repositories/${DISTRIBUTION}/pool/${DISTRIBUTION_CODE_NAME}/*/*/*/*.deb" + else + rake -C dev/tasks/linux-packages ${TASK_NAMESPACE}:build + fi - name: Docker Push continue-on-error: true if: >- @@ -246,9 +254,7 @@ jobs: github.event_name == 'push' && github.ref_name == 'main' run: | - pushd dev/tasks/linux-packages - rake docker:push - popd + rake -C dev/tasks/linux-packages docker:push - name: Build artifact tarball run: | mkdir -p "${DISTRIBUTION}" diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake index fa8221b4a042..db82d6644373 100644 --- a/cpp/cmake_modules/ThirdpartyToolchain.cmake +++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake @@ -3365,8 +3365,20 @@ function(build_google_cloud_cpp_storage) # List of dependencies taken from https://github.com/googleapis/google-cloud-cpp/blob/main/doc/packaging.md build_crc32c_once() + set(PATCH_COMMAND) + find_program(PATCH patch) + if(PATCH) + list(APPEND + PATCH_COMMAND + ${PATCH} + -p1 + -i + ${CMAKE_CURRENT_LIST_DIR}/google-cloud-cpp-reproducible-builds.patch) + endif() + fetchcontent_declare(google_cloud_cpp ${FC_DECLARE_COMMON_OPTIONS} + PATCH_COMMAND ${PATCH_COMMAND} URL ${google_cloud_cpp_storage_SOURCE_URL} URL_HASH "SHA256=${ARROW_GOOGLE_CLOUD_CPP_BUILD_SHA256_CHECKSUM}") @@ -3843,6 +3855,15 @@ function(build_awssdk) prepare_fetchcontent() set(BUILD_DEPS OFF) set(BUILD_TOOL OFF) + # This is for aws-lc. -ffile-prefix-map is needed for reproducible + # builds. If ASM flags doesn't have --file-prefix-map, it may + # produce different binaries. Only aws-lc uses assembler. So this is + # for aws-lc. + if(CMAKE_CXX_FLAGS MATCHES "-ffile-prefix-map=" AND NOT CMAKE_ASM_FLAGS MATCHES + "-ffile-prefix-map=") + string(REGEX MATCH " -ffile-prefix-map=[^ ]+ " FFILE_PREFIX_MAP "${CMAKE_CXX_FLAGS}") + string(APPEND CMAKE_ASM_FLAGS "${FFILE_PREFIX_MAP}") + endif() set(CMAKE_UNITY_BUILD OFF) # Unity build causes some build errors. set(ENABLE_TESTING OFF) set(IN_SOURCE_BUILD ON) diff --git a/cpp/cmake_modules/google-cloud-cpp-reproducible-builds.patch b/cpp/cmake_modules/google-cloud-cpp-reproducible-builds.patch new file mode 100644 index 000000000000..d0fe4e380cfa --- /dev/null +++ b/cpp/cmake_modules/google-cloud-cpp-reproducible-builds.patch @@ -0,0 +1,25 @@ +From 252064718ccbeec5e4dee45d017036a84ab0c61c Mon Sep 17 00:00:00 2001 +From: Sutou Kouhei +Date: Sat, 31 Jan 2026 21:18:30 +0900 +Subject: [PATCH] Don't embed compiler flags for reproducible builds + +--- + google/cloud/internal/build_info.cc.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/google/cloud/internal/build_info.cc.in b/google/cloud/internal/build_info.cc.in +index 3251870130..d120f580de 100644 +--- a/google/cloud/internal/build_info.cc.in ++++ b/google/cloud/internal/build_info.cc.in +@@ -30,7 +30,7 @@ std::string compiler() { + // NOLINTNEXTLINE(readability-identifier-naming) + std::string compiler_flags() { + static char const kCompilerFlags[] = +- R"""(@CMAKE_CXX_FLAGS@ ${CMAKE_CXX_FLAGS_${GOOGLE_CLOUD_CPP_BUILD_TYPE_UPPER}})"""; ++ R"""(REDACTED FOR REPRODUCIBLE BUILDS)"""; + return kCompilerFlags; + } + +-- +2.51.0 + diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt index d9f04a627bc5..bd07ac02914e 100644 --- a/cpp/src/arrow/CMakeLists.txt +++ b/cpp/src/arrow/CMakeLists.txt @@ -348,6 +348,9 @@ string(REPLACE "${CMAKE_SOURCE_DIR}" "" REDACTED_CXX_FLAGS ${CMAKE_CXX_FLAGS}) string(REPLACE "${CMAKE_BINARY_DIR}" "" REDACTED_CXX_FLAGS ${REDACTED_CXX_FLAGS}) +cmake_path(GET PROJECT_SOURCE_DIR PARENT_PATH ARROW_PROJECT_SOURCE_DIR) +string(REPLACE "${ARROW_PROJECT_SOURCE_DIR}" "" + REDACTED_CXX_FLAGS ${REDACTED_CXX_FLAGS}) configure_file("util/config.h.cmake" "util/config.h" ESCAPE_QUOTES) configure_file("util/config_internal.h.cmake" "util/config_internal.h" ESCAPE_QUOTES) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/util/config.h" diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/Rakefile b/dev/tasks/linux-packages/apache-arrow-apt-source/Rakefile index 0be9d85c28db..d433ca9509b5 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/Rakefile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/Rakefile @@ -36,8 +36,16 @@ class ApacheArrowAptSourcePackageTask < PackageTask file @archive_name do rm_rf(@archive_base_name) mkdir(@archive_base_name) - download("https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/KEYS", - "#{@archive_base_name}/KEYS") + + faketime = ENV["FAKETIME"] + begin + # Disable faketime to avoid TLS verification error. + ENV["FAKETIME"] = nil + download("https://www.apache.org/dyn/closer.lua?action=download&filename=arrow/KEYS", + "#{@archive_base_name}/KEYS") + ensure + ENV["FAKETIME"] = faketime + end sh("tar", "czf", @archive_name, @archive_base_name) rm_rf(@archive_base_name) end diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-bookworm/Dockerfile b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-bookworm/Dockerfile index f9541efdeef5..5251b18f59e7 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-bookworm/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-bookworm/Dockerfile @@ -36,5 +36,6 @@ RUN \ devscripts \ fakeroot \ gnupg \ + libfaketime \ lsb-release && \ apt clean diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-forky/Dockerfile b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-forky/Dockerfile index e4bbab4a16b0..10295623ebe6 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-forky/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-forky/Dockerfile @@ -37,5 +37,6 @@ RUN \ devscripts \ fakeroot \ gnupg \ + libfaketime \ lsb-release && \ apt clean diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-trixie/Dockerfile b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-trixie/Dockerfile index 1cab2169f4a0..e52c81360f5e 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-trixie/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/debian-trixie/Dockerfile @@ -37,5 +37,6 @@ RUN \ devscripts \ fakeroot \ gnupg \ + libfaketime \ lsb-release && \ apt clean diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-jammy/Dockerfile b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-jammy/Dockerfile index df911b918cfa..f16898d31269 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-jammy/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-jammy/Dockerfile @@ -36,6 +36,7 @@ RUN \ devscripts \ fakeroot \ gnupg \ + libfaketime \ lsb-release && \ apt clean && \ rm -rf /var/lib/apt/lists/* diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-noble/Dockerfile b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-noble/Dockerfile index 0e37ee94bb0a..5af76d13e34c 100644 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-noble/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/apt/ubuntu-noble/Dockerfile @@ -36,6 +36,7 @@ RUN \ devscripts \ fakeroot \ gnupg \ + libfaketime \ lsb-release && \ apt clean && \ rm -rf /var/lib/apt/lists/* diff --git a/dev/tasks/linux-packages/apache-arrow-apt-source/debian/rules b/dev/tasks/linux-packages/apache-arrow-apt-source/debian/rules index 1e3be48c3150..2a3c14c558fe 100755 --- a/dev/tasks/linux-packages/apache-arrow-apt-source/debian/rules +++ b/dev/tasks/linux-packages/apache-arrow-apt-source/debian/rules @@ -12,10 +12,12 @@ export DH_OPTIONS override_dh_auto_build: gpg \ --no-default-keyring \ + --homedir /tmp \ --keyring ./apache-arrow-apt-source.kbx \ --import KEYS gpg \ --no-default-keyring \ + --homedir /tmp \ --keyring ./apache-arrow-apt-source.kbx \ --armor \ --export > apache-arrow-apt-source.asc diff --git a/dev/tasks/linux-packages/apache-arrow/apt/debian-bookworm/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/debian-bookworm/Dockerfile index ec3bf7751d2d..9a068b674a9c 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/debian-bookworm/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/debian-bookworm/Dockerfile @@ -50,6 +50,7 @@ RUN \ libbz2-dev \ libc-ares-dev \ libcurl4-openssl-dev \ + libfaketime \ libgirepository1.0-dev \ libglib2.0-doc \ libgmock-dev \ diff --git a/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile index bfb3728b57b8..11ba79a552dc 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/debian-forky/Dockerfile @@ -51,6 +51,7 @@ RUN \ libbz2-dev \ libc-ares-dev \ libcurl4-openssl-dev \ + libfaketime \ libgirepository1.0-dev \ libglib2.0-doc \ libgmock-dev \ diff --git a/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile index 257d00565665..8f7c37f72502 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/debian-trixie/Dockerfile @@ -39,6 +39,7 @@ RUN \ apt install -y -V ${quiet} \ base-files \ build-essential \ + ccache \ clang \ cmake \ debhelper \ @@ -51,6 +52,7 @@ RUN \ libbz2-dev \ libc-ares-dev \ libcurl4-openssl-dev \ + libfaketime \ libgirepository1.0-dev \ libglib2.0-doc \ libgmock-dev \ diff --git a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile index 40e1d0ab4a65..20f66ee32b93 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-jammy/Dockerfile @@ -45,6 +45,7 @@ RUN \ libbz2-dev \ libc-ares-dev \ libcurl4-openssl-dev \ + libfaketime \ libgirepository1.0-dev \ libglib2.0-doc \ libgmock-dev \ diff --git a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-noble/Dockerfile b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-noble/Dockerfile index f5f5e12f4d56..5a9a55000cc4 100644 --- a/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-noble/Dockerfile +++ b/dev/tasks/linux-packages/apache-arrow/apt/ubuntu-noble/Dockerfile @@ -45,6 +45,7 @@ RUN \ libbz2-dev \ libc-ares-dev \ libcurl4-openssl-dev \ + libfaketime \ libgirepository1.0-dev \ libglib2.0-doc \ libgmock-dev \ diff --git a/dev/tasks/linux-packages/apache-arrow/debian/control.in b/dev/tasks/linux-packages/apache-arrow/debian/control.in index 78f435a0fc9e..b708cc4cc312 100644 --- a/dev/tasks/linux-packages/apache-arrow/debian/control.in +++ b/dev/tasks/linux-packages/apache-arrow/debian/control.in @@ -381,6 +381,17 @@ Description: Apache Arrow is a data processing library for analysis . This package provides GLib based library files for CUDA support. +Package: libarrow-cuda-glib-doc +Section: doc +Architecture: any +Multi-Arch: foreign +Depends: + ${misc:Depends} +Recommends: libarrow-glib-doc +Description: Apache Arrow is a data processing library for analysis + . + This package provides documentations for CUDA support. + Package: gir1.2-arrow-cuda-24.0 Section: introspection Architecture: @CUDA_ARCHITECTURE@ diff --git a/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.doc-base b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.doc-base new file mode 100644 index 000000000000..f7f29f811eb3 --- /dev/null +++ b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.doc-base @@ -0,0 +1,9 @@ +Document: arrow-cuda-glib +Title: Apache Arrow CUDA GLib Reference Manual +Author: The Apache Software Foundation +Abstract: Apache Arrow CUDA GLib provides an API for CUDA integration. +Section: Programming + +Format: HTML +Index: /usr/share/doc/libarrow-cuda-glib-doc/arrow-cuda-glib/index.html +Files: /usr/share/doc/libarrow-cuda-glib-doc/arrow-cuda-glib/*.html diff --git a/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.install b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.install new file mode 100644 index 000000000000..24a3c0db2619 --- /dev/null +++ b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.install @@ -0,0 +1 @@ +usr/share/doc/arrow-cuda-glib usr/share/doc/libarrow-cuda-glib-doc/ diff --git a/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.links b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.links new file mode 100644 index 000000000000..b0e7594b7042 --- /dev/null +++ b/dev/tasks/linux-packages/apache-arrow/debian/libarrow-cuda-glib-doc.links @@ -0,0 +1,5 @@ +usr/share/doc/libarrow-cuda-glib-doc/arrow-cuda-glib usr/share/devhelp/books/arrow-cuda-glib +usr/share/doc/libarrow-glib-doc/arrow-glib usr/share/doc/libarrow-cuda-glib-doc/arrow-glib +usr/share/doc/libglib2.0-doc/gio usr/share/doc/libarrow-cuda-glib-doc/gio +usr/share/doc/libglib2.0-doc/glib usr/share/doc/libarrow-cuda-glib-doc/glib +usr/share/doc/libglib2.0-doc/gobject usr/share/doc/libarrow-cuda-glib-doc/gobject diff --git a/dev/tasks/linux-packages/apache-arrow/debian/rules b/dev/tasks/linux-packages/apache-arrow/debian/rules index 19dba393b146..aa044e5be77f 100755 --- a/dev/tasks/linux-packages/apache-arrow/debian/rules +++ b/dev/tasks/linux-packages/apache-arrow/debian/rules @@ -85,13 +85,17 @@ override_dh_auto_build: --buildsystem=meson+ninja override_dh_auto_install: + dh_auto_install \ + --sourcedirectory=cpp \ + --builddirectory=cpp_build dh_auto_install \ --sourcedirectory=c_glib \ --builddirectory=c_glib_build \ --buildsystem=meson+ninja - dh_auto_install \ - --sourcedirectory=cpp \ - --builddirectory=cpp_build + sed \ + -i \ + -e "s,$(CURDIR)/c_glib/../cpp_build/$(BUILD_TYPE),/usr/lib/$$(dpkg-architecture -qDEB_HOST_MULTIARCH),g" \ + debian/tmp/usr/lib/$$(dpkg-architecture -qDEB_HOST_MULTIARCH)/pkgconfig/*.pc override_dh_auto_test: # TODO: We need Boost 1.64 or later to build tests for diff --git a/dev/tasks/linux-packages/apt/build.sh b/dev/tasks/linux-packages/apt/build.sh index bc4c61e62210..7b74cd32469b 100755 --- a/dev/tasks/linux-packages/apt/build.sh +++ b/dev/tasks/linux-packages/apt/build.sh @@ -33,6 +33,22 @@ run() . /host/env.sh +umask "${UMASK}" + +if [ -n "${CPU_LIST:-}" ]; then + taskset -a -c "${CPU_LIST}" +fi + +if [ -n "${FAKETIME:-}" ]; then + lib_dir="/usr/lib/$(dpkg-architecture -q DEB_BUILD_MULTIARCH)" + libfaketime="${lib_dir}/faketime/libfaketime.so.1" + if [ ! -f "${libfaketime}" ]; then + echo "You must install libfaktime: ${libfaketime} doesn't exist" + exit 1 + fi + export LD_PRELOAD="${libfaketime}" +fi + distribution=$(lsb_release --id --short | tr 'A-Z' 'a-z') code_name=$(lsb_release --codename --short) case "${distribution}" in @@ -48,8 +64,9 @@ architecture=$(dpkg-architecture -q DEB_BUILD_ARCH) debuild_options=() dpkg_buildpackage_options=(-us -uc) -run mkdir -p /build -run cd /build +build_root_dir="/build" +run mkdir -p "${build_root_dir}" +run pushd "${build_root_dir}" find . -not -path ./ccache -a -not -path "./ccache/*" -delete if which ccache > /dev/null 2>&1; then export CCACHE_COMPILERCHECK=content @@ -67,6 +84,8 @@ if which ccache > /dev/null 2>&1; then debuild_options+=(--prepend-path=/usr/lib/ccache) fi fi +build_dir=$(mktemp --directory --tmpdir="${build_root_dir}" package.XXXXX) +run pushd "${build_dir}" run cp /host/tmp/${PACKAGE}-${VERSION}.tar.gz \ ${PACKAGE}_${VERSION}.orig.tar.gz run tar xfz ${PACKAGE}_${VERSION}.orig.tar.gz @@ -80,7 +99,7 @@ case "${VERSION}" in ${PACKAGE}-${VERSION} ;; esac -run cd ${PACKAGE}-${VERSION}/ +run pushd ${PACKAGE}-${VERSION}/ platform="${distribution}-${code_name}" if [ -d "/host/tmp/debian.${platform}-${architecture}" ]; then run cp -rp "/host/tmp/debian.${platform}-${architecture}" debian @@ -102,7 +121,7 @@ df -h if which ccache > /dev/null 2>&1; then ccache --show-stats --verbose || : fi -run cd - +run popd repositories="/host/repositories" package_initial=$(echo "${PACKAGE}" | sed -e 's/\(.\).*/\1/') @@ -116,3 +135,6 @@ run \ -exec cp '{}' "${pool_dir}/" ';' run chown -R "$(stat --format "%u:%g" "${repositories}")" "${repositories}" + +run popd +rm -rf "${build_dir}" diff --git a/dev/tasks/linux-packages/package-task.rb b/dev/tasks/linux-packages/package-task.rb index caaea708e764..2f1ffa2a9961 100644 --- a/dev/tasks/linux-packages/package-task.rb +++ b/dev/tasks/linux-packages/package-task.rb @@ -149,14 +149,23 @@ def docker_run(os, architecture, console: false) run_command_line.concat(["--env", "DEBUG=yes"]) end pass_through_env_names = [ + "CPU_LIST", "DEB_BUILD_OPTIONS", + "FAKETIME", + "HOME", + "LANG", + "LANGUAGE", + "LC_ALL", + "NO_FAKE_STAT", "RPM_BUILD_NCPUS", + "TZ", ] pass_through_env_names.each do |name| value = ENV[name] next unless value run_command_line.concat(["--env", "#{name}=#{value}"]) end + run_command_line.concat(["--env", "UMASK=%04o" % File.umask]) if File.exist?(File.join(id, "Dockerfile")) docker_context = id else @@ -188,7 +197,7 @@ def docker_run(os, architecture, console: false) run_command_line << image run_command_line << "/host/build.sh" unless console - sh(*build_command_line) + sh(*build_command_line) if Dir.exist?(ENV["HOME"]) sh(*run_command_line) end