#!/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 -e setglobal SOURCE_DIR = $[ cd $[ dirname $(BASH_SOURCE[0])] && pwd] if test "$Argc" -ne 2 { echo "Usage: $0 " exit } setglobal version = $1 setglobal rc = $2 if test -d tmp/ { echo "Cannot run: tmp/ exists" exit } setglobal tag = "apache-arrow-$(version)" setglobal tagrc = "$(tag)-rc$(rc)" echo "Preparing source for tag $(tag)" setglobal release_hash = $[git rev-list $tag !2 > /dev/null | head -n 1] if test -z $release_hash { echo "Cannot continue: unknown git tag: $tag" exit } echo "Using commit $release_hash" setglobal tarball = "$(tag).tar.gz" setglobal extract_dir = 'tmp-apache-arrow' rm -rf $(extract_dir) # be conservative and use the release hash, even though git produces the same # archive (identical hashes) using the scm tag git archive $(release_hash) --prefix $(extract_dir)/ | tar xf - # build Apache Arrow C++ before building Apache Arrow GLib because # Apache Arrow GLib requires Apache Arrow C++. mkdir -p $(extract_dir)/cpp/build setglobal cpp_install_dir = "$(PWD)/$(extract_dir)/cpp/install" cd $(extract_dir)/cpp/build cmake .. \ -DCMAKE_INSTALL_PREFIX=$(cpp_install_dir) \ -DARROW_BUILD_TESTS=no make -j8 make install cd - # build source archive for Apache Arrow GLib by "make dist". cd $(extract_dir)/c_glib ./autogen.sh ./configure \ PKG_CONFIG_PATH=$cpp_install_dir/lib/pkgconfig \ --enable-gtk-doc env LD_LIBRARY_PATH=$cpp_install_dir/lib:$LD_LIBRARY_PATH make -j8 make dist tar xzf *.tar.gz rm *.tar.gz cd - rm -rf tmp-c_glib/ mv $(extract_dir)/c_glib/apache-arrow-glib-* tmp-c_glib/ rm -rf $(extract_dir) # replace c_glib/ by tar.gz generated by "make dist" rm -rf $(tag) git archive $release_hash --prefix $(tag)/ | tar xf - rm -rf $(tag)/c_glib mv tmp-c_glib $(tag)/c_glib # Create new tarball from modified source directory tar czf $(tarball) $(tag) rm -rf $(tag) $(SOURCE_DIR)/run-rat.sh $(tarball) # sign the archive gpg --armor --output $(tarball).asc --detach-sig $(tarball) gpg --print-md MD5 $(tarball) > $(tarball).md5 sha1sum $tarball > $(tarball).sha1 sha256sum $tarball > $(tarball).sha256 sha512sum $tarball > $(tarball).sha512 # check out the arrow RC folder svn co --depth=empty https://dist.apache.org/repos/dist/dev/arrow tmp # add the release candidate for the tag mkdir -p tmp/$(tagrc) cp $(tarball)* tmp/$(tagrc) svn add tmp/$(tagrc) svn ci -m 'Apache Arrow ${version} RC${rc}' tmp/$(tagrc) # clean up rm -rf tmp echo "Success! The release candidate is available here:" echo " https://dist.apache.org/repos/dist/dev/arrow/$(tagrc)" echo "" echo "Commit SHA1: $(release_hash)"