This is an automated email from the ASF dual-hosted git repository.

kszucs pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new e2625d2  ARROW-12440: [Release][Packaging] Various packaging, release 
script and release verification script fixes
e2625d2 is described below

commit e2625d23b8ac4c018dd0615b1d5dcb6927cecd12
Author: Krisztián Szűcs <[email protected]>
AuthorDate: Sun Apr 18 18:01:02 2021 +0200

    ARROW-12440: [Release][Packaging] Various packaging, release script and 
release verification script fixes
    
    Closes #10091 from kszucs/fix-release-scripts
    
    Authored-by: Krisztián Szűcs <[email protected]>
    Signed-off-by: Krisztián Szűcs <[email protected]>
---
 .github/workflows/archery.yml                     |   2 +-
 dev/archery/archery/crossbow/cli.py               |   1 +
 dev/archery/archery/release.py                    |   2 +-
 dev/release/01-prepare-test.rb                    | 187 +++++++++++++++++----
 dev/release/01-prepare.sh                         | 190 +---------------------
 dev/release/03-binary-submit.sh                   |  10 +-
 dev/release/04-binary-download.sh                 |   3 +-
 dev/release/05-binary-upload.sh                   |   5 +-
 dev/release/binary-task.rb                        |  22 ++-
 dev/release/post-02-binary.sh                     |   2 +-
 dev/release/post-12-version.sh                    |  79 +++++++++
 dev/release/{binary-common.sh => utils-binary.sh} |   0
 dev/release/utils-prepare.sh                      | 167 +++++++++++++++++++
 dev/release/verify-apt.sh                         |  29 +++-
 dev/release/verify-release-candidate.sh           |  14 +-
 dev/release/verify-yum.sh                         |  26 ++-
 dev/tasks/conda-recipes/azure.win.yml             |   4 +-
 dev/tasks/tasks.yml                               |   2 +-
 dev/tasks/verify-rc/github.linux.yml              |   1 +
 19 files changed, 487 insertions(+), 259 deletions(-)

diff --git a/.github/workflows/archery.yml b/.github/workflows/archery.yml
index 761e045..9f6880e 100644
--- a/.github/workflows/archery.yml
+++ b/.github/workflows/archery.yml
@@ -43,7 +43,7 @@ jobs:
         with:
           fetch-depth: 0
       - name: Git Fixup
-        if: ${{ github.event_name == 'pull_request' }}
+        if: ${{ github.ref != 'master' }}
         shell: bash
         run: git branch master origin/master
       - name: Free Up Disk Space
diff --git a/dev/archery/archery/crossbow/cli.py 
b/dev/archery/archery/crossbow/cli.py
index 71c25e0..15dbb5d 100644
--- a/dev/archery/archery/crossbow/cli.py
+++ b/dev/archery/archery/crossbow/cli.py
@@ -194,6 +194,7 @@ def render(obj, task, config_path, arrow_version, 
arrow_remote, arrow_branch,
                               head=arrow_sha, version=arrow_version)
     config = Config.load_yaml(config_path)
     params = dict([p.split("=") for p in params])
+    params["queue_remote_url"] = "https://github.com/org/crossbow";
     job = Job.from_config(config=config, target=target, tasks=[task],
                           params=params)
 
diff --git a/dev/archery/archery/release.py b/dev/archery/archery/release.py
index acfe3fc..6baeabc 100644
--- a/dev/archery/archery/release.py
+++ b/dev/archery/archery/release.py
@@ -448,7 +448,7 @@ class MaintenanceMixin:
         if self.version.major == 0:
             # treat minor releases as major releases preceeding 1.0.0 release
             commit_range = "apache-arrow-0.{}.0..master".format(
-                self.version.minor - 1
+                self.version.minor
             )
         else:
             commit_range = "apache-arrow-{}.0.0..master".format(
diff --git a/dev/release/01-prepare-test.rb b/dev/release/01-prepare-test.rb
index b316ad2..96be7d9 100644
--- a/dev/release/01-prepare-test.rb
+++ b/dev/release/01-prepare-test.rb
@@ -30,7 +30,7 @@ class PrepareTest < Test::Unit::TestCase
       git("clone", @original_git_repository.to_s, @test_git_repository.to_s)
       Dir.chdir(@test_git_repository) do
         @tag_name = "apache-arrow-#{@release_version}"
-        @release_branch = "release-#{@release_version}-rc0"
+        @release_branch = "testing-release-#{@release_version}-rc0"
         @script = "dev/release/01-prepare.sh"
         git("checkout", "-b", @release_branch, @current_commit)
         yield
@@ -43,18 +43,18 @@ class PrepareTest < Test::Unit::TestCase
     omit("Not for release branch") if on_release_branch?
   end
 
-  def prepare(*targets)
+  def prepare(script, *targets)
     if targets.last.is_a?(Hash)
       additional_env = targets.pop
     else
       additional_env = {}
     end
-    env = {"PREPARE_DEFAULT" => "0"}
+    env = { "PREPARE_DEFAULT" => "0" }
     targets.each do |target|
       env["PREPARE_#{target}"] = "1"
     end
     env = env.merge(additional_env)
-    sh(env, @script, @release_version, @next_version, "0")
+    sh(env, script, @release_version, @next_version, "0")
   end
 
   def parse_patch(patch)
@@ -64,7 +64,7 @@ class PrepareTest < Test::Unit::TestCase
       case line
       when /\A--- a\//
         path = $POSTMATCH.chomp
-        diffs << {path: path, hunks: []}
+        diffs << { path: path, hunks: [] }
         in_hunk = false
       when /\A@@/
         in_hunk = true
@@ -82,7 +82,8 @@ class PrepareTest < Test::Unit::TestCase
   def test_linux_packages
     user = "Arrow Developers"
     email = "[email protected]"
-    prepare("LINUX_PACKAGES",
+    prepare("dev/release/01-prepare.sh",
+            "LINUX_PACKAGES",
             "DEBFULLNAME" => user,
             "DEBEMAIL" => email)
     changes = parse_patch(git("log", "-n", "1", "-p"))
@@ -90,7 +91,6 @@ class PrepareTest < Test::Unit::TestCase
       {
         path: change[:path],
         sampled_hunks: change[:hunks].collect(&:first),
-        # sampled_hunks: change[:hunks],
       }
     end
     base_dir = "dev/tasks/linux-packages"
@@ -104,8 +104,7 @@ class PrepareTest < Test::Unit::TestCase
         ],
       },
       {
-        path:
-          "#{base_dir}/apache-arrow-release/yum/apache-arrow-release.spec.in",
+        path: 
"#{base_dir}/apache-arrow-release/yum/apache-arrow-release.spec.in",
         sampled_hunks: [
           "+* #{today} #{user} <#{email}> - #{@release_version}-1",
         ],
@@ -128,7 +127,7 @@ class PrepareTest < Test::Unit::TestCase
 
   def test_version_pre_tag
     omit_on_release_branch
-    prepare("VERSION_PRE_TAG")
+    prepare("dev/release/01-prepare.sh", "VERSION_PRE_TAG")
     assert_equal([
                    {
                      path: "c_glib/meson.build",
@@ -180,10 +179,79 @@ class PrepareTest < Test::Unit::TestCase
                      ],
                    },
                    {
+                     path: "java/adapter/avro/pom.xml",
+                     hunks: [
+                       ["-    <version>#{@snapshot_version}</version>",
+                        "+    <version>#{@release_version}</version>"],
+                     ],
+                   },
+                   {
+                     hunks: [
+                       ["-        <version>#{@snapshot_version}</version>",
+                        "+        <version>#{@release_version}</version>"],
+                     ],
+                     path: "java/adapter/jdbc/pom.xml",
+                   },
+                   {
+                     hunks: [
+                       ["-        <version>#{@snapshot_version}</version>",
+                        "+        <version>#{@release_version}</version>"],
+                     ],
+                     path: "java/adapter/orc/pom.xml",
+                   },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/algorithm/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/compression/pom.xml" },
+                   { hunks: [["-        
<version>#{@snapshot_version}</version>",
+                              "+        
<version>#{@release_version}</version>"]],
+                     path: "java/dataset/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/flight/flight-core/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/flight/flight-grpc/pom.xml" },
+                   { hunks: [["-  <version>#{@snapshot_version}</version>", "+ 
 <version>#{@release_version}</version>"]],
+                     path: "java/format/pom.xml" },
+                   { hunks: [["-      <version>#{@snapshot_version}</version>",
+                              "+      
<version>#{@release_version}</version>"]],
+                     path: "java/gandiva/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/memory/memory-core/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/memory/memory-netty/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/memory/memory-unsafe/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/memory/pom.xml" },
+                   { hunks: [["-        
<version>#{@snapshot_version}</version>",
+                              "+        
<version>#{@release_version}</version>"],
+                             ["-            
<version>#{@snapshot_version}</version>",
+                              "+            
<version>#{@release_version}</version>"]],
+                     path: "java/performance/pom.xml" },
+                   { hunks: [["-        
<version>#{@snapshot_version}</version>",
+                              "+        
<version>#{@release_version}</version>"]],
+                     path: "java/plasma/pom.xml" },
+                   { hunks: [["-  <version>#{@snapshot_version}</version>", "+ 
 <version>#{@release_version}</version>"]],
+                     path: "java/pom.xml" },
+                   { hunks: [["-        
<version>#{@snapshot_version}</version>",
+                              "+        
<version>#{@release_version}</version>"]],
+                     path: "java/tools/pom.xml" },
+                   { hunks: [["-    <version>#{@snapshot_version}</version>",
+                              "+    <version>#{@release_version}</version>"]],
+                     path: "java/vector/pom.xml" },
+                   {
                      path: "js/package.json",
                      hunks: [
                        ["-  \"version\": \"#{@snapshot_version}\"",
-                        "+  \"version\": \"#{@release_version}\""]
+                        "+  \"version\": \"#{@release_version}\""],
                      ],
                    },
                    {
@@ -289,11 +357,11 @@ class PrepareTest < Test::Unit::TestCase
                      ],
                    },
                    {
-                    path: "rust/datafusion-examples/Cargo.toml",
-                    hunks: [
-                      ["-version = \"#{@snapshot_version}\"",
-                       "+version = \"#{@release_version}\""],
-                    ],
+                     path: "rust/datafusion-examples/Cargo.toml",
+                     hunks: [
+                       ["-version = \"#{@snapshot_version}\"",
+                        "+version = \"#{@release_version}\""],
+                     ],
                    },
                    {
                      path: "rust/datafusion/Cargo.toml",
@@ -328,7 +396,7 @@ class PrepareTest < Test::Unit::TestCase
                        ["-arrow = { path = \"../arrow\", version = 
\"#{@snapshot_version}\", optional = true }",
                         "+arrow = { path = \"../arrow\", version = 
\"#{@release_version}\", optional = true }"],
                        ["-arrow = { path = \"../arrow\", version = 
\"#{@snapshot_version}\" }",
-                        "+arrow = { path = \"../arrow\", version = 
\"#{@release_version}\" }"]
+                        "+arrow = { path = \"../arrow\", version = 
\"#{@release_version}\" }"],
                      ],
                    },
                    {
@@ -375,10 +443,10 @@ class PrepareTest < Test::Unit::TestCase
 
   def test_version_post_tag
     if on_release_branch?
-      prepare("VERSION_POST_TAG")
+      prepare("dev/release/post-12-version.sh", "VERSION_POST_TAG")
     else
-      prepare("VERSION_PRE_TAG",
-              "VERSION_POST_TAG")
+      prepare("dev/release/01-prepare.sh", "VERSION_PRE_TAG")
+      prepare("dev/release/post-12-version.sh", "VERSION_POST_TAG")
     end
     assert_equal([
                    {
@@ -430,6 +498,63 @@ class PrepareTest < Test::Unit::TestCase
                         "+  url 
\"https://www.apache.org/dyn/closer.lua?path=arrow/arrow-#{@release_version}.9000/apache-arrow-#{@release_version}.9000.tar.gz\"";],
                      ],
                    },
+                   { path: "java/adapter/avro/pom.xml",
+                     hunks: [["-    <version>#{@release_version}</version>",
+                             "+    
<version>#{@next_snapshot_version}</version>"]] },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/adapter/jdbc/pom.xml" },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/adapter/orc/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/algorithm/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/compression/pom.xml" },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/dataset/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/flight/flight-core/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/flight/flight-grpc/pom.xml" },
+                   { hunks: [["-  <version>#{@release_version}</version>", "+  
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/format/pom.xml" },
+                   { hunks: [["-      <version>#{@release_version}</version>",
+                              "+      
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/gandiva/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/memory/memory-core/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/memory/memory-netty/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/memory/memory-unsafe/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/memory/pom.xml" },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"],
+                             ["-            
<version>#{@release_version}</version>",
+                              "+            
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/performance/pom.xml" },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/plasma/pom.xml" },
+                   { hunks: [["-  <version>#{@release_version}</version>", "+  
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/pom.xml" },
+                   { hunks: [["-        
<version>#{@release_version}</version>",
+                              "+        
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/tools/pom.xml" },
+                   { hunks: [["-    <version>#{@release_version}</version>",
+                              "+    
<version>#{@next_snapshot_version}</version>"]],
+                     path: "java/vector/pom.xml" },
                    {
                      path: "js/package.json",
                      hunks: [
@@ -541,11 +666,11 @@ class PrepareTest < Test::Unit::TestCase
                      ],
                    },
                    {
-                    path: "rust/datafusion-examples/Cargo.toml",
-                    hunks: [
-                      ["-version = \"#{@release_version}\"",
-                      "+version = \"#{@next_snapshot_version}\""],
-                  ],
+                     path: "rust/datafusion-examples/Cargo.toml",
+                     hunks: [
+                       ["-version = \"#{@release_version}\"",
+                        "+version = \"#{@next_snapshot_version}\""],
+                     ],
                    },
                    {
                      path: "rust/datafusion/Cargo.toml",
@@ -580,7 +705,7 @@ class PrepareTest < Test::Unit::TestCase
                        ["-arrow = { path = \"../arrow\", version = 
\"#{@release_version}\", optional = true }",
                         "+arrow = { path = \"../arrow\", version = 
\"#{@next_snapshot_version}\", optional = true }"],
                        ["-arrow = { path = \"../arrow\", version = 
\"#{@release_version}\" }",
-                        "+arrow = { path = \"../arrow\", version = 
\"#{@next_snapshot_version}\" }"]
+                        "+arrow = { path = \"../arrow\", version = 
\"#{@next_snapshot_version}\" }"],
                      ],
                    },
                    {
@@ -626,12 +751,12 @@ class PrepareTest < Test::Unit::TestCase
   end
 
   def test_deb_package_names
-    prepare("DEB_PACKAGE_NAMES")
+    prepare("dev/release/post-12-version.sh", "DEB_PACKAGE_NAMES")
     changes = parse_patch(git("log", "-n", "1", "-p"))
     sampled_changes = changes.collect do |change|
       first_hunk = change[:hunks][0]
-      first_removed_line = first_hunk.find {|line| line.start_with?("-")}
-      first_added_line = first_hunk.find {|line| line.start_with?("+")}
+      first_removed_line = first_hunk.find { |line| line.start_with?("-") }
+      first_added_line = first_hunk.find { |line| line.start_with?("+") }
       {
         sampled_diff: [first_removed_line, first_added_line],
         path: change[:path],
@@ -643,14 +768,14 @@ class PrepareTest < Test::Unit::TestCase
           
"-dev/tasks/linux-packages/apache-arrow/debian/libarrow-glib#{@so_version}.install",
           
"+dev/tasks/linux-packages/apache-arrow/debian/libarrow-glib#{@next_so_version}.install",
         ],
-        path: "dev/release/rat_exclude_files.txt"
+        path: "dev/release/rat_exclude_files.txt",
       },
       {
         sampled_diff: [
           "-Package: libarrow#{@so_version}",
           "+Package: libarrow#{@next_so_version}",
         ],
-        path: "dev/tasks/linux-packages/apache-arrow/debian/control.in"
+        path: "dev/tasks/linux-packages/apache-arrow/debian/control.in",
       },
       {
         sampled_diff: [
diff --git a/dev/release/01-prepare.sh b/dev/release/01-prepare.sh
index 80703c2..051a8f6 100755
--- a/dev/release/01-prepare.sh
+++ b/dev/release/01-prepare.sh
@@ -26,149 +26,7 @@ if [ "$#" -ne 3 ]; then
   exit 1
 fi
 
-update_versions() {
-  local base_version=$1
-  local next_version=$2
-  local type=$3
-
-  case ${type} in
-    release)
-      local version=${base_version}
-      local r_version=${base_version}
-      ;;
-    snapshot)
-      local version=${next_version}-SNAPSHOT
-      local r_version=${base_version}.9000
-      ;;
-  esac
-
-  cd "${SOURCE_DIR}/../../c_glib"
-  sed -i.bak -E -e \
-    "s/^version = '.+'/version = '${version}'/" \
-    meson.build
-  rm -f meson.build.bak
-  git add meson.build
-  cd -
-
-  cd "${SOURCE_DIR}/../../ci/scripts"
-  sed -i.bak -E -e \
-    "s/^pkgver=.+/pkgver=${r_version}/" \
-    PKGBUILD
-  rm -f PKGBUILD.bak
-  git add PKGBUILD
-  cd -
-
-  cd "${SOURCE_DIR}/../../cpp"
-  sed -i.bak -E -e \
-    "s/^set\(ARROW_VERSION \".+\"\)/set(ARROW_VERSION \"${version}\")/" \
-    CMakeLists.txt
-  rm -f CMakeLists.txt.bak
-  git add CMakeLists.txt
-
-  sed -i.bak -E -e \
-    "s/\"version-string\": \".+\"/\"version-string\": \"${version}\"/" \
-    vcpkg.json
-  rm -f vcpkg.json.bak
-  git add vcpkg.json
-  cd -
-
-  cd "${SOURCE_DIR}/../../csharp"
-  sed -i.bak -E -e \
-    "s/^    <Version>.+<\/Version>/    <Version>${version}<\/Version>/" \
-    Directory.Build.props
-  rm -f Directory.Build.props.bak
-  git add Directory.Build.props
-  cd -
-
-  cd "${SOURCE_DIR}/../../dev/tasks/homebrew-formulae"
-  sed -i.bak -E -e \
-    "s/arrow-[0-9.]+[0-9]+/arrow-${r_version}/g" \
-    autobrew/apache-arrow.rb
-  rm -f autobrew/apache-arrow.rb.bak
-  git add autobrew/apache-arrow.rb
-  sed -i.bak -E -e \
-    "s/arrow-[0-9.\-]+[0-9SNAPHOT]+/arrow-${version}/g" \
-    apache-arrow.rb
-  rm -f apache-arrow.rb.bak
-  git add apache-arrow.rb
-  cd -
-
-  cd "${SOURCE_DIR}/../../js"
-  sed -i.bak -E -e \
-    "s/^  \"version\": \".+\"/  \"version\": \"${version}\"/" \
-    package.json
-  rm -f package.json.bak
-  git add package.json
-  cd -
-
-  cd "${SOURCE_DIR}/../../matlab"
-  sed -i.bak -E -e \
-    "s/^set\(MLARROW_VERSION \".+\"\)/set(MLARROW_VERSION \"${version}\")/" \
-    CMakeLists.txt
-  rm -f CMakeLists.txt.bak
-  git add CMakeLists.txt
-  cd -
-
-  cd "${SOURCE_DIR}/../../python"
-  sed -i.bak -E -e \
-    "s/^default_version = '.+'/default_version = '${version}'/" \
-    setup.py
-  rm -f setup.py.bak
-  git add setup.py
-  cd -
-
-  cd "${SOURCE_DIR}/../../r"
-  sed -i.bak -E -e \
-    "s/^Version: .+/Version: ${r_version}/" \
-    DESCRIPTION
-  rm -f DESCRIPTION.bak
-  git add DESCRIPTION
-  if [ ${type} = "snapshot" ]; then
-    # Add a news entry for the new dev version
-    echo "dev"
-    sed -i.bak -E -e \
-      "0,/^# arrow /s/^(# arrow .+)/# arrow ${r_version}\n\n\1/" \
-      NEWS.md
-  else
-    # Replace dev version with release version
-    echo "release"
-    sed -i.bak -E -e \
-      "0,/^# arrow /s/^# arrow .+/# arrow ${r_version}/" \
-      NEWS.md
-  fi
-  rm -f NEWS.md.bak
-  git add NEWS.md
-  cd -
-
-  cd "${SOURCE_DIR}/../../ruby"
-  sed -i.bak -E -e \
-    "s/^  VERSION = \".+\"/  VERSION = \"${version}\"/g" \
-    */*/*/version.rb
-  rm -f */*/*/version.rb.bak
-  git add */*/*/version.rb
-  cd -
-
-  cd "${SOURCE_DIR}/../../rust"
-  sed -i.bak -E \
-    -e "s/^version = \".+\"/version = \"${version}\"/g" \
-    -e "s/^(arrow = .* version = )\".*\"(( .*)|(, features = .*)|(, optional = 
.*))$/\\1\"${version}\"\\2/g" \
-    -e "s/^(arrow-flight = .* version = )\".+\"( .*)/\\1\"${version}\"\\2/g" \
-    -e "s/^(parquet = .* version = )\".*\"(( .*)|(, features = 
.*))$/\\1\"${version}\"\\2/g" \
-    -e "s/^(parquet_derive = .* version = )\".*\"(( .*)|(, features = 
.*))$/\\1\"${version}\"\\2/g" \
-    */Cargo.toml
-  rm -f */Cargo.toml.bak
-  git add */Cargo.toml
-
-  sed -i.bak -E \
-    -e "s/^([^ ]+) = \".+\"/\\1 = \"${version}\"/g" \
-    -e "s,docs\.rs/crate/([^/]+)/[^)]+,docs.rs/crate/\\1/${version},g" \
-    */README.md
-  rm -f */README.md.bak
-  git add */README.md
-  cd -
-}
-
-############################## Pre-Tag Commits ##############################
+. $SOURCE_DIR/utils-prepare.sh
 
 version=$1
 next_version=$2
@@ -185,8 +43,6 @@ release_candidate_branch="release-${version}-rc${rc_number}"
 : ${PREPARE_VERSION_PRE_TAG:=${PREPARE_DEFAULT}}
 : ${PREPARE_BRANCH:=${PREPARE_DEFAULT}}
 : ${PREPARE_TAG:=${PREPARE_DEFAULT}}
-: ${PREPARE_VERSION_POST_TAG:=${PREPARE_DEFAULT}}
-: ${PREPARE_DEB_PACKAGE_NAMES:=${PREPARE_DEFAULT}}
 
 if [ ${PREPARE_TAG} -gt 0 ]; then
   if [ $(git tag -l "${release_tag}") ]; then
@@ -245,47 +101,3 @@ fi
 if [ ${PREPARE_TAG} -gt 0 ]; then
   git tag -a "${release_tag}" -m "[Release] Apache Arrow Release ${version}"
 fi
-
-############################## Post-Tag Commits #############################
-
-if [ ${PREPARE_VERSION_POST_TAG} -gt 0 ]; then
-  echo "Updating versions for ${next_version_snapshot}"
-  update_versions "${version}" "${next_version}" "snapshot"
-  git commit -m "[Release] Update versions for ${next_version_snapshot}"
-fi
-
-if [ ${PREPARE_DEB_PACKAGE_NAMES} -gt 0 ]; then
-  echo "Updating .deb package names for ${next_version}"
-  so_version() {
-    local version=$1
-    local major_version=$(echo $version | sed -E -e 
's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')
-    local minor_version=$(echo $version | sed -E -e 
's/^[0-9]+\.([0-9]+)\.[0-9]+$/\1/')
-    expr ${major_version} \* 100 + ${minor_version}
-  }
-  deb_lib_suffix=$(so_version $version)
-  next_deb_lib_suffix=$(so_version $next_version)
-  if [ "${deb_lib_suffix}" != "${next_deb_lib_suffix}" ]; then
-    cd $SOURCE_DIR/../tasks/linux-packages/apache-arrow
-    for target in debian*/lib*${deb_lib_suffix}.install; do
-      git mv \
-       ${target} \
-       $(echo $target | sed -e "s/${deb_lib_suffix}/${next_deb_lib_suffix}/")
-    done
-    
deb_lib_suffix_substitute_pattern="s/(lib(arrow|gandiva|parquet|plasma)[-a-z]*)${deb_lib_suffix}/\\1${next_deb_lib_suffix}/g"
-    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" debian*/control*
-    rm -f debian*/control*.bak
-    git add debian*/control*
-    cd -
-    cd $SOURCE_DIR/../tasks/
-    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" tasks.yml
-    rm -f tasks.yml.bak
-    git add tasks.yml
-    cd -
-    cd $SOURCE_DIR
-    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" 
rat_exclude_files.txt
-    rm -f rat_exclude_files.txt.bak
-    git add rat_exclude_files.txt
-    git commit -m "[Release] Update .deb package names for $next_version"
-    cd -
-  fi
-fi
diff --git a/dev/release/03-binary-submit.sh b/dev/release/03-binary-submit.sh
index 1bdbc20..ea67222 100755
--- a/dev/release/03-binary-submit.sh
+++ b/dev/release/03-binary-submit.sh
@@ -28,14 +28,10 @@ version=$1
 rc_number=$2
 version_with_rc="${version}-rc${rc_number}"
 crossbow_job_prefix="release-${version_with_rc}"
-
 release_tag="apache-arrow-${version}"
-release_candidate_branch="release-${version}-rc${rc_number}"
-
-: ${GIT_REMOTE:="origin"}
 
-git checkout ${release_candidate_branch}
-git push -u ${GIT_REMOTE} ${release_candidate_branch}
+: ${ARROW_REPOSITORY:="apache/arrow"}
+: ${ARROW_BRANCH:=$release_tag}
 
 # archery will submit a job with id: "${crossbow_job_prefix}-0" unless there
 # are jobs submitted with the same prefix (the integer at the end is auto
@@ -43,4 +39,6 @@ git push -u ${GIT_REMOTE} ${release_candidate_branch}
 archery crossbow submit \
     --job-prefix ${crossbow_job_prefix} \
     --arrow-version ${version_with_rc} \
+    --arrow-remote "https://github.com/${ARROW_REPOSITORY}"; \
+    --arrow-branch ${ARROW_BRANCH} \
     --group packaging
diff --git a/dev/release/04-binary-download.sh 
b/dev/release/04-binary-download.sh
index d0b61b0..e2b97ac 100755
--- a/dev/release/04-binary-download.sh
+++ b/dev/release/04-binary-download.sh
@@ -33,6 +33,7 @@ crossbow_job_prefix="release-${version_with_rc}"
 # archery will submit a job with id: "${crossbow_job_prefix}-0" unless there
 # are jobs submitted with the same prefix (the integer at the end is auto
 # incremented)
-: ${CROSSBOW_JOB_ID:="${crossbow_job_prefix}-0"}
+: ${CROSSBOW_JOB_NUMBER:="0"}
+: ${CROSSBOW_JOB_ID:="${crossbow_job_prefix}-${CROSSBOW_JOB_NUMBER}"}
 
 archery crossbow download-artifacts ${CROSSBOW_JOB_ID}
diff --git a/dev/release/05-binary-upload.sh b/dev/release/05-binary-upload.sh
index 4a360c2..979e40c 100755
--- a/dev/release/05-binary-upload.sh
+++ b/dev/release/05-binary-upload.sh
@@ -35,7 +35,8 @@ version_with_rc="${version}-rc${rc}"
 crossbow_job_prefix="release-${version_with_rc}"
 crossbow_package_dir="${SOURCE_DIR}/../../packages"
 
-: ${CROSSBOW_JOB_ID:="${crossbow_job_prefix}-0"}
+: ${CROSSBOW_JOB_NUMBER:="0"}
+: ${CROSSBOW_JOB_ID:="${crossbow_job_prefix}-${CROSSBOW_JOB_NUMBER}"}
 artifact_dir="${crossbow_package_dir}/${CROSSBOW_JOB_ID}"
 
 if [ ! -e "$artifact_dir" ]; then
@@ -68,7 +69,7 @@ if [ -n "${SOURCE_BINTRAY_REPOSITORY_CUSTOM}" ]; then
   SOURCE_BINTRAY_REPOSITORY=${SOURCE_BINTRAY_REPOSITORY_CUSTOM}
 fi
 
-. binary-common.sh
+. utils-binary.sh
 
 # By default upload all artifacts.
 # To deactivate one category, deactivate the category and all of its 
dependents.
diff --git a/dev/release/binary-task.rb b/dev/release/binary-task.rb
index 42bc1fe..7e7561a 100644
--- a/dev/release/binary-task.rb
+++ b/dev/release/binary-task.rb
@@ -1047,7 +1047,11 @@ class BinaryTask
     else
       available_apt_targets.select do |distribution, code_name, component|
         env_apt_targets.any? do |env_apt_target|
-          env_apt_target.start_with?("#{distribution}-#{code_name}")
+          if env_apt_target.include?("-")
+            env_apt_target.start_with?("#{distribution}-#{code_name}")
+          else
+            env_apt_target == distribution
+          end
         end
       end
     end
@@ -1078,8 +1082,8 @@ class BinaryTask
           Dir.glob("#{source_dir_prefix}*/**/*") do |path|
             next if File.directory?(path)
             base_name = File.basename(path)
-            if base_name.start_with?("apache-arrow-archive-keyring")
-              package_name = "apache-arrow-archive-keyring"
+            if base_name.start_with?("apache-arrow-apt-source")
+              package_name = "apache-arrow-apt-source"
             else
               package_name = "apache-arrow"
             end
@@ -1100,13 +1104,13 @@ class BinaryTask
                           destination_path,
                           progress_reporter)
             case base_name
-            when /\A[^_]+-archive-keyring_.*\.deb\z/
-              latest_archive_keyring_package_path = [
+            when /\A[^_]+-apt-source_.*\.deb\z/
+              latest_apt_source_package_path = [
                 distribution_dir,
                 "#{package_name}-latest-#{code_name}.deb"
               ].join("/")
               copy_artifact(path,
-                            latest_archive_keyring_package_path,
+                            latest_apt_source_package_path,
                             progress_reporter)
             end
           end
@@ -1435,7 +1439,11 @@ APT::FTPArchive::Release::Description 
"#{apt_repository_description}";
     else
       available_yum_targets.select do |distribution, distribution_version|
         env_yum_targets.any? do |env_yum_target|
-          env_yum_target.start_with?("#{distribution}-#{distribution_version}")
+          if env_yum_target.include?("-")
+            
env_yum_target.start_with?("#{distribution}-#{distribution_version}")
+          else
+            env_yum_target == distribution
+          end
         end
       end
     end
diff --git a/dev/release/post-02-binary.sh b/dev/release/post-02-binary.sh
index 9f531af..6d3e19e 100755
--- a/dev/release/post-02-binary.sh
+++ b/dev/release/post-02-binary.sh
@@ -45,7 +45,7 @@ if [ -n "${BINTRAY_REPOSITORY_CUSTOM}" ]; then
   BINTRAY_REPOSITORY=${BINTRAY_REPOSITORY_CUSTOM}
 fi
 
-. binary-common.sh
+. utils-binary.sh
 
 # By default deploy all artifacts.
 # To deactivate one category, deactivate the category and all of its 
dependents.
diff --git a/dev/release/post-12-version.sh b/dev/release/post-12-version.sh
new file mode 100755
index 0000000..9ca0086
--- /dev/null
+++ b/dev/release/post-12-version.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+set -ue
+
+SOURCE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+
+if [ "$#" -ne 3 ]; then
+  echo "Usage: $0 <version> <next_version> <rc-num>"
+  exit 1
+fi
+
+: ${PREPARE_DEFAULT:=1}
+: ${PREPARE_VERSION_POST_TAG:=${PREPARE_DEFAULT}}
+: ${PREPARE_DEB_PACKAGE_NAMES:=${PREPARE_DEFAULT}}
+
+. $SOURCE_DIR/utils-prepare.sh
+
+version=$1
+next_version=$2
+next_version_snapshot="${next_version}-SNAPSHOT"
+
+if [ ${PREPARE_VERSION_POST_TAG} -gt 0 ]; then
+  echo "Updating versions for ${next_version_snapshot}"
+  update_versions "${version}" "${next_version}" "snapshot"
+  git commit -m "[Release] Update versions for ${next_version_snapshot}"
+fi
+
+if [ ${PREPARE_DEB_PACKAGE_NAMES} -gt 0 ]; then
+  echo "Updating .deb package names for ${next_version}"
+  so_version() {
+    local version=$1
+    local major_version=$(echo $version | sed -E -e 
's/^([0-9]+)\.[0-9]+\.[0-9]+$/\1/')
+    local minor_version=$(echo $version | sed -E -e 
's/^[0-9]+\.([0-9]+)\.[0-9]+$/\1/')
+    expr ${major_version} \* 100 + ${minor_version}
+  }
+  deb_lib_suffix=$(so_version $version)
+  next_deb_lib_suffix=$(so_version $next_version)
+  if [ "${deb_lib_suffix}" != "${next_deb_lib_suffix}" ]; then
+    cd $SOURCE_DIR/../tasks/linux-packages/apache-arrow
+    for target in debian*/lib*${deb_lib_suffix}.install; do
+      git mv \
+       ${target} \
+       $(echo $target | sed -e "s/${deb_lib_suffix}/${next_deb_lib_suffix}/")
+    done
+    
deb_lib_suffix_substitute_pattern="s/(lib(arrow|gandiva|parquet|plasma)[-a-z]*)${deb_lib_suffix}/\\1${next_deb_lib_suffix}/g"
+    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" debian*/control*
+    rm -f debian*/control*.bak
+    git add debian*/control*
+    cd -
+    cd $SOURCE_DIR/../tasks/
+    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" tasks.yml
+    rm -f tasks.yml.bak
+    git add tasks.yml
+    cd -
+    cd $SOURCE_DIR
+    sed -i.bak -E -e "${deb_lib_suffix_substitute_pattern}" 
rat_exclude_files.txt
+    rm -f rat_exclude_files.txt.bak
+    git add rat_exclude_files.txt
+    git commit -m "[Release] Update .deb package names for $next_version"
+    cd -
+  fi
+fi
diff --git a/dev/release/binary-common.sh b/dev/release/utils-binary.sh
similarity index 100%
rename from dev/release/binary-common.sh
rename to dev/release/utils-binary.sh
diff --git a/dev/release/utils-prepare.sh b/dev/release/utils-prepare.sh
new file mode 100644
index 0000000..a1c8841
--- /dev/null
+++ b/dev/release/utils-prepare.sh
@@ -0,0 +1,167 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+ARROW_DIR="${SOURCE_DIR}/../.."
+
+update_versions() {
+  local base_version=$1
+  local next_version=$2
+  local type=$3
+
+  case ${type} in
+    release)
+      local version=${base_version}
+      local r_version=${base_version}
+      ;;
+    snapshot)
+      local version=${next_version}-SNAPSHOT
+      local r_version=${base_version}.9000
+      ;;
+  esac
+
+  pushd "${ARROW_DIR}/c_glib"
+  sed -i.bak -E -e \
+    "s/^version = '.+'/version = '${version}'/" \
+    meson.build
+  rm -f meson.build.bak
+  git add meson.build
+  popd
+
+  pushd "${ARROW_DIR}/ci/scripts"
+  sed -i.bak -E -e \
+    "s/^pkgver=.+/pkgver=${r_version}/" \
+    PKGBUILD
+  rm -f PKGBUILD.bak
+  git add PKGBUILD
+  popd
+
+  pushd "${ARROW_DIR}/cpp"
+  sed -i.bak -E -e \
+    "s/^set\(ARROW_VERSION \".+\"\)/set(ARROW_VERSION \"${version}\")/" \
+    CMakeLists.txt
+  rm -f CMakeLists.txt.bak
+  git add CMakeLists.txt
+
+  sed -i.bak -E -e \
+    "s/\"version-string\": \".+\"/\"version-string\": \"${version}\"/" \
+    vcpkg.json
+  rm -f vcpkg.json.bak
+  git add vcpkg.json
+  popd
+
+  pushd "${ARROW_DIR}/java"
+  mvn versions:set -DnewVersion=${version}
+  find . -type f -name pom.xml.versionsBackup -delete
+  git add "pom.xml"
+  git add "**/pom.xml"
+  popd
+
+  pushd "${ARROW_DIR}/csharp"
+  sed -i.bak -E -e \
+    "s/^    <Version>.+<\/Version>/    <Version>${version}<\/Version>/" \
+    Directory.Build.props
+  rm -f Directory.Build.props.bak
+  git add Directory.Build.props
+  popd
+
+  pushd "${ARROW_DIR}/dev/tasks/homebrew-formulae"
+  sed -i.bak -E -e \
+    "s/arrow-[0-9.]+[0-9]+/arrow-${r_version}/g" \
+    autobrew/apache-arrow.rb
+  rm -f autobrew/apache-arrow.rb.bak
+  git add autobrew/apache-arrow.rb
+  sed -i.bak -E -e \
+    "s/arrow-[0-9.\-]+[0-9SNAPHOT]+/arrow-${version}/g" \
+    apache-arrow.rb
+  rm -f apache-arrow.rb.bak
+  git add apache-arrow.rb
+  popd
+
+  pushd "${ARROW_DIR}/js"
+  sed -i.bak -E -e \
+    "s/^  \"version\": \".+\"/  \"version\": \"${version}\"/" \
+    package.json
+  rm -f package.json.bak
+  git add package.json
+  popd
+
+  pushd "${ARROW_DIR}/matlab"
+  sed -i.bak -E -e \
+    "s/^set\(MLARROW_VERSION \".+\"\)/set(MLARROW_VERSION \"${version}\")/" \
+    CMakeLists.txt
+  rm -f CMakeLists.txt.bak
+  git add CMakeLists.txt
+  popd
+
+  pushd "${ARROW_DIR}/python"
+  sed -i.bak -E -e \
+    "s/^default_version = '.+'/default_version = '${version}'/" \
+    setup.py
+  rm -f setup.py.bak
+  git add setup.py
+  popd
+
+  pushd "${ARROW_DIR}/r"
+  sed -i.bak -E -e \
+    "s/^Version: .+/Version: ${r_version}/" \
+    DESCRIPTION
+  rm -f DESCRIPTION.bak
+  git add DESCRIPTION
+  if [ ${type} = "snapshot" ]; then
+    # Add a news entry for the new dev version
+    echo "dev"
+    sed -i.bak -E -e \
+      "0,/^# arrow /s/^(# arrow .+)/# arrow ${r_version}\n\n\1/" \
+      NEWS.md
+  else
+    # Replace dev version with release version
+    echo "release"
+    sed -i.bak -E -e \
+      "0,/^# arrow /s/^# arrow .+/# arrow ${r_version}/" \
+      NEWS.md
+  fi
+  rm -f NEWS.md.bak
+  git add NEWS.md
+  popd
+
+  pushd "${ARROW_DIR}/ruby"
+  sed -i.bak -E -e \
+    "s/^  VERSION = \".+\"/  VERSION = \"${version}\"/g" \
+    */*/*/version.rb
+  rm -f */*/*/version.rb.bak
+  git add */*/*/version.rb
+  popd
+
+  pushd "${ARROW_DIR}/rust"
+  sed -i.bak -E \
+    -e "s/^version = \".+\"/version = \"${version}\"/g" \
+    -e "s/^(arrow = .* version = )\".*\"(( .*)|(, features = .*)|(, optional = 
.*))$/\\1\"${version}\"\\2/g" \
+    -e "s/^(arrow-flight = .* version = )\".+\"( .*)/\\1\"${version}\"\\2/g" \
+    -e "s/^(parquet = .* version = )\".*\"(( .*)|(, features = 
.*))$/\\1\"${version}\"\\2/g" \
+    -e "s/^(parquet_derive = .* version = )\".*\"(( .*)|(, features = 
.*))$/\\1\"${version}\"\\2/g" \
+    */Cargo.toml
+  rm -f */Cargo.toml.bak
+  git add */Cargo.toml
+
+  sed -i.bak -E \
+    -e "s/^([^ ]+) = \".+\"/\\1 = \"${version}\"/g" \
+    -e "s,docs\.rs/crate/([^/]+)/[^)]+,docs.rs/crate/\\1/${version},g" \
+    */README.md
+  rm -f */README.md.bak
+  git add */README.md
+  popd
+}
diff --git a/dev/release/verify-apt.sh b/dev/release/verify-apt.sh
index e7b87a3..bf7c0bd 100755
--- a/dev/release/verify-apt.sh
+++ b/dev/release/verify-apt.sh
@@ -21,10 +21,12 @@ set -exu
 
 if [ $# -lt 2 ]; then
   echo "Usage: $0 VERSION rc"
+  echo "       $0 VERSION rc BINTRAY_REPOSITORY"
   echo "       $0 VERSION release"
   echo "       $0 VERSION local"
   echo " e.g.: $0 0.13.0 rc           # Verify 0.13.0 RC"
   echo " e.g.: $0 0.13.0 release      # Verify 0.13.0"
+  echo " e.g.: $0 0.13.0 rc kszucs/arrow # Verify 0.13.0 RC at 
https://bintray.com/kszucs/arrow";
   echo " e.g.: $0 0.13.0-dev20210203 local # Verify 0.13.0-dev20210203 on 
local"
   exit 1
 fi
@@ -84,9 +86,15 @@ if [ "${TYPE}" = "local" ]; then
 else
   package_version="${VERSION}-1"
   apt_source_base_name="apache-arrow-apt-source-latest-${code_name}.deb"
-  curl \
-    --output "${apt_source_base_name}" \
-    "${artifactory_base_url}/${apt_source_base_name}"
+  if [ $# -eq 3 ]; then
+    curl \
+      --output "${apt_source_base_name}" \
+      "https://dl.bintray.com/$3/${distribution}-rc/${apt_source_base_name}";
+  else
+    curl \
+      --output "${apt_source_base_name}" \
+      "${artifactory_base_url}/${apt_source_base_name}"
+  fi
   apt install -y -V "./${apt_source_base_name}"
 fi
 
@@ -104,10 +112,17 @@ if [ "${TYPE}" = "local" ]; then
   fi
 else
   if [ "${TYPE}" = "rc" ]; then
-    sed \
-      -i"" \
-      -e "s,^URIs: \\(.*\\)/,URIs: \\1-rc/,g" \
-      /etc/apt/sources.list.d/apache-arrow.sources
+    if [ $# -eq 3 ]; then
+      sed \
+        -i"" \
+        -e "s,^URIs: .*/,URIs: 
https://dl.bintray.com/$3/${distribution}-rc/,g"; \
+        /etc/apt/sources.list.d/apache-arrow.sources
+    else
+      sed \
+        -i"" \
+        -e "s,^URIs: \\(.*\\)/,URIs: \\1-rc/,g" \
+        /etc/apt/sources.list.d/apache-arrow.sources
+    fi
   fi
 fi
 
diff --git a/dev/release/verify-release-candidate.sh 
b/dev/release/verify-release-candidate.sh
index 3fc926f..888f763 100755
--- a/dev/release/verify-release-candidate.sh
+++ b/dev/release/verify-release-candidate.sh
@@ -135,7 +135,9 @@ test_binary() {
 }
 
 test_apt() {
-  for target in "debian:buster" \
+  for target in "debian:bullseye" \
+                "arm64v8/debian:bullseye" \
+                "debian:buster" \
                 "arm64v8/debian:buster" \
                 "ubuntu:bionic" \
                 "arm64v8/ubuntu:bionic" \
@@ -144,6 +146,11 @@ test_apt() {
                 "ubuntu:groovy" \
                 "arm64v8/ubuntu:groovy"; do \
     case "${target}" in
+      arm64v8/debian:bullseye)
+        # qemu-user-static in Ubuntu 20.04 has a crash bug:
+        #   https://bugs.launchpad.net/qemu/+bug/1749393
+        continue
+        ;;
       arm64v8/*)
         if [ "$(arch)" = "aarch64" -o -e /usr/bin/qemu-aarch64-static ]; then
           : # OK
@@ -485,9 +492,7 @@ test_rust() {
   # raises on any formatting errors
   rustup component add rustfmt --toolchain stable
   cargo +stable fmt --all -- --check
-
-  # we are targeting Rust nightly for releases
-  rustup default nightly
+  rustup default stable
 
   # use local modules because we don't publish modules to crates.io yet
   sed \
@@ -686,6 +691,7 @@ test_wheels() {
   fi
 
   python $SOURCE_DIR/download_rc_binaries.py $VERSION $RC_NUMBER \
+         --package_type python \
          --regex=${filter_regex} \
          --dest=${download_dir}
 
diff --git a/dev/release/verify-yum.sh b/dev/release/verify-yum.sh
index b9c46c4..08cd907 100755
--- a/dev/release/verify-yum.sh
+++ b/dev/release/verify-yum.sh
@@ -21,10 +21,12 @@ set -exu
 
 if [ $# -lt 2 ]; then
   echo "Usage: $0 VERSION rc"
+  echo "       $0 VERSION rc BINTRAY_REPOSITORY"
   echo "       $0 VERSION release"
   echo "       $0 VERSION local"
   echo " e.g.: $0 0.13.0 rc           # Verify 0.13.0 RC"
   echo " e.g.: $0 0.13.0 release      # Verify 0.13.0"
+  echo " e.g.: $0 0.13.0 rc kszucs/arrow # Verify 0.13.0 RC at 
https://bintray.com/kszucs/arrow";
   echo " e.g.: $0 0.13.0-dev20210203 local # Verify 0.13.0-dev20210203 on 
local"
   exit 1
 fi
@@ -82,8 +84,13 @@ if [ "${TYPE}" = "local" ]; then
   ${install_command} "${release_path}"
 else
   package_version="${VERSION}"
-  ${install_command} \
-    
${artifactory_base_url}/${distribution_version}/apache-arrow-release-latest.rpm
+  if [ $# -eq 3 ]; then
+    ${install_command} \
+      
https://dl.bintray.com/$3/centos-rc/${distribution_version}/apache-arrow-release-latest.rpm
+  else
+    ${install_command} \
+      
${artifactory_base_url}/${distribution_version}/apache-arrow-release-latest.rpm
+  fi
 fi
 
 if [ "${TYPE}" = "local" ]; then
@@ -97,10 +104,17 @@ if [ "${TYPE}" = "local" ]; then
   fi
 else
   if [ "${TYPE}" = "rc" ]; then
-    sed \
-      -i"" \
-      -e "s,/centos/,/centos-rc/,g" \
-      /etc/yum.repos.d/Apache-Arrow.repo
+    if [ $# -eq 3 ]; then
+      sed \
+        -i"" \
+        -e 
"s,baseurl=https://apache\.jfrog\.io/artifactory/arrow/centos/,baseurl=https://dl.bintray.com/$3/centos-rc/,g";
 \
+        /etc/yum.repos.d/Apache-Arrow.repo
+    else
+      sed \
+        -i"" \
+        -e "s,/centos/,/centos-rc/,g" \
+        /etc/yum.repos.d/Apache-Arrow.repo
+    fi
   fi
 fi
 
diff --git a/dev/tasks/conda-recipes/azure.win.yml 
b/dev/tasks/conda-recipes/azure.win.yml
index a3ec693..422e2f0 100755
--- a/dev/tasks/conda-recipes/azure.win.yml
+++ b/dev/tasks/conda-recipes/azure.win.yml
@@ -73,5 +73,5 @@ jobs:
         PYTHONUNBUFFERED: 1
       condition: contains(variables['R_CONFIG'], 'win')
 
-    {{ macros.azure_upload_releases("D:\bld\win-64\*.tar.bz2")|indent(2) }}
-    {{ macros.azure_upload_anaconda("D:\bld\win-64\*.tar.bz2")|indent(2) }}
+    {{ macros.azure_upload_releases("D:\\bld\\win-64\\*.tar.bz2")|indent(2) }}
+    {{ macros.azure_upload_anaconda("D:\\bld\\win-64\\*.tar.bz2")|indent(2) }}
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index eab3e15..4bf0abf 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -1235,7 +1235,7 @@ tasks:
 
 {% for target in ["csharp",
                   "go",
-                  "integration"
+                  "integration",
                   "java",
                   "js",
                   "python",
diff --git a/dev/tasks/verify-rc/github.linux.yml 
b/dev/tasks/verify-rc/github.linux.yml
index 8729426..2bbde2e 100644
--- a/dev/tasks/verify-rc/github.linux.yml
+++ b/dev/tasks/verify-rc/github.linux.yml
@@ -47,6 +47,7 @@ jobs:
             jq \
             libboost-all-dev \
             libgirepository1.0-dev \
+            ninja-build \
             qemu-user-static \
             wget
 

Reply via email to