diff --git a/LICENSE.txt b/LICENSE.txt
index 2280d5804f8..cb359c05720 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -1838,9 +1838,39 @@ for PyArrow. Ibis is released under the Apache License, Version 2.0.
This project includes code from the autobrew project.
-* r/tools/autobrew and r/tools/apache-arrow.rb are based on code
- from the autobrew project.
+* r/tools/autobrew and dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb
+ are based on code from the autobrew project.
Copyright: Copyright (c) 2017 - 2019, Jeroen Ooms.
All rights reserved.
Homepage: https://github.com/jeroen/autobrew
+
+--------------------------------------------------------------------------------
+
+dev/tasks/homebrew-formulae/apache-arrow.rb has the following license:
+
+BSD 2-Clause License
+
+Copyright (c) 2009-present, Homebrew contributors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dev/release/00-prepare-test.rb b/dev/release/00-prepare-test.rb
index 77a048a372c..805983d467c 100644
--- a/dev/release/00-prepare-test.rb
+++ b/dev/release/00-prepare-test.rb
@@ -106,6 +106,20 @@ def test_update_version_pre_tag
"+ #{@release_version}"],
],
},
+ {
+ path: "dev/tasks/homebrew-formulae/apache-arrow.rb",
+ hunks: [
+ ["- url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@snapshot_version}/apache-arrow-#{@snapshot_version}.tar.gz\"",
+ "+ url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\""],
+ ],
+ },
+ {
+ path: "dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb",
+ hunks: [
+ ["- url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@previous_version}.9000/apache-arrow-#{@previous_version}.9000.tar.gz\"",
+ "+ url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\""],
+ ],
+ },
{
path: "js/package.json",
hunks: [
@@ -262,6 +276,20 @@ def test_update_version_post_tag
"+ #{@next_snapshot_version}"],
],
},
+ {
+ path: "dev/tasks/homebrew-formulae/apache-arrow.rb",
+ hunks: [
+ ["- url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\"",
+ "+ url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@next_snapshot_version}/apache-arrow-#{@next_snapshot_version}.tar.gz\""],
+ ],
+ },
+ {
+ path: "dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb",
+ hunks: [
+ ["- url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@release_version}/apache-arrow-#{@release_version}.tar.gz\"",
+ "+ url \"https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-#{@release_version}.9000/apache-arrow-#{@release_version}.9000.tar.gz\""],
+ ],
+ },
{
path: "js/package.json",
hunks: [
diff --git a/dev/release/00-prepare.sh b/dev/release/00-prepare.sh
index 34989fb7758..8578f83b80f 100755
--- a/dev/release/00-prepare.sh
+++ b/dev/release/00-prepare.sh
@@ -42,14 +42,6 @@ update_versions() {
;;
esac
- 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
- cd -
-
cd "${SOURCE_DIR}/../../c_glib"
sed -i.bak -E -e \
"s/^m4_define\(\[arrow_glib_version\], .+\)/m4_define([arrow_glib_version], ${version})/" \
@@ -61,6 +53,22 @@ update_versions() {
git add configure.ac meson.build
cd -
+ cd "${SOURCE_DIR}/../../ci"
+ 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
+ cd -
+
cd "${SOURCE_DIR}/../../csharp"
sed -i.bak -E -e \
"s/^ .+<\/Version>/ ${version}<\/Version>/" \
@@ -69,6 +77,19 @@ update_versions() {
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}\"/" \
@@ -99,17 +120,6 @@ update_versions() {
DESCRIPTION
rm -f DESCRIPTION.bak
git add DESCRIPTION
- cd -
-
- cd "${SOURCE_DIR}/../../ci"
- sed -i.bak -E -e \
- "s/^pkgver=.+/pkgver=${r_version}/" \
- PKGBUILD
- rm -f PKGBUILD.bak
- git add PKGBUILD
- cd -
-
- cd "${SOURCE_DIR}/../../r"
if [ ${type} = "snapshot" ]; then
# Add a news entry for the new dev version
echo "dev"
diff --git a/dev/release/rat_exclude_files.txt b/dev/release/rat_exclude_files.txt
index 8ba64d19217..62ce9d76b13 100644
--- a/dev/release/rat_exclude_files.txt
+++ b/dev/release/rat_exclude_files.txt
@@ -32,6 +32,7 @@ cpp/src/plasma/thirdparty/ae/config.h
cpp/src/plasma/thirdparty/ae/zmalloc.h
cpp/src/plasma/thirdparty/dlmalloc.c
dev/release/rat_exclude_files.txt
+dev/tasks/homebrew-formulae/apache-arrow.rb
dev/tasks/linux-packages/debian.ubuntu-xenial/compat
dev/tasks/linux-packages/debian.ubuntu-xenial/control
dev/tasks/linux-packages/debian.ubuntu-xenial/gir1.2-arrow-1.0.install
diff --git a/dev/tasks/homebrew-formulae/apache-arrow.rb b/dev/tasks/homebrew-formulae/apache-arrow.rb
new file mode 100644
index 00000000000..8f08f96df65
--- /dev/null
+++ b/dev/tasks/homebrew-formulae/apache-arrow.rb
@@ -0,0 +1,57 @@
+class ApacheArrow < Formula
+ desc "Columnar in-memory analytics layer designed to accelerate big data"
+ homepage "https://arrow.apache.org/"
+ url "https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-0.15.0-SNAPSHOT/apache-arrow-0.15.0-SNAPSHOT.tar.gz"
+ sha256 "9948ddb6d4798b51552d0dca3252dd6e3a7d0f9702714fc6f5a1b59397ce1d28"
+ head "https://github.com/apache/arrow.git"
+
+ depends_on "cmake" => :build
+ depends_on "boost"
+ depends_on "brotli"
+ depends_on "double-conversion"
+ depends_on "flatbuffers"
+ depends_on "glog"
+ depends_on "grpc"
+ depends_on "lz4"
+ depends_on "numpy"
+ depends_on "openssl"
+ depends_on "protobuf"
+ depends_on "python"
+ depends_on "rapidjson"
+ depends_on "snappy"
+ depends_on "thrift"
+ depends_on "zstd"
+
+ def install
+ ENV.cxx11
+ args = %W[
+ -DARROW_FLIGHT=ON
+ -DARROW_ORC=ON
+ -DARROW_PARQUET=ON
+ -DARROW_PLASMA=ON
+ -DARROW_PROTOBUF_USE_SHARED=ON
+ -DARROW_PYTHON=ON
+ -DARROW_INSTALL_NAME_RPATH=OFF
+ -DPYTHON_EXECUTABLE=#{Formula["python"].bin/"python3"}
+ ]
+
+ mkdir "build"
+ cd "build" do
+ system "cmake", "../cpp", *std_cmake_args, *args
+ system "make"
+ system "make", "install"
+ end
+ end
+
+ test do
+ (testpath/"test.cpp").write <<~EOS
+ #include "arrow/api.h"
+ int main(void) {
+ arrow::int64();
+ return 0;
+ }
+ EOS
+ system ENV.cxx, "test.cpp", "-std=c++11", "-I#{include}", "-L#{lib}", "-larrow", "-o", "test"
+ system "./test"
+ end
+end
diff --git a/r/tools/apache-arrow.rb b/dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb
similarity index 95%
rename from r/tools/apache-arrow.rb
rename to dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb
index 8f942b02d64..8e5000821ac 100644
--- a/r/tools/apache-arrow.rb
+++ b/dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb
@@ -19,7 +19,7 @@
class ApacheArrow < Formula
desc "Columnar in-memory analytics layer designed to accelerate big data"
homepage "https://arrow.apache.org/"
- url "https://archive.apache.org/dist/arrow/arrow-0.14.1/apache-arrow-0.14.1.tar.gz"
+ url "https://www.apache.org/dyn/closer.cgi?path=arrow/arrow-0.14.1.9000/apache-arrow-0.14.1.9000.tar.gz"
sha256 "9948ddb6d4798b51552d0dca3252dd6e3a7d0f9702714fc6f5a1b59397ce1d28"
head "https://github.com/apache/arrow.git"
@@ -31,11 +31,11 @@ class ApacheArrow < Formula
depends_on "cmake" => :build
depends_on "flatbuffers" => :build
- depends_on "double-conversion"
depends_on "boost"
+ depends_on "double-conversion"
depends_on "lz4"
- depends_on "thrift"
depends_on "snappy"
+ depends_on "thrift"
def install
ENV.cxx11
diff --git a/dev/tasks/homebrew-formulae/travis.osx.yml b/dev/tasks/homebrew-formulae/travis.osx.yml
new file mode 100644
index 00000000000..8b23d7c767a
--- /dev/null
+++ b/dev/tasks/homebrew-formulae/travis.osx.yml
@@ -0,0 +1,41 @@
+# 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.
+
+os: osx
+language: ruby
+cache: bundler
+
+# don't build twice
+if: tag IS blank
+
+env:
+ global:
+ - TRAVIS_TAG={{ task.tag }}
+ - ARROW_FORMULA=./arrow/dev/tasks/homebrew-formulae/{{ formula }}
+
+before_script:
+- git clone --no-checkout {{ arrow.remote }} arrow
+- git -C arrow fetch -t {{ arrow.remote }} {{ arrow.branch }}
+- if [ $CROSSBOW_USE_COMMIT_ID == true ]; then git -C arrow checkout {{ arrow.head }}; else git -C arrow checkout FETCH_HEAD; fi
+- brew update
+- brew audit $ARROW_FORMULA
+script:
+- brew install -v --build-from-source --HEAD $ARROW_FORMULA
+- brew test $ARROW_FORMULA
+
+notifications:
+ email:
+ - {{ job.email }}
diff --git a/dev/tasks/tasks.yml b/dev/tasks/tasks.yml
index 0c1ea9b1ffe..a6720f05a72 100644
--- a/dev/tasks/tasks.yml
+++ b/dev/tasks/tasks.yml
@@ -161,6 +161,8 @@ groups:
- ubuntu-disco-arm64
- centos-6
- centos-7
+ - homebrew-cpp
+ - homebrew-cpp-autobrew
- gandiva-jar-trusty
- gandiva-jar-osx
- docker-r
@@ -1085,6 +1087,22 @@ tasks:
- plasma-glib-libs-{no_rc_version}-1.el7.x86_64.rpm
- plasma-libs-{no_rc_version}-1.el7.x86_64.rpm
+ ############################## Homebrew Tasks ################################
+
+ homebrew-cpp:
+ ci: travis
+ platform: osx
+ template: homebrew-formulae/travis.osx.yml
+ params:
+ formula: apache-arrow.rb
+
+ homebrew-cpp-autobrew:
+ ci: travis
+ platform: osx
+ template: homebrew-formulae/travis.osx.yml
+ params:
+ formula: autobrew/apache-arrow.rb
+
############################## Gandiva Tasks ################################
gandiva-jar-trusty:
diff --git a/r/configure b/r/configure
index 6efaf157114..123094ee2d9 100755
--- a/r/configure
+++ b/r/configure
@@ -40,10 +40,12 @@ if [ "$ARROW_R_DEV" == "TRUE" ]; then
fi
if [ "$LOCAL_AUTOBREW" == "TRUE" ]; then
- # LOCAL_AUTOBREW means use the formula in tools/
+ # LOCAL_AUTOBREW means use the script in tools/
+ # If you want to use a local apache-arrow.rb formula, do:
+ # $ cp ../dev/tasks/homebrew-formulae/autobrew/apache-arrow.rb apache-arrow.rb
+ # (assuming a local checkout of the apache/arrow repository)
# FORCE_AUTOBREW without LOCAL_AUTOBREW means to pull from jeroen.github.io
cp tools/autobrew .
- cp tools/apache-arrow.rb .
FORCE_AUTOBREW="TRUE"
fi