mirror of
https://git.proxmox.com/git/rustc
synced 2026-01-21 16:14:49 +00:00
- This is breaking builds on Ubuntu, so let's work around it instead of waiting for the ideal correct fix.
167 lines
5.7 KiB
Makefile
Executable File
167 lines
5.7 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
# -*- makefile -*-
|
|
|
|
include /usr/share/dpkg/pkg-info.mk
|
|
include /usr/share/dpkg/architecture.mk
|
|
include /usr/share/dpkg/buildflags.mk
|
|
#RUSTFLAGS = -C link-args="$(LDFLAGS)"
|
|
# temporary workaround for https://github.com/rust-lang/rust/issues/31529
|
|
# this will FAIL if LDFLAGS itself contains shell-interpreted chars beyond
|
|
# unquoted spaces (that addprefix works around the failure of)
|
|
RUSTFLAGS = $(addprefix -C link-args=,$(LDFLAGS))
|
|
export CFLAGS CXXFLAGS CPPFLAGS LDFLAGS RUSTFLAGS
|
|
|
|
# Defines DEB_*_RUST_TYPE triples
|
|
include debian/architecture.mk
|
|
|
|
# Uncomment this to turn on verbose mode.
|
|
#export DH_VERBOSE=1
|
|
|
|
# When using sudo pbuilder, this will cause mk/install.mk to run sudo,
|
|
# but we don't need sudo as a build-dep for the package if we unexport
|
|
# the SUDO_USER variable.
|
|
unexport SUDO_USER
|
|
|
|
# src/rt/miniz.c (incorrectly) triggers -Wmisleading-indentation with
|
|
# gcc-6. See bug #811573.
|
|
CFLAGS += -Wno-misleading-indentation
|
|
|
|
# Debhelper clears MAKEFLAGS, so we have to do this again for any
|
|
# target where we call $(MAKE) directly. Boo.
|
|
DEB_PARALLEL_JOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
PMAKE = $(MAKE) $(if $(DEB_PARALLEL_JOBS),-j$(DEB_PARALLEL_JOBS))
|
|
|
|
# Release type (one of beta, stable or nightly)
|
|
RELEASE_CHANNEL := stable
|
|
# See also ./build-preview-dsc.sh for a script that builds a beta/nightly .dsc
|
|
# out of this packaging. Furthermore, if the build breaks after importing a new
|
|
# upstream stable release, check the do_temporary_fixup function in that file
|
|
# to see if we already know what fix to make.
|
|
|
|
DEB_DESTDIR := $(CURDIR)/debian/tmp
|
|
|
|
RUST_VERSION := $(shell dpkg-parsechangelog --show-field Version | sed -re 's/([^.]+)\.([^.]+)\..*/\1.\2/')
|
|
LIBSTD_PKG := libstd-rust-$(RUST_VERSION)
|
|
|
|
# These are the normal build flags
|
|
DEB_CONFIGURE_FLAGS = \
|
|
--host=$(DEB_HOST_RUST_TYPE) \
|
|
--target=$(DEB_TARGET_RUST_TYPE) \
|
|
--disable-manage-submodules \
|
|
--release-channel=$(RELEASE_CHANNEL) \
|
|
--prefix=/usr
|
|
|
|
# Use system LLVM (comment out to use vendored LLVM)
|
|
DEB_CONFIGURE_FLAGS += --llvm-root=/usr/lib/llvm-3.7
|
|
|
|
ifeq (,$(findstring dlstage0,$(DEB_BUILD_PROFILES)))
|
|
# Without these options, a pre-built stage0 will be downloaded from
|
|
# rust-lang.org at build time (or looked for in dl/).
|
|
#DEB_CONFIGURE_FLAGS += --enable-local-rust --local-rust-root=/usr
|
|
endif
|
|
|
|
BUILD_DOCS = 1
|
|
ifneq (,$(findstring nodoc,$(DEB_BUILD_PROFILES)))
|
|
DEB_CONFIGURE_FLAGS += --disable-docs
|
|
BUILD_DOCS =
|
|
endif
|
|
|
|
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
DEB_CONFIGURE_FLAGS += --disable-optimize --disable-optimize-cxx --disable-optimize-llvm
|
|
endif
|
|
|
|
|
|
%:
|
|
dh $@ --parallel
|
|
|
|
# Note: SHELL is not set by dash, but the configure script wants to use it
|
|
override_dh_auto_configure:
|
|
SHELL=/bin/sh PATH="$$PWD/debian/bin:$$PATH" \
|
|
./configure $(DEB_CONFIGURE_FLAGS)
|
|
# test "$$($(MAKE) --no-print-directory print-CFG_FILENAME_EXTRA | tail -n1 | cut -d= -f2)" = "$$(echo $(RUST_VERSION))"
|
|
|
|
|
|
override_dh_auto_clean:
|
|
set -e; \
|
|
if [ -f Makefile ]; then \
|
|
$(PMAKE) clean-all; \
|
|
$(RM) Makefile config.stamp; \
|
|
fi
|
|
$(RM) src/etc/snapshot.pyc
|
|
|
|
override_dh_auto_build-arch:
|
|
dh_auto_build -- all VERBOSE=1
|
|
|
|
override_dh_auto_build-indep:
|
|
$(if $(BUILD_DOCS),dh_auto_build -- docs)
|
|
|
|
override_dh_auto_install:
|
|
dh_auto_install --destdir=$(DEB_DESTDIR)
|
|
|
|
mkdir -p $(DEB_DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/
|
|
mv $(DEB_DESTDIR)/usr/lib/lib*.so $(DEB_DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/
|
|
|
|
# Replace duplicated compile-time/run-time dylibs with symlinks
|
|
@set -e; \
|
|
for f in $(DEB_DESTDIR)/usr/lib/rustlib/$(DEB_HOST_RUST_TYPE)/lib/lib*.so; do \
|
|
name=$${f##*/}; \
|
|
if [ -f "$(DEB_DESTDIR)/usr/lib/$(DEB_HOST_MULTIARCH)/$$name" ]; then \
|
|
echo "ln -sf ../../../$(DEB_HOST_MULTIARCH)/$$name $$f"; \
|
|
ln -sf ../../../$(DEB_HOST_MULTIARCH)/$$name $$f; \
|
|
fi; \
|
|
done
|
|
|
|
ifneq (,$(BUILD_DOCS))
|
|
# Brute force to remove privacy-breach-logo lintian warning.
|
|
# We could have updated the upstream sources but it would complexify
|
|
# the rebase
|
|
@set -e; \
|
|
find $(DEB_DESTDIR)/usr/share/doc/rust/html -iname '*.html' | \
|
|
while read file; do \
|
|
topdir=$$(echo "$$file" | sed 's,^$(DEB_DESTDIR)/usr/share/doc/rust/html/,,; s,/[^/]*$$,/,; s,^[^/]*$$,,; s,[^/]\+/,../,g'); \
|
|
sed -i -e "s,https://doc.rust-lang.org/\(favicon.ico\|logos/rust-logo-32x32-blk.png\),$${topdir}rust-logo-32x32-blk.png," \
|
|
-e "s,https://www.rust-lang.org/\(favicon.ico\|logos/rust-logo-32x32-blk.png\),$${topdir}rust-logo-32x32-blk.png," "$$file"; \
|
|
done
|
|
|
|
find $(DEB_DESTDIR) \( -iname '*.html' -empty -o -name .lock -o -name '*.inc' \) -delete
|
|
endif
|
|
|
|
override_dh_install-arch:
|
|
dh_install
|
|
dh_install -p$(LIBSTD_PKG) usr/lib/$(DEB_HOST_MULTIARCH)/
|
|
|
|
chmod -x \
|
|
debian/rust-gdb/usr/share/rust-gdb/*.py \
|
|
debian/rust-lldb/usr/share/rust-lldb/*.py
|
|
|
|
override_dh_installchangelogs:
|
|
dh_installchangelogs RELEASES.md
|
|
|
|
override_dh_installdocs:
|
|
dh_installdocs -X.tex -X.aux -X.log -X.out -X.toc
|
|
|
|
override_dh_compress:
|
|
dh_compress -X.woff
|
|
|
|
override_dh_auto_test:
|
|
ifeq (, $(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
RUST_BACKTRACE=1 $(PMAKE) VERBOSE=1 check-notidy
|
|
endif
|
|
|
|
override_dh_makeshlibs:
|
|
dh_makeshlibs -V
|
|
|
|
# dh_makeshlibs doesn't support our "libfoo-version.so" naming
|
|
# structure, so we have to do this ourselves.
|
|
install -o 0 -g 0 -d debian/$(LIBSTD_PKG)/DEBIAN
|
|
ls debian/$(LIBSTD_PKG)/usr/lib/$(DEB_HOST_MULTIARCH)/lib*.so | \
|
|
sed -n 's,^.*/\(lib.*\)-\(.\+\)\.so$$,\1 \2,p' | \
|
|
while read name version; do \
|
|
echo "$$name $$version $(LIBSTD_PKG) (>= $(DEB_VERSION_UPSTREAM))"; \
|
|
done > debian/$(LIBSTD_PKG)/DEBIAN/shlibs
|
|
chmod 644 debian/$(LIBSTD_PKG)/DEBIAN/shlibs
|
|
chown 0:0 debian/$(LIBSTD_PKG)/DEBIAN/shlibs
|
|
|
|
override_dh_shlibdeps:
|
|
dh_shlibdeps -- -x$(LIBSTD_PKG)
|