aboutsummaryrefslogtreecommitdiffhomepage
path: root/scripts
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2016-01-27 16:33:26 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-01-28 15:29:42 +0000
commit14cf67863d56bab1eef11687a881adf323ba55ad (patch)
treeacf024ac579bf9f42d8fa935ed3b962aea4c0711 /scripts
parentdcb4a384e07c7224afe6d660fd845b55d6c55c86 (diff)
*** 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-xscripts/bootstrap/init_workspace.sh65
-rw-r--r--scripts/packages/BUILD52
-rw-r--r--scripts/packages/debian/bazel.bazelrc3
-rwxr-xr-xscripts/packages/template_bin.sh25
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!