1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
#!/usr/bin/make -f
export DH_VERBOSE = 1
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
#DPKG_EXPORT_BUILDFLAGS = 1
#include /usr/share/dpkg/buildflags.mk
export VERBOSE = yes
export BAZDIR = ${CURDIR}/debian/bazel-bootstrap
export BAZDATADIR = ${CURDIR}/debian/bazel-bootstrap-data
export BAZSRCDIR = ${CURDIR}/debian/bazel-bootstrap-source
# Bypass ccache
export CCACHE_DISABLE = 1
export CCACHE_TEMPDIR = ${CURDIR}/debian/ccachetmp
# Set locale for reproducible builds
export LC_ALL = C
# Ensure packages build with no Internet access
export http_proxy=127.0.0.1:9
export https_proxy=127.0.0.1:9
# BAZEL_CXXOPTS and BAZEL_LINKOPTS take a list of flags seperated by colon
export space = $() $()
export BAZEL_CXXOPTS = $(subst $(space),:,-std=c++17 ${CPPFLAGS} ${CXXFLAGS})
export BAZEL_LINKOPTS = $(subst $(space),:,-lstdc++ -lm ${LDFLAGS})
# Use the local JDK
export EXTRA_BAZEL_ARGS = \
--host_javabase=@local_jdk//:jdk \
--define=distribution=debian \
--noremote_accept_cached \
--verbose_failures \
--subcommands \
--compilation_mode dbg \
--action_env=CCACHE_DISABLE \
--action_env=CCACHE_TEMPDIR \
--action_env=LC_ALL \
--host_action_env=CCACHE_DISABLE \
--host_action_env=CCACHE_TEMPDIR \
--host_action_env=LC_ALL \
--sandbox_debug \
--sandbox_writable_path=${CCACHE_TEMPDIR} \
--override_repository=com_google_protobuf=${CURDIR}/tools/distributions/debian/protobuf \
--override_repository=remote_java_tools_linux=${CURDIR}/mock_repos/remote_java_tools_linux \
--override_repository=bazel_skylib=${CURDIR}/mock_repos/bazel_skylib \
--override_repository=io_bazel_skydoc=${CURDIR}/mock_repos/bazel_skydoc \
--override_repository=rules_pkg=${CURDIR}/mock_repos/rules_pkg \
--override_repository=rules_cc=${CURDIR}/mock_repos/rules_cc \
--override_repository=rules_java=${CURDIR}/mock_repos/rules_java \
--override_repository=rules_proto=${CURDIR}/mock_repos/rules_proto \
--override_repository=platforms=${CURDIR}/mock_repos/platforms \
--distinct_host_configuration=false
export PROTOC = /usr/bin/protoc
export GRPC_JAVA_PLUGIN = /usr/bin/grpc_java_plugin
export JAVA_VERSION = 17
# Prevent Out-of-Memory failures on some architectures, enable annotation processing
export BAZEL_JAVAC_OPTS = -J-Xmx4096m --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED -proc:full
# Strip Ubuntu-specific metadata, bazel tries to parse it as json and fails.
LDFLAGS:=$(shell echo $(LDFLAGS) | sed 's/-Wl,--package-metadata=[^ ]*//g')
%:
dh $@ --with python3
override_dh_auto_build:
mkdir -p ${CCACHE_TEMPDIR}
./compile.sh
override_dh_auto_clean:
dh_auto_clean
rm -rf derived
rm -rf output
rm -rf bazel-*
override_dh_install:
mkdir -p debian/tmp/usr/src/bazel-bootstrap
ls | sed -r '/(debian|derived|examples|output|site|bazel-)/d' | \
xargs cp -r -t debian/tmp/usr/src/bazel-bootstrap
rm -f debian/tmp/usr/src/bazel-bootstrap/scripts/packages/chocolatey/.gitignore
rm -rf mock_repos
rm -f output/usr/share/bazel/xcode-locator
rm -rf output/usr/share/bazel/embedded_tools/tools/jdk/nosystemjdk
mv output/etc debian/tmp
mv output/usr/bin debian/tmp/usr
mv output/usr/share debian/tmp/usr
# Fail build (and show culprits) if Bazel components are not properly installed
mv output debian/tmp/leftovers
ls -laR debian/tmp/leftovers
dh_install
rm -rf ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/zip/zipper
override_dh_installdocs-arch:
dh_installdocs --package=bazel-bootstrap -XREADME.Debian
override_dh_installdocs-indep:
dh_installdocs --package=bazel-bootstrap-data \
--doc-main-package=bazel-bootstrap
dh_installdocs --package=bazel-bootstrap-source \
--doc-main-package=bazel-bootstrap -XREADME.Debian
override_dh_link-indep:
jdupes -rl ${BAZDATADIR}/usr
find ${BAZDATADIR}/usr/share/bazel/embedded_tools -type f -name \
'*.h' -printf '%h\n' | sort -u | sed 's@/build.*embedded_tools/@@' | \
xargs -I% mkdir -p ${BAZDATADIR}/usr/include/bazel/%
find ${BAZDATADIR}/usr/share/bazel/embedded_tools -name '*.h' | \
sed 's@/build.*/embedded_tools/@@g' | xargs -I% ln -rs \
${BAZDATADIR}/usr/share/bazel/embedded_tools/% \
${BAZDATADIR}/usr/include/bazel/%
dh_link
override_dh_fixperms-indep:
find ${BAZDATADIR}/usr/share -type f -print0 2>/dev/null | xargs -0r chmod a-x
find ${BAZSRCDIR}/usr/src -type f -not -name '*.sh' -print0 2>/dev/null | \
xargs -0r chmod a-x
find ${BAZDATADIR}/usr/share/doc/bazel/examples -type f \
-not -name '*.sh' -print0 2>/dev/null | xargs -0r chmod a-x
find ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools \
-type f -name '*.sh*' -print0 2>/dev/null | xargs -0r chmod a+x
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/buildstamp/get_workspace_status
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/cpp/build_interface_so
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/cpp/linux_cc_wrapper.sh.tpl
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/cpp/osx_cc_wrapper.sh.tpl
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/objc/gcov_stub
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/objc/mcov_stub
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/objc/protobuf_support
chmod a+x ${BAZDATADIR}/usr/share/bazel/embedded_tools/tools/python/pywrapper_template.txt
dh_fixperms
|