summaryrefslogtreecommitdiff
path: root/debian/rules.d/binary-snapshot.mk
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules.d/binary-snapshot.mk')
-rw-r--r--debian/rules.d/binary-snapshot.mk234
1 files changed, 234 insertions, 0 deletions
diff --git a/debian/rules.d/binary-snapshot.mk b/debian/rules.d/binary-snapshot.mk
new file mode 100644
index 0000000..72f6c74
--- /dev/null
+++ b/debian/rules.d/binary-snapshot.mk
@@ -0,0 +1,234 @@
+arch_binaries := $(arch_binaries) snapshot
+
+ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE)))
+ p_snap = gcc-snapshot
+else ifneq (,$(findstring gcc-linaro, $(PKGSOURCE)))
+ p_snap = gcc-linaro
+else
+ $(error unknown build for single gcc package)
+endif
+
+ifeq ($(DEB_CROSS),yes)
+ p_snap := $(p_snap)$(cross_bin_arch)
+endif
+d_snap = debian/$(p_snap)
+
+dirs_snap = \
+ $(docdir)/$(p_snap) \
+ usr/lib
+
+ifeq ($(with_hppa64),yes)
+ snapshot_depends = binutils-hppa64
+endif
+
+$(stampdir)/ecj_binaries: $(install_snap_stamp)
+ mkdir -p $(builddir)/aot/jar $(builddir)/aot/bin
+ cp $(ecj_jar) $(builddir)/aot/jar/ecj-standalone.jar
+ zip -d $(builddir)/aot/jar/ecj-standalone.jar \
+ 'org/eclipse/jdt/core/JDTCompilerAdapter*'
+
+ cd $(builddir)/aot/jar \
+ && fastjar xf ecj-standalone.jar \
+ && find -name '*.rsc' -o -name '*.properties' \
+ | fastjar -c -@ - -f ../resources.jar
+ rm -rf $(builddir)/aot/jar/META-INF $(builddir)/aot/jar/org
+ $(d)/$(PF)/bin/gcj \
+ -c -O2 -g -fPIC -fjni -findirect-dispatch \
+ -o $(builddir)/aot/bin/resources.o $(builddir)/aot/resources.jar
+
+ cp $(srcdir)/libjava/contrib/classfile.py $(builddir)/aot/
+ cp $(buildlibdir)/libjava/contrib/*.py $(builddir)/aot/
+ grep -v '^sys.path.insert' $(buildlibdir)/libjava/contrib/aot-compile \
+ > $(builddir)/aot/aot-compile
+ chmod 755 $(builddir)/aot/aot-compile
+ patch -p1 < debian/patches/aotcompile.diff
+ LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(CURDIR)/$(d)/$(PF)/lib \
+ RPATH=-Wl,-rpath,/$(PF)/lib \
+ PYTHONPATH=$(builddir)/aot \
+ python $(builddir)/aot/aot-compile \
+ --gcj=$(CURDIR)/$(d)/$(PF)/bin/gcj \
+ --dbtool=$(CURDIR)/$(d)/$(PF)/bin/gcj-dbtool \
+ --makeflags="$(NJOBS)" \
+ --ldflags="$(LDFLAGS)" \
+ $(builddir)/aot/jar $(builddir)/aot/bin
+ touch $@
+
+# ----------------------------------------------------------------------
+$(binary_stamp)-snapshot: $(install_snap_stamp) \
+ $(if $(filter $(with_ecj),yes),$(stampdir)/ecj_binaries)
+ dh_testdir
+ dh_testroot
+ mv $(install_snap_stamp) $(install_snap_stamp)-tmp
+
+ rm -rf $(d_snap)
+ dh_installdirs -p$(p_snap) $(dirs_snap)
+
+ mv $(d)/$(PF) $(d_snap)/usr/lib/
+
+ find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf
+ find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f
+
+ : # FIXME: libbacktrace is not installed by default
+ for d in . 32 n32 64 sf hf; do \
+ if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \
+ install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \
+ $(d_snap)/$(gcc_lib_dir)/$$d; \
+ fi; \
+ done
+ if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \
+ install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \
+ $(d_snap)/$(gcc_lib_dir)/include/; \
+ install -m644 $(srcdir)/libbacktrace/backtrace.h \
+ $(d_snap)/$(gcc_lib_dir)/include/; \
+ fi
+
+ rm -rf $(d_snap)/$(PF)/lib/nof
+ifeq ($(with_java),yes)
+ mv $(d)/usr/lib/jvm $(d_snap)/usr/lib/
+
+ dh_link -p$(p_snap) \
+ $(gcc_lib_dir)/include/gcj $(jvm_dir)/include/gcj \
+ usr/bin/ecj $(jvm_dir)/bin/javac
+
+ ifneq ($(DEB_TARGET_ARCH_CPU),$(java_cpu))
+ ln -sf $(java_cpu) $(d_snap)/$(jvm_dir)/jre/lib/$(DEB_TARGET_ARCH_CPU)
+ endif
+ ifeq ($(with_ecj),yes)
+ install -m755 $(builddir)/aot/bin/javac $(d_snap)/$(jvm_dir)/bin/javac
+ install -m755 $(builddir)/aot/bin/ecj1 $(d_snap)/$(gcc_lexec_dir)/ecj1
+
+ ifeq (./,$(dir $(ecj_jar)))
+ install -m 644 $(ecj_jar) $(d_snap)/$(jvm_dir)/lib/ecj.jar
+ else
+ dh_link -p$(p_snap) \
+ $(ecj_jar) $(jvm_dir)/lib/ecj.jar
+ endif
+ endif
+
+ : # provide .jinfo file
+ ( \
+ echo 'name=$(jvm_name_short)'; \
+ echo 'alias=java-gcj$(pkg_ver)'; \
+ echo 'priority=$(priority)'; \
+ echo 'section=main'; \
+ echo ''; \
+ for i in $(jre_tools); do \
+ echo "jre $$i /$(jvm_dir)/jre/bin/$$i"; \
+ done; \
+ for i in $(jdk_tools); do \
+ echo "jdk $$i /$(jvm_dir)/bin/$$i"; \
+ done; \
+ ) > $(d_snap)/usr/lib/jvm/.java-gcj$(pkg_ver)-snap.jinfo
+endif
+
+ifeq ($(with_ada),yes FIXME: apply our ada patches)
+ dh_link -p$(p_snap) \
+ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \
+ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a
+ dh_link -p$(p_snap) \
+ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \
+ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a
+
+ set -e; \
+ for lib in lib{gnat,gnarl}; do \
+ vlib=$$lib-$(GNAT_SONAME); \
+ mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \
+ rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \
+ dh_link -p$(p_snap) \
+ /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \
+ /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \
+ /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \
+ done
+endif
+ifeq ($(with_ada),yes)
+ ln -sf gcc $(d_snap)/$(PF)/bin/gnatgcc
+endif
+
+ifeq ($(with_hppa64),yes)
+ : # provide as and ld links
+ dh_link -p $(p_snap) \
+ /usr/bin/hppa64-linux-gnu-as \
+ /$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/as \
+ /usr/bin/hppa64-linux-gnu-ld \
+ /$(PF)/libexec/gcc/hppa64-linux-gnu/$(GCC_VERSION)/ld
+endif
+
+ifeq ($(with_check),yes)
+ dh_installdocs -p$(p_snap) test-summary
+# more than one libgo.sum, avoid it
+ mkdir -p $(d_snap)/$(docdir)/$(p_snap)/test-summaries
+ cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \
+ $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \
+ $(d_snap)/$(docdir)/$(p_snap)/test-summaries/
+ ifeq ($(with_go),yes)
+ cp -p $(buildlibdir)/libgo/libgo.sum \
+ $(d_snap)/$(docdir)/$(p_snap)/test-summaries/
+ endif
+ if which xz 2>&1 >/dev/null; then \
+ echo -n $(d_snap)/$(docdir)/$(p_snap)/test-summaries/* \
+ | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -7v; \
+ fi
+else
+ dh_installdocs -p$(p_snap)
+endif
+ if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \
+ then \
+ cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \
+ $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \
+ fi
+ cp -p debian/README.snapshot \
+ $(d_snap)/$(docdir)/$(p_snap)/README.Debian
+ cp -p debian/README.Bugs \
+ $(d_snap)/$(docdir)/$(p_snap)/
+ dh_installchangelogs -p$(p_snap)
+ifeq ($(DEB_TARGET_ARCH),hppa)
+ dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \
+ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i)))
+else
+ dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \
+ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1d f951 go1 jc1 lto1, -X/$(i)))
+endif
+ dh_compress -p$(p_snap) -X README.Bugs -X.log.xz -X.sum.xz
+ -find $(d_snap) -type d ! -perm 755 -exec chmod 755 {} \;
+ dh_fixperms -p$(p_snap)
+ifeq ($(with_ada),yes)
+ find $(d_snap)/$(gcc_lib_dir) -name '*.ali' | xargs -r chmod 444
+endif
+
+ mkdir -p $(d_snap)/usr/share/lintian/overrides
+ cp -p debian/gcc-snapshot.overrides \
+ $(d_snap)/usr/share/lintian/overrides/$(p_snap)
+
+ ( \
+ echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libffi $(FFI_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgcj $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgcj-tools $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgij $(GCJ_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgcj_bc 1 ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+ echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_VERSION))'; \
+ ) > debian/shlibs.local
+
+ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \
+ dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib -Xlibgcj-tools
+ -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars
+
+ifeq ($(with_multiarch_lib),yes)
+ : # paths needed for relative lookups from startfile_prefixes
+ for ma in $(xarch_multiarch_names); do \
+ mkdir -p $(d_snap)/lib/$$ma; \
+ mkdir -p $(d_snap)/usr/lib/$$ma; \
+ done
+endif
+
+ dh_gencontrol -p$(p_snap) -- $(common_substvars) \
+ '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)'
+ dh_installdeb -p$(p_snap)
+ dh_md5sums -p$(p_snap)
+ dh_builddeb -p$(p_snap)
+
+ trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp)