diff options
author | Kristina Chodorow <kchodorow@google.com> | 2016-01-27 16:33:26 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-01-28 15:29:42 +0000 |
commit | 14cf67863d56bab1eef11687a881adf323ba55ad (patch) | |
tree | acf024ac579bf9f42d8fa935ed3b962aea4c0711 /scripts | |
parent | dcb4a384e07c7224afe6d660fd845b55d6c55c86 (diff) |
Rollback of commit e87849b8d391af8f5d98e3a91e680e88a1264b64.
*** Reason for rollback ***
Prerequisite for rolling back j2objc base workspace change
*** Original change description ***
Remove base_workspace from bazel setup
I also removed a couple places the documentation referred to it incorrectly.
There are still a couple of blog posts that mention it, but that seemed okay.
RELNOTES: A bazelrc with --package_path set is no longer required for Bazel to
find its tools. This also means that building //... should work to build
everything in the workspace without including Bazel's own targets.
--
MOS_MIGRATED_REVID=113164089
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/bootstrap/init_workspace.sh | 65 | ||||
-rw-r--r-- | scripts/packages/BUILD | 52 | ||||
-rw-r--r-- | scripts/packages/debian/bazel.bazelrc | 3 | ||||
-rwxr-xr-x | scripts/packages/template_bin.sh | 25 |
4 files changed, 136 insertions, 9 deletions
diff --git a/scripts/bootstrap/init_workspace.sh b/scripts/bootstrap/init_workspace.sh new file mode 100755 index 0000000000..79be02bfc5 --- /dev/null +++ b/scripts/bootstrap/init_workspace.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +# Copyright 2015 The Bazel Authors. All rights reserved. +# +# Licensed 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-up the base workspace, currently used as package_path to provide +# the tools directory. + +# Create symlinks so we can use tools and examples from the base_workspace. +function symlink_directory() { + local dir=$1 + rm -fr "${base_workspace}/${dir}" + mkdir "${base_workspace}/${dir}" + + for i in $(cd ${dir}; ls | grep -v "^BUILD$"); do + ln -s "$(pwd)/${dir}/$i" "${base_workspace}/${dir}/$i"; + done + + touch "${base_workspace}/${dir}/DONT_FOLLOW_SYMLINKS_WHEN_TRAVERSING_THIS_DIRECTORY_VIA_A_RECURSIVE_TARGET_PATTERN" +} + +base_workspace="${WORKSPACE_DIR}/base_workspace" +mkdir -p "${base_workspace}" + +symlink_directory tools +cat > "${base_workspace}/tools/BUILD" <<EOF +package(default_visibility = ["//visibility:public"]) +exports_files(["test_sharding_compliant"]) +EOF + +symlink_directory examples +symlink_directory third_party + +# Create a bazelrc file with the base_workspace directory in the package path. +bazelrc='build --package_path %workspace%:'${base_workspace} +bazelrc="${bazelrc}"$'\nfetch --package_path %workspace%:'${base_workspace} +bazelrc="${bazelrc}"$'\nquery --package_path %workspace%:'${base_workspace} +if [ -z "${HOME-}" ]; then + warning="$INFO No \$HOME variable set, cannot write .bazelrc file." + warning="$warning Consider adding $base_workspace to your package path" + display $warning +elif [ ! -f $HOME/.bazelrc ]; then + display "$INFO Creating a .bazelrc pointing to $base_workspace" + echo -e "$bazelrc" > $HOME/.bazelrc +else + while read rcline; do + if ! grep -q "$rcline" $HOME/.bazelrc; then + warning="$INFO You already have a .bazelrc. Make sure it contains the " + warning="$warning following package paths:\n\n$bazelrc\n\n" + display "$warning" + break + fi + done <<< "$bazelrc" +fi diff --git a/scripts/packages/BUILD b/scripts/packages/BUILD index 554c626e72..86a3a1f5ae 100644 --- a/scripts/packages/BUILD +++ b/scripts/packages/BUILD @@ -93,12 +93,64 @@ pkg_tar( ) pkg_tar( + name = "bazel-tools", + files = [ + "//third_party:srcs", + "//third_party/java/jdk/langtools:srcs", + "//tools:package-srcs", + ], + mode = "0644", + modes = {f: "0755" for f in [ + # List made out of `find -type f -executable` + "third_party/iossim/iossim", + "third_party/ijar/test/zip_test.sh", + "third_party/ijar/test/ijar_test.sh", + "third_party/ijar/test/testenv.sh", + "third_party/protobuf/protoc-osx-x86_32.exe", + "third_party/protobuf/protoc-linux-x86_64.exe", + "third_party/protobuf/protoc-osx-x86_64.exe", + "third_party/protobuf/protoc-linux-x86_32.exe", + "third_party/protobuf/protoc-windows-x86_32.exe", + "third_party/protobuf/protoc-windows-x86_64.exe", + "third_party/py/gflags/tests/flags_modules_for_testing/module_bar.py", + "third_party/py/gflags/tests/flags_modules_for_testing/module_baz.py", + "third_party/py/gflags/tests/flags_modules_for_testing/module_foo.py", + "third_party/py/gflags/tests/gflags_helpxml_test.py", + "third_party/py/gflags/tests/gflags_unittest.py", + "third_party/py/gflags/tests/gflags_validators_test.py", + "third_party/py/gflags/gflags2man.py", + "third_party/py/gflags/setup.py", + "third_party/py/gflags/debian/rules", + "third_party/py/gflags/gflags_validators.py", + "third_party/py/mock/setup.py", + "tools/android/jack/fail.sh", + "tools/android/shuffle_jars.sh", + "tools/android/merge_dexzips.sh", + "tools/android/idlclass.sh", + "tools/android/aar_generator.sh", + "tools/android/resources_processor.sh", + "tools/j2objc/j2objc_wrapper.py", + "tools/genrule/genrule-setup.sh", + "tools/objc/j2objc_dead_code_pruner.py", + "tools/python/2to3.sh", + "tools/cpp/osx_gcc_wrapper.sh", + "tools/test/test-setup.sh", + "tools/jdk/ijar", + "tools/build_defs/docker/testenv.sh", + "tools/build_defs/docker/build_test.sh", + ]}, + package_dir = "/usr/share/lib/bazel/tools", + strip_prefix = "/", +) + +pkg_tar( name = "debian-data", extension = "tar.gz", deps = [ ":bazel-bin", ":bazel-completion", ":bazel-rc", + ":bazel-tools", ], ) diff --git a/scripts/packages/debian/bazel.bazelrc b/scripts/packages/debian/bazel.bazelrc index e69de29bb2..594b54bca8 100644 --- a/scripts/packages/debian/bazel.bazelrc +++ b/scripts/packages/debian/bazel.bazelrc @@ -0,0 +1,3 @@ +build --package_path=%workspace%:/usr/share/lib/bazel/tools +query --package_path=%workspace%:/usr/share/lib/bazel/tools +fetch --package_path=%workspace%:/usr/share/lib/bazel/tools diff --git a/scripts/packages/template_bin.sh b/scripts/packages/template_bin.sh index 594a19c746..d3f7d3b2ba 100755 --- a/scripts/packages/template_bin.sh +++ b/scripts/packages/template_bin.sh @@ -18,7 +18,6 @@ # Installation and etc prefix can be overriden from command line install_prefix=${1:-"/usr/local"} -# TODO(kchodorow): delete by April 2016. bazelrc=${2:-"/etc/bazel.bazelrc"} progname="$0" @@ -34,10 +33,11 @@ function usage() { echo "Usage: $progname [options]" >&2 echo "Options are:" >&2 echo " --prefix=/some/path set the prefix path (default=/usr/local)." >&2 + echo " --bazelrc= set the bazelrc path (default=/etc/bazel.bazelrc)." >&2 echo " --bin= set the binary folder path (default=%prefix%/bin)." >&2 echo " --base= set the base install path (default=%prefix%/lib/bazel)." >&2 echo " --user configure for user install, expands to" >&2 - echo ' `--bin=$HOME/bin --base=$HOME/.bazel' >&2 + echo ' `--bin=$HOME/bin --base=$HOME/.bazel --bazelrc=$HOME/.bazelrc`.' >&2 exit 1 } @@ -139,12 +139,19 @@ if [ -d "${base}" -a -x "${base}/bin/bazel" ]; then rm -fr "${base}" fi -mkdir -p ${bin} ${base} ${base}/bin ${base}/etc +mkdir -p ${bin} ${base} ${base}/bin ${base}/etc ${base}/base_workspace echo -n . unzip -q "${BASH_SOURCE[0]}" bazel bazel-real bazel-complete.bash -d "${base}/bin" echo -n . chmod 0755 "${base}/bin/bazel" "${base}/bin/bazel-real" +unzip -q "${BASH_SOURCE[0]}" -x bazel bazel-real bazel-complete.bash -d "${base}/base_workspace" +echo -n . +cat >"${base}/etc/bazel.bazelrc" <<EO +build --package_path %workspace%:${base}/base_workspace +fetch --package_path %workspace%:${base}/base_workspace +query --package_path %workspace%:${base}/base_workspace +EO echo -n . chmod -R og-w "${base}" chmod -R og+rX "${base}" @@ -159,14 +166,14 @@ echo -n . if [ -f "${bazelrc}" ]; then echo - echo "${bazelrc} already exists, moving it to ${bazelrc}.bak." - mv "${bazelrc}" "${bazelrc}.bak" + echo "${bazelrc} already exists, ignoring. It is either a link to" + echo "${base}/etc/bazel.bazelrc or that it's importing that file with:" + echo " import ${base}/etc/bazel.bazelrc" +else + ln -s "${base}/etc/bazel.bazelrc" "${bazelrc}" + echo . fi -# Not necessary, but this way it matches the Debian package. -touch "${bazelrc}" -echo . - cat <<EOF Bazel is now installed! |