diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2017-05-12 22:48:36 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2017-05-12 22:48:36 +0300 |
commit | 37d630875d33bf3c291026c40bb08d1b6c9edcc8 (patch) | |
tree | 68fb026f54a962cf1d631f010e98681add6ed014 /debian/rules | |
download | openjdk-8-debian.tar.gz |
Imported debian/openjdk-8_8u131-b11-1debian/8u131-b11-1debian
Diffstat (limited to 'debian/rules')
-rwxr-xr-x | debian/rules | 2334 |
1 files changed, 2334 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3f11e3a --- /dev/null +++ b/debian/rules @@ -0,0 +1,2334 @@ +#!/usr/bin/make -f +# -*- makefile -*- + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +unexport LANG LC_ALL + +dh_version := $(shell dpkg-query -f '$${Version}\n' -W debhelper | sed -n 's/^\(.\).*/\1/p') + +# using brace expansion and substring replacements (${var:0:2}). +SHELL = /bin/bash + +vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) + +DPKG_VARS := $(shell dpkg-architecture) +DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) +DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) +DEB_BUILD_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH) +DEB_HOST_ARCH_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_CPU) +DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) + +PATH := $(CURDIR)/bin:$(PATH) +export PATH + +CHANGELOG_VARS := $(shell dpkg-parsechangelog | sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') +PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) +PKGVERSION := $(call vafilt,$(CHANGELOG_VARS),Version) + +distribution := $(shell lsb_release --id --short) +distrel := $(shell lsb_release --codename --short) +derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ + elif dpkg-vendor --derives-from Debian; then echo Debian; \ + else echo Unknown; fi) +ifeq ($(distrel),n/a) + distrel := sid +endif + +multiarch_dir = /$(DEB_HOST_MULTIARCH) + +hotspot_archs = amd64 i386 arm64 ppc64 ppc64el sparc64 kfreebsd-amd64 kfreebsd-i386 +# FIXME: use bootcycle builds for zero archs? +bootcycle_build = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),yes) +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) + bootcycle_build = +endif + +shark_archs = amd64 i386 kfreebsd-amd64 kfreebsd-i386 +# Shark build but just crash +shark_archs = + +ifneq (,$(filter $(distrel),lucid precise quantal raring saucy trusty utopic vivid wily lenny etch squeeze wheezy jessie)) + is_default = no +else + is_default = yes +endif + +srcdir = src +builddir = build +zbuilddir = build-zero +jbuilddir = build-jamvm + +VENDOR = openjdk +Vendor = OpenJDK +TOP = usr/lib/jvm +origin = openjdk +basename = openjdk-$(shortver) +ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) + priority = $(if $(filter yes, $(is_default)),1081,1069) + vm_name = Hotspot JIT +else ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) + priority = $(if $(filter yes, $(is_default)),1075,1065) + vm_name = Hotspot Shark +else + priority = $(if $(filter yes, $(is_default)),1074,1063) + vm_name = Hotspot Zero +endif +jvmver = 1.8.0 +shortver = 8 +updatever := $(shell echo $(PKGVERSION) | sed -n 's/^$(shortver)u\([0-9]\+\).*/\1/p') +buildver := $(shell echo $(PKGVERSION) | sed -n 's/^$(shortver)[^-]*-\(b[0-9]\+\).*/\1/p') + +ifneq (,$(DEB_HOST_MULTIARCH)) + jdirname = java-$(shortver)-$(origin)-$(DEB_HOST_ARCH) + jdiralias = java-$(jvmver)-$(origin)-$(DEB_HOST_ARCH) + basedir = $(TOP)/$(jdirname) + commonbasedir = $(TOP)/java-$(shortver)-$(origin)-common + commonbasedir = $(basedir) + etcdir = etc/java-$(shortver)-$(origin) +else + jdirname = java-$(shortver)-$(origin) + jdiralias = java-$(jvmver)-$(origin) + basedir = $(TOP)/$(jdirname) + commonbasedir = $(TOP)/java-$(shortver)-$(origin) + etcdir = etc/$(jdirname) +endif +security = $(etcdir)/security +ifneq ($(bootcycle_build),yes) + jreimg = images/j2re-image + sdkimg = images/j2sdk-image + build_target = images +else + jreimg = bootcycle-build/images/j2re-image + sdkimg = bootcycle-build/images/j2sdk-image + build_target = bootcycle-images +endif + +# Support parallel=<n> in DEB_BUILD_OPTIONS (see #209008) +COMMA=, +SPACE = $(EMPTY) $(EMPTY) +ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) + NJOBS = $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) +endif + +with_check = $(if $(findstring nocheck, $(DEB_BUILD_OPTIONS)),,yes) +ifneq (,$(filter $(DEB_HOST_ARCH), armel)) + with_check = disabled running check on $(DEB_HOST_ARCH) +endif + +with_docs = $(if $(findstring nodocs, $(DEB_BUILD_OPTIONS)),,yes) +ifneq (,$(findstring shark, $(PKGSOURCE))) + with_docs = disabled for shark +endif + +with_wgy_zenhai = $(if $(filter $(distrel),lenny),,yes) + +arch_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i586 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc powerpcspe=ppc ppc64=ppc64 ppc64el=ppc64le sparc=sparc sparc64=sparcv9 sh4=sh s390x=s390x ia64=ia64 x32=x32 +archdir_map := alpha=alpha arm=arm armel=arm armhf=arm arm64=aarch64 amd64=amd64 hppa=parisc i386=i386 m68k=m68k mips=mips mipsel=mipsel mips64=mips64 mips64el=mips64el powerpc=ppc powerpcspe=ppc ppc64=ppc64 ppc64el=ppc64le sparc=sparc sparc64=sparcv9 sh4=sh s390x=s390x ia64=ia64 x32=x32 + +jvmarch := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \ + $(filter $(DEB_HOST_ARCH_CPU)=%, $(arch_map)))) +archdir := $(strip $(patsubst $(DEB_HOST_ARCH_CPU)=%, %, \ + $(filter $(DEB_HOST_ARCH_CPU)=%, $(archdir_map)))) +ifeq ($(DEB_HOST_ARCH),x32) + jvmarch := x32 + archdir := x32 +endif + +default_vm = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),hotspot,zero) +hotspot_version = $(if $(filter $(DEB_HOST_ARCH), $(hotspot_archs)),default,zero) +hotspot_version = default +# FIXME: 8u91 breaks zero, the jdk8-aarch64 hotspot has these issues fixed, +# without any updates to the jdk8u project. +hotspot_aarch64_archs = arm64 # armhf powerpc s390x +ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs))) + hotspot_version = aarch64 +endif + +any_archs = alpha amd64 armel armhf arm64 i386 ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc sparc64 s390x x32 kfreebsd-i386 kfreebsd-amd64 + +ifeq (,$(filter $(distrel),squeeze lucid sid stretch)) + jamvm_archs = amd64 armel armhf i386 powerpc kfreebsd-i386 kfreebsd-amd64 mips mipsel +endif +ifeq (,$(filter $(distrel),wheezy squeeze lucid)) + jamvm_defaults = +endif + +# disabled, hotspot updates tend to break it too often ... +jamvm_archs = + +altshark_archs = powerpc ppc64 ppc64el +# Shark build but just crash +altshark_archs = + +altzero_archs = $(filter-out sparc, $(hotspot_archs)) $(altshark_archs) + +ifeq (,$(filter noaltzero, $(DEB_BUILD_OPTIONS))$(filter noaltshark, $(DEB_BUILD_OPTIONS))) + ifneq (,$(filter $(DEB_HOST_ARCH), $(altzero_archs))) + ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs) $(altshark_archs))) + alternate_vms += shark + zero_dir = shark + else + alternate_vms += zero + zero_dir = zero + endif + endif +endif +ifeq (,$(filter noaltjamvm, $(DEB_BUILD_OPTIONS))) + ifneq (,$(filter $(DEB_HOST_ARCH), $(jamvm_archs))) + alternate_vms += jamvm + endif +endif + +BOOTJDK_HOME := $(strip $(subst /bin/javac,, $(firstword $(wildcard \ + /usr/lib/jvm/java-8-openjdk-$(DEB_BUILD_ARCH)/bin/javac \ + /usr/lib/jvm/java-7-openjdk-$(DEB_BUILD_ARCH)/bin/javac \ + /usr/lib/jvm/java-7-openjdk/bin/javac \ + )))) + +ifeq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH)) + BUILDJDK_HOME = $(CURDIR)/$(builddir)/$(sdkimg) +else + BUILDJDK_HOME = $(BOOTJDK_HOME) +endif + +OPENJDK_VERSION = jdk$(shortver)u$(updatever)-$(buildver) + +# for Hotspot: hotspot/make/linux/makefiles/vm.make +# Don't overwrite Hotspot opt level : +# -O3 is already default option for hotspot + +# FIXME: ftbfs with -Werror=format-security +dpkg_buildflags_hs = \ + DEB_CFLAGS_MAINT_STRIP="-O2 -O3 -Werror=format-security" \ + DEB_CXXFLAGS_MAINT_STRIP="-O2 -O3 -Werror=format-security" +# jdk/make/CompileDemos.gmk (SetupJVMTIDemo) doesn't like commas in flags +dpkg_buildflags_hs += \ + DEB_LDFLAGS_MAINT_STRIP="-Wl,-z,relro -Wl,-Bsymbolic-functions" \ + DEB_LDFLAGS_MAINT_APPEND="-Xlinker -z -Xlinker relro -Xlinker -Bsymbolic-functions" +dpkg_buildflags_hs += dpkg-buildflags +export EXTRA_CPPFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CPPFLAGS) +export EXTRA_CFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CFLAGS) $(shell $(dpkg_buildflags_hs) --get CPPFLAGS) +export EXTRA_CXXFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get CXXFLAGS) +export EXTRA_LDFLAGS_HS := $(shell $(dpkg_buildflags_hs) --get LDFLAGS) + +# for JDK: jdk/make/common/Defs.gmk +# Don't overwrite JDK opt level : +# 1) with forced -03, it cause wrong Math.* computations, see #679292 and #678228 +# 2) JDK already use it's own OPTIMIZATION_LEVEL variable for each module +dpkg_buildflags_jdk = DEB_CFLAGS_MAINT_STRIP="-O2 -O3" DEB_CXXFLAGS_MAINT_STRIP="-O2 -O3" +dpkg_buildflags_jdk += dpkg-buildflags +export EXTRA_CPPFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CPPFLAGS) +export EXTRA_CFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CFLAGS) $(shell $(dpkg_buildflags_jdk) --get CPPFLAGS) +export EXTRA_CXXFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get CXXFLAGS) +export EXTRA_LDFLAGS_JDK := $(shell $(dpkg_buildflags_jdk) --get LDFLAGS) + +#for JamVM: Makefile.am +ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) +dpkg_buildflags_jamvm += DEB_CFLAGS_MAINT_STRIP="-O2" DEB_CXXFLAGS_MAINT_STRIP="-O2" +dpkg_buildflags_jamvm += DEB_CFLAGS_MAINT_APPEND="-O3" DEB_CXXFLAGS_MAINT_APPEND="-O3" +endif +dpkg_buildflags_jamvm += dpkg-buildflags +export EXTRA_CPPFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CPPFLAGS) +export EXTRA_CFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CFLAGS) +export EXTRA_CXXFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get CXXFLAGS) +export EXTRA_LDFLAGS_JAMVM := $(shell $(dpkg_buildflags_jamvm) --get LDFLAGS) + +#for IcedTea +ifeq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) +dpkg_buildflags_it += DEB_CFLAGS_MAINT_STRIP="-O2" DEB_CXXFLAGS_MAINT_STRIP="-O2" +dpkg_buildflags_it += DEB_CFLAGS_MAINT_APPEND="-O3" DEB_CXXFLAGS_MAINT_APPEND="-O3" +endif +dpkg_buildflags_it += dpkg-buildflags +export EXTRA_CPPFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CPPFLAGS) +export EXTRA_CFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CFLAGS) +export EXTRA_CXXFLAGS_IT := $(shell $(dpkg_buildflags_it) --get CXXFLAGS) +export EXTRA_LDFLAGS_IT := $(shell $(dpkg_buildflags_it) --get LDFLAGS) + +# This section should be in sync with "bd_gcc" definition +ifneq (,$(filter $(distrel),squeeze lucid)) + export CC = gcc-4.4 + export CXX = g++-4.4 +else ifneq (,$(filter $(distrel),wheezy quantal raring)) + export CC = gcc-4.7 + export CXX = g++-4.7 +else ifneq (,$(filter $(distrel),precise)) + export CC = gcc-4.6 + export CXX = g++-4.6 +else ifneq (,$(filter $(distrel),saucy trusty)) + export CC = gcc-4.8 + export CXX = g++-4.8 +else ifneq (,$(filter $(distrel),utopic vivid jessie)) + export CC = gcc-4.9 + export CXX = g++-4.9 +else ifneq (,$(filter $(distrel),wily xenial)) + export CC = $(DEB_HOST_GNU_TYPE)-gcc-5 + export CXX = $(DEB_HOST_GNU_TYPE)-g++-5 +else ifneq (,$(filter $(distrel),sid stretch)) + export CC = $(DEB_HOST_GNU_TYPE)-gcc-6 + export CXX = $(DEB_HOST_GNU_TYPE)-g++-6 +else + export CC = $(DEB_HOST_GNU_TYPE)-gcc-6 + export CXX = $(DEB_HOST_GNU_TYPE)-g++-6 +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) +ifeq ($(derivative),Ubuntu) + OPT_CFLAGS/cppInterpreter_arm.o = -march=armv6 -mtune=cortex-a8 -O2 -falign-functions=64 -falign-loops=8 -g0 +else + OPT_CFLAGS/cppInterpreter_arm.o = -O2 -falign-functions=32 -falign-loops=8 -g0 +endif +export OPT_CFLAGS/cppInterpreter_arm.o +endif + +with_pulse = yes +ifneq (,$(filter $(DEB_HOST_ARCH), alpha)) + with_pulse = +endif + +ifneq (,$(filter $(distrel),squeeze lucid)) + with_bridge = bridge + with_jni_bridge = yes +else ifneq (,$(filter $(distrel),xenial yakkety)) + # TCK tests still failing + with_bridge = +else + with_bridge = atk +endif + +with_nss = yes +with_tzdata = + +ifneq (,$(filter $(distrel),squeeze wheezy lucid precise)) + with_check = +else + bd_jtreg = jtreg, +endif + +on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) + +ifeq ($(derivative),Debian) + with_wm = $(notdir $(firstword $(wildcard /usr/bin/metacity /usr/bin/twm))) + ifneq (,$(findstring twm, $(with_wm))) + with_wm_args = -f $(CURDIR)/bin/jtreg.tmwrc + endif + bd_wm = twm | metacity, twm | dbus-x11, +else + with_wm = $(notdir $(firstword $(wildcard /usr/bin/metacity /usr/bin/twm))) + with_wm_args = + ifneq (,$(findstring twm, $(with_wm))) + with_wm_args = -f $(CURDIR)/bin/jtreg.tmwrc + endif + ifneq (,$(filter $(distrel),saucy raring quantal precise lucid)) + bd_wm = metacity | twm, dbus-x11, + else + bd_wm = twm | metacity, twm | dbus-x11, + endif +endif +ifeq ($(with_wm),metacity) + with_wm_prefix = dbus-launch --exit-with-session +endif + +ifeq (,$(filter $(distrel),squeeze wheezy lucid precise quantal raring saucy trusty)) + ifeq (,$(filter $(DEB_HOST_ARCH),sh4)) + with_systemtap = yes + ALT_SDT_H := $(firstword $(wildcard /usr/include/*/sys/sdt.h /usr/include/sys/sdt.h)) + export ALT_SDT_H + endif +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), sparc64)) + USE_PRECOMPILED_HEADER = 0 + export USE_PRECOMPILED_HEADER +endif + +# $(if $(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs)),8132051-zero.diff) \ +# FIXME: 8132051-zero.diff doesn't apply for the default hotspot tarball, +# resulting in broken zero builds +COMMON_PATCHES = \ + gcc6.diff \ + autoconf-select.diff \ + hotspot-warn-no-errformat.diff \ + aarch64.diff \ + hotspot-set-compiler.diff \ + ppc64el.diff \ + system-libjpeg.diff \ + system-libpng.diff \ + system-lcms.diff \ + system-pcsclite.diff \ + link-with-as-needed.diff \ + ld-symbolic-functions-default.diff \ + hotspot-mips-align.diff \ + hotspot-no-march-i586.diff \ + icc_loading_with_symlink.diff \ + icedtea-4953367.patch \ + icedtea-override-redirect-compiz.patch \ + jdk-freetypeScaler-crash.diff \ + libpcsclite-dlopen.diff \ + nonreparenting-wm.diff \ + shebang.diff \ + zero-fpu-control-is-noop.diff \ + jexec.diff \ + default-jvm-cfg-default.diff \ + disable-doclint-by-default.diff \ + include-all-srcs.diff \ + pass-extra-flags.diff \ + hotspot-disable-werror.diff \ + dont-strip-images.diff \ + workaround_expand_exec_shield_cs_limit.diff \ + zero-architectures.diff \ + adlc-parser.patch \ + compare-pointer-with-literal.patch \ + multiple-pkcs11-library-init.patch \ + applet-hole.patch \ + libjpeg-fix.diff \ + sparc-fixes.diff \ + jdk-target-arch-define.diff \ + m68k-support.diff \ + javadoc-sort-enum-and-annotation-types.diff \ + 8141491.diff \ + s390x-thread-stack-size.diff \ + jdk-getAccessibleValue.diff \ + compiler-flags.diff \ + openjdk-ppc64el-S8170153.patch \ + jdk-ppc64el-S8170153.patch \ + jdk-841269-filechooser.patch \ + 8164293.diff \ + jdk-ppc64el-S8165231.diff \ + +# jdk-derived-font-size.diff \ +# FIXME: update patches + #accessible-toolkit.patch # update for 8 + +ifeq ($(with_bridge),atk) + COMMON_PATCHES += atk-wrapper-security.patch +else ifneq (,$(with_bridge)) + COMMON_PATCHES += java-access-bridge-security.patch +endif + +COMMON_PATCHES += \ + zero-missing-headers.diff \ + dnd-files.patch \ + zero-x32.diff \ + +# FIXME fontconfig-wqy-microhei.patch \ +# FIXME zero-sparc.diff \ +# FIXME no-pch-build.diff \ + +ifeq (,$(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs))) + COMMON_PATCHES += \ + ppc64le-8036767.diff \ + hotspot-powerpcspe.diff \ + zero-sh.diff +# FIXME zero-opt.diff +endif + +# FIXME needs an update: +# $(if $(with_wgy_zenhai),,fontconfig-arphic-uming.diff) \ + +# FIXME: needs an update +#ifeq (,$(filter $(distrel),squeeze lucid)) +# COMMON_PATCHES += \ +# fontconfig-korean-nanum.diff \ +# fontconfig-japanese.diff +#endif + +ifeq ($(with_pulse),yes) + COMMON_PATCHES += \ + jdk-pulseaudio.diff +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), alpha)) + # FIXME: Needed for non-bootstrap builds? + COMMON_PATCHES += \ + alpha-float-const.diff +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386)) + COMMON_PATCHES += \ + kfreebsd-support-jdk.diff \ + kfreebsd-support-hotspot.diff +endif + +DEFAULT_PATCHES = \ + $(COMMON_PATCHES) \ + hotspot-libpath-$(hotspot_version).diff + +# for additional zero builds +ZERO_PATCHES = \ + $(COMMON_PATCHES) \ + hotspot-libpath-default.diff + + +CONFIGURE_ARGS = + +# GNU/kFreeBSD don't support epoll syscall so don't try to check of it. +# FIXME need to check the flag, configure complains about it +#ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386)) +# CONFIGURE_ARGS += --disable-compile-against-syscalls +#endif + +# there are problems --with-alt-jar=/usr/bin/fastjar, +# see http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=217 +# only use it for zero ports except powerpc (which we assume as +# fast enough to build. +ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) ia64 powerpc powerpcspe ppc64 ppc64el)) + CONFIGURE_ARGS += --with-alt-jar=/usr/bin/fastjar +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) + CONFIGURE_ARGS += \ + --disable-arm32-jit +endif + +ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) + CONFIGURE_ARGS += --enable-zero + ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) + CONFIGURE_ARGS += --enable-shark + endif +endif + +EXTRA_BUILD_ENV += MAKE_VERBOSE=y QUIETLY= LOG=debug + +# timestamp skew on kFreeBSD +EXTRA_BUILD_ENV += IGNORE_OLD_CONFIG=true + +EXTRA_BUILD_ENV += LIBFFI_LIBS=-lffi_pic + +# http://mail.openjdk.java.net/pipermail/distro-pkg-dev/2014-March/026450.html +# plus needs explicit --disable-debug-symbols +EXTRA_BUILD_ENV += \ + DEBUG_BINARIES=true \ + FULL_DEBUG_SYMBOLS=0 \ + ZIP_DEBUGINFO_FILES=0 \ + STRIP_POLICY=none \ + POST_STRIP_CMD=true \ + ALT_OBJCOPY=/does_not_exist + +ifeq ($(with_pulse),yes) + CONFIGURE_ARGS += --enable-pulse-java +endif + +CONFIGURE_ARGS += --enable-system-kerberos + +ifeq ($(with_nss),yes) + CONFIGURE_ARGS += --enable-nss +else ifeq ($(with_nss),no) + CONFIGURE_ARGS += --disable-nss +endif + +ifeq ($(with_systemtap),yes) + CONFIGURE_ARGS += --enable-systemtap --with-abs-install-dir=/$(basedir) +endif + +COMMON_CONFIGURE_ARGS = +DEFAULT_CONFIGURE_ARGS = +ZERO_CONFIGURE_ARGS = + +# FIXME: --with-jvm-variants=server,zero not supported upstream +ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs))) + DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=server +else + DEFAULT_CONFIGURE_ARGS += --with-jvm-variants=zero +endif +ZERO_CONFIGURE_ARGS += --with-jvm-variants=zero + +DEFAULT_CONFIGURE_ARGS += --with-boot-jdk=$(BOOTJDK_HOME) +ZERO_CONFIGURE_ARGS += --with-boot-jdk=$(BUILDJDK_HOME) + +COMMON_CONFIGURE_ARGS += --disable-ccache + +# FIXME: zero not ready for --disable-precompiled-headers +#COMMON_CONFIGURE_ARGS += --disable-precompiled-headers +ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs))) + ifeq (,$(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs))) + DEFAULT_CONFIGURE_ARGS += --disable-precompiled-headers + endif +endif + +ifeq ($(with_check),yes) + COMMON_CONFIGURE_ARGS += --with-jtreg +endif + +COMMON_CONFIGURE_ARGS += \ + --with-milestone='fcs' \ + --with-user-release-suffix='$(PKGVERSION)' \ + --with-update-version=$(updatever) \ + --with-build-number=$(buildver) + +# --with-debug-level=fastdebug \ + +COMMON_CONFIGURE_ARGS += \ + --with-debug-level=release \ + --disable-debug-symbols \ + --disable-zip-debug-info \ + --enable-unlimited-crypto \ + --with-zlib=system \ + --with-giflib=system \ + --with-libpng=system \ + --with-libjpeg=system \ + --with-lcms=system \ + --with-libpcsclite=system \ + --with-stdc++lib=dynamic + +ifneq (,$(NJOBS)) + COMMON_CONFIGURE_ARGS += --with-num-cores=$(NJOBS) +endif + +# FIXME: upstream says the extra flags are not designed for general purpose ... +# http://mail.openjdk.java.net/pipermail/jdk8u-dev/2014-July/001389.html + +# FIXME: demos fail to build with these ... +# FIXME: zero ftbfs without -fpermissive +#src/cpu/zero/vm/cppInterpreter_zero.cpp:732:30: error: invalid conversion from 'intptr_t {aka long int}' to 'const void*' [-fpermissive] +# object = (oop) locals[0]; +# ^ + +#COMMON_CONFIGURE_ARGS += \ + --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \ + --with-extra-cxxflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CXXFLAGS_HS)' \ + --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)' + +ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) + DEFAULT_CONFIGURE_ARGS += \ + --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \ + --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)' +else + DEFAULT_CONFIGURE_ARGS += \ + --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \ + --with-extra-cxxflags='-fpermissive' \ + --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)' +endif + +ZERO_CONFIGURE_ARGS += \ + --with-extra-cflags='$(EXTRA_CPPFLAGS_HS) $(EXTRA_CFLAGS_HS)' \ + --with-extra-cxxflags='-fpermissive' \ + --with-extra-ldflags='$(EXTRA_LDFLAGS_HS)' + +ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH)) + COMMON_CONFIGURE_ARGS += \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --target=$(DEB_HOST_GNU_TYPE) \ + BUILD_CC=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CC)) \ + BUILD_LD=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CC)) \ + BUILD_CXX=$(subst $(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE),$(CXX)) \ + +endif + +# (most) jre and jdk tools handled by the alternatives system. +# dups in heimdal-clients, krb5-user: kinit, klist, ktab, no alternatives +# use javaws from icedtea-netx +all_jre_tools = $(filter-out javaws, $(notdir $(wildcard $(builddir)/$(jreimg)/bin/*))) +jre_tools = $(filter policytool, $(all_jre_tools)) +jre_hl_tools := $(filter-out $(jre_tools), $(all_jre_tools)) + +corba_tools = orbd servertool tnameserv +jre_hl_tools_alt= $(filter-out $(corba_tools), $(jre_hl_tools)) $(corba_tools) +jre_tools_alt = $(filter-out kinit klist ktab, $(jre_tools)) + +all_jdk_tools = $(filter-out javaws, $(notdir $(wildcard build/$(sdkimg)/bin/*))) +jdk_tools = appletviewer jconsole +jdk_tools_alt = $(jdk_tools) +jdk_hl_tools = $(filter-out $(all_jre_tools) $(jdk_tools), $(all_jdk_tools)) +jdk_hl_tools_alt= $(filter-out apt java-rmi.cgi, $(jdk_hl_tools)) + + +# build dependencies +ifneq (,$(filter $(distrel),lucid precise)) + bd_autotools = autoconf2.69, automake, autotools-dev, + export AUTOCONF=autoconf2.69 +else + bd_autotools = autoconf (>= 2.69), automake, autotools-dev, +endif +bd_bootstrap += \ + openjdk-8-jdk | openjdk-7-jdk, +ifeq (,$(filter $(distrel),squeeze wheezy jessie precise trusty)) +bd_cross += \ + openjdk-8-jdk-headless <cross>, dpkg-dev (>= 1.17.14), +endif + +# This section should be in sync with "CC/CXX" definition +ifneq (,$(filter $(distrel),squeeze lucid)) + bd_gcc = g++-4.4 (>= 4.4.1), +else ifneq (,$(filter $(distrel), precise)) + bd_gcc = g++-4.6, +else ifneq (,$(filter $(distrel), wheezy)) + bd_gcc = g++-4.7, g++-4.4 [mips mipsel], +else ifneq (,$(filter $(distrel), quantal raring)) + bd_gcc = g++-4.7, +else ifneq (,$(filter $(distrel), saucy trusty)) + bd_gcc = g++-4.8, +else ifneq (,$(filter $(distrel),utopic vivid jessie)) + bd_gcc = g++-4.9, +else ifneq (,$(filter $(distrel),wily xenial)) + bd_gcc = g++-5, +else ifneq (,$(filter $(distrel),stretch sid)) + bd_gcc = g++-6, +else + bd_gcc = g++-6, +endif +bd_syslibs = zlib1g-dev, libattr1-dev, +ifneq (,$(filter $(distrel),squeeze lucid)) + bd_syslibs += libpng12-dev, libjpeg62-dev, +else ifneq (,$(filter $(distrel),wheezy precise quantal raring saucy)) + bd_syslibs += libpng-dev, libjpeg8-dev, +else + bd_syslibs += libpng-dev, libjpeg-dev, +endif +bd_syslibs += \ + libgif-dev, +bd_openjdk = \ + libxtst-dev, libxi-dev, libxt-dev, libxaw7-dev, libxrender-dev, libcups2-dev, \ + libasound2-dev, liblcms2-dev, libfreetype6-dev (>= 2.2.1), libgtk2.0-dev, \ + libxinerama-dev, libkrb5-dev, xsltproc, libpcsclite-dev, + +pkg_ffidev = libffi-dev + +bd_zero = \ + $(pkg_ffidev) [$(foreach a,$(hotspot_archs),!$(a))], +bd_zero = \ + $(pkg_ffidev), + +ifneq (,$(shark_archs)) + bd_zero = $(pkg_ffidev), + ifneq (,$(filter $(distrel),lucid)) + bd_shark = llvm-dev (>= 2.7) [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], + bd_shark += oprofile [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], + else + ifneq (,$(filter $(distrel),squeeze)) + llvm_suffix = -2.7 + else ifneq (,$(filter $(distrel),precise)) + llvm_suffix = -2.9 + else + llvm_suffix = -3.0 + endif + bd_shark = llvm$(llvm_suffix)-dev [$(foreach a,$(shark_archs) $(altshark_archs),$(a))], + ifneq (,$(filter $(DEB_HOST_ARCH),$(shark_archs) $(altshark_archs))) + CONFIGURE_ARGS += --with-llvm-config=llvm-config$(llvm_suffix) + endif + endif +endif + +ifneq (,$(filter $(distrel),lucid)) + bd_ant = ant1.8, ant1.8-optional, +else + bd_ant = ant, ant-optional, +endif + +bd_fastjar = fastjar (>= 2:0.96-0ubuntu2), +bd_xvfb = xvfb, xauth, xfonts-base, libgl1-mesa-dri [!x32], $(bd_wm) x11-xkb-utils, +bd_mauve = mauve, +ifeq ($(with_pulse),yes) + bd_pulsejava = libpulse-dev (>= 0.9.12) [!alpha], +endif +ifeq ($(with_nss),yes) + ifneq (,$(filter $(distrel),squeeze lucid precise quantal)) + bd_nss = libnss3-dev (>= 3.12.3), + else ifneq (,$(filter $(distrel),wheezy raring saucy trusty)) + bd_nss = libnss3-dev (>= 2:3.12.3), + else + bd_nss = libnss3-dev (>= 2:3.17.1), + endif +endif +ifeq ($(with_systemtap),yes) + bd_systemtap = systemtap-sdt-dev [!sh4], +endif + +ifneq (,$(jamvm_archs)) + bd_jamvm = libtool, +endif + +dlopen_hl_depends = \ + libcups2, liblcms2-2, +ifneq (,$(filter $(distrel),squeeze lucid)) + dlopen_hl_depends += libjpeg62, +else ifneq (,$(filter $(distrel), jessie stretch sid)) + dlopen_hl_depends += libjpeg62-turbo, +else + dlopen_hl_depends += libjpeg8, +endif +# FIXME: #793210, directly link with libfontconfig. +dlopen_hl_depends += libfontconfig1, +ifneq ($(with_nss),no) + ifneq (,$(filter $(distrel),squeeze lucid precise)) + dlopen_hl_depends += , libnss3-1d (>= 3.12.3) + else ifneq (,$(filter $(distrel),wheezy quantal raring saucy trusty)) + dlopen_hl_depends += , libnss3 (>= 2:3.12.3) + else + dlopen_hl_depends += , libnss3 (>= 2:3.17.1) + endif +endif +dlopen_hl_recommends = +dlopen_jre_depends = \ + libglib2.0-0 (>= 2.24), libgtk2.0-0 (>= 2.14), libxrandr2, libxinerama1, libgl1-mesa-glx | libgl1 +dlopen_jre_recommends = + +plugin_name = IcedTeaPlugin.so +browser_plugin_dirs = mozilla + +# .desktop files need to be multiarch installable +java_launcher = /$(basedir)/bin/java +java_launcher = /usr/bin/java +ifeq ($(derivative),Ubuntu) + java_launcher = cautious-launcher %f /$(basedir)/bin/java + java_launcher = cautious-launcher %f /usr/bin/java +endif + +ifneq (,$(filter $(distrel),squeeze wheezy lucid precise quantal raring)) + core_fonts = ttf-dejavu-extra +else + core_fonts = fonts-dejavu-extra +endif +ifneq (,$(filter $(distrel),squeeze lucid)) + cjk_fonts = ttf-baekmuk | ttf-unfonts | ttf-unfonts-core, + cjk_fonts += ttf-sazanami-gothic | ttf-kochi-gothic, + cjk_fonts += ttf-sazanami-mincho | ttf-kochi-mincho, +else + cfk_fonts = fonts-nanum, + cjk_fonts += fonts-ipafont-gothic, fonts-ipafont-mincho, +endif +ifneq (,$(filter $(distrel), wheezy jessie precise trusty xenial yakkety)) + cjk_fonts += $(if $(with_wgy_zenhai),ttf-wqy-microhei | ttf-wqy-zenhei,ttf-arphic-uming), +else + cjk_fonts += fonts-wqy-microhei, fonts-wqy-zenhei, +endif +ifneq (,$(filter $(distrel),squeeze wheezy)) + cjk_fonts += ttf-indic-fonts, +else ifneq (,$(filter $(distrel), lucid maverick natty oneiric precise quantal raring saucy trusty)) + cjk_fonts += ttf-indic-fonts-core, ttf-telugu-fonts, ttf-oriya-fonts, + cjk_fonts += ttf-kannada-fonts, ttf-bengali-fonts, +else + cjk_fonts += fonts-indic, +endif + +p_jre = $(basename)-jre +p_jrehl = $(basename)-jre-headless +p_jrej = $(basename)-jre-jamvm +p_jrez = $(basename)-jre-zero +p_jdkhl = $(basename)-jdk-headless +p_jdk = $(basename)-jdk +p_demo = $(basename)-demo +p_src = $(basename)-source +p_doc = $(basename)-doc +p_dbg = $(basename)-dbg + +d = debian/tmp +d_jre = debian/$(p_jre) +d_jrehl = debian/$(p_jrehl) +d_jrej = debian/$(p_jrej) +d_jrez = debian/$(p_jrez) +d_jdkhl = debian/$(p_jdkhl) +d_jdk = debian/$(p_jdk) +d_demo = debian/$(p_demo) +d_src = debian/$(p_src) +d_doc = debian/$(p_doc) +d_dbg = debian/$(p_dbg) + +control_vars = \ + '-Vvm:Name=$(vm_name)' \ + '-Vdlopenhl:Depends=$(dlopen_hl_depends)' \ + '-Vdlopenhl:Recommends=$(dlopen_hl_recommends)' \ + '-Vdlopenjre:Depends=$(dlopen_jre_depends)' \ + '-Vdlopenjre:Recommends=$(dlopen_jre_recommends)' \ + '-Vpkg:pulseaudio=$(pkg_pulseaudio)' \ + '-Vxulrunner:Depends=$(xulrunner_depends)' \ + +ifneq (,$(DEB_HOST_MULTIARCH)) + control_vars += \ + '-Vmultiarch:Depends=multiarch-support' +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),$(jamvm_archs))) + ifneq (,$(filter $(DEB_HOST_ARCH),$(jamvm_defaults))) + control_vars += '-Vjredefault:Depends=$(p_jrej) (= $${binary:Version})' + else ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_archs))) + control_vars += '-Vjamvm:Suggests=$(p_jrej) (= $${binary:Version})' + else + control_vars += '-Vjamvm:Recommends=$(p_jrej) (= $${binary:Version})' + endif +endif + +ifeq ($(with_bridge),atk) + control_vars += '-Vdep:bridge=libatk-wrapper-java-jni (>= 0.30.4-0ubuntu2)' +else ifneq (,$(with_bridge)) + ifneq (,$(DEB_HOST_MULTIARCH)) + control_vars += '-Vdep:bridge=libaccess-bridge-java-jni (>= 1.26.2-6)' + else ifeq ($(with_jni_bridge),yes) + control_vars += '-Vdep:bridge=libaccess-bridge-java-jni' + else + control_vars += '-Vdep:bridge=libaccess-bridge-java' + endif +endif + +ifeq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) + ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs))) + control_vars += '-Vdefaultvm:Provides=$(p_jre)-zero, $(p_jre)-shark' + else + control_vars += '-Vdefaultvm:Provides=$(p_jre)-zero' + endif +endif +ifneq (,$(filter $(DEB_HOST_ARCH), $(shark_archs) $(altshark_archs))) + control_vars += '-Vzerovm:Provides=$(p_jre)-shark' +endif + +pkg_certs = ca-certificates-java +control_vars += '-Vcacert:Depends=$(pkg_certs)' + +ifeq ($(with_tzdata),yes) + pkg_tzdata = tzdata-java + ifneq (,$(filter $(distrel), precise)) + pkg_tzdata += (>= 2012e-0ubuntu0.12.04.1) + endif + control_vars += '-Vtzdata:Depends=$(pkg_tzdata)' +else + bd_tzdata = tzdata, +endif + +ifneq (,$(filter $(distrel), squeeze wheezy jessie lucid precise quantal raring saucy trusty utopic vivid)) + control_vars += '-Vmountpoint:Depends=initscripts' +else + control_vars += '-Vmountpoint:Depends=util-linux (>= 2.26.2-4)' +endif + +control_vars += '-Vjrehl:Breaks=$(jrehl_breaks)' +ifeq (,$(filter $(distrel), wheezy jessie precise trusty xenial yakkety zesty)) + jrehl_breaks = tzdata-java +endif + +pkg_jcommon = java-common (>= 0.28) +control_vars += '-Vjcommon:Depends=$(pkg_jcommon)' + +debian/control: debian/control.in debian/rules + @cp -p debian/control debian/control.old + sed \ + -e 's/@basename@/$(basename)/g' \ + -e 's/@bd_autotools@/$(bd_autotools)/g' \ + -e 's/@bd_bootstrap@/$(strip $(bd_bootstrap))/g' \ + -e 's/@bd_cross@/$(strip $(bd_cross))/g' \ + -e 's/@bd_openjdk@/$(bd_openjdk)/g' \ + -e 's/@bd_zero@/$(bd_zero)/g' \ + -e 's/@bd_gcc@/$(bd_gcc)/g' \ + -e 's/@bd_syslibs@/$(bd_syslibs)/g' \ + -e 's/@bd_fastjar@/$(bd_fastjar)/g' \ + -e 's/@bd_mauve@/$(bd_mauve)/g' \ + -e 's/@bd_xvfb@/$(bd_xvfb)/g' \ + -e 's/@bd_jamvm@/$(bd_jamvm)/g' \ + -e 's/@bd_pulsejava@/$(bd_pulsejava)/g' \ + -e 's/@bd_nss@/$(bd_nss)/g' \ + -e 's/@bd_systemtap@/$(bd_systemtap)/g' \ + -e 's/@bd_shark@/$(bd_shark)/g' \ + -e 's/@bd_ant@/$(bd_ant)/g' \ + -e 's/@bd_tzdata@/$(bd_tzdata)/g' \ + -e 's/@bd_jtreg@/$(bd_jtreg)/g' \ + -e 's/@core_fonts@/$(core_fonts)/g' \ + -e 's/@cjk_fonts@/$(cjk_fonts)/g' \ + -e 's/@any_archs@/$(any_archs)/g' \ + -e 's/@jamvm_archs@/$(jamvm_archs)/g' \ + -e 's/@hotspot_archs@/$(hotspot_archs)/g' \ + -e 's/@altzero_archs@/$(altzero_archs)/g' \ + debian/control.in \ + $(if $(jamvm_archs), debian/control.jamvm-jre) \ + $(if $(altzero_archs), debian/control.zero-jre) \ + $(if $(DEB_HOST_MULTIARCH),,| grep -v '^Multi-Arch') \ + > debian/control + @if cmp -s debian/control debian/control.old; then \ + rm -f debian/control.old; \ + else \ + diff -u debian/control.old debian/control | wdiff -d -; \ + echo "debian/control did change, please restart the build"; \ + rm -f debian/control.old; \ + exit 1; \ + fi + +packaging-files: + for f in debian/*.in debian/patches/*.in; do \ + case "$$f" in debian/control.in) continue; esac; \ + f2=$$(echo $$f | sed 's/JB/$(basename)/;s/\.in$$//'); \ + sed -e 's/@JRE@/$(p_jre)/g' \ + -e 's/@JDK@/$(p_jdk)/g' \ + -e 's/@vendor@/$(Vendor)/g' \ + -e 's/@RELEASE@/$(shortver)/g' \ + -e 's/@basename@/$(basename)/g' \ + -e 's,@TOP@,$(TOP),g' \ + -e 's,@basedir@,$(basedir),g' \ + -e 's,@etcdir@,$(etcdir),g' \ + -e 's,@jdiralias@,$(jdiralias),g' \ + -e 's,@jdirname@,$(jdirname),g' \ + -e 's/@srcname@/$(srcname)/g' \ + -e 's/@jvmarch@/$(jvmarch)/g' \ + -e 's/@archdir@/$(archdir)/g' \ + -e 's/@tag@/$(tag)/g' \ + -e 's/@priority@/$(priority)/g' \ + -e 's/@mantag@/$(mantag)/g' \ + -e 's/@multiarch@/$(DEB_HOST_MULTIARCH)/g' \ + -e 's/@jre_hl_tools@/$(jre_hl_tools_alt)/g' \ + -e 's/@jre_tools@/$(jre_tools_alt)/g' \ + -e 's/@jdk_hl_tools@/$(jdk_hl_tools_alt)/g' \ + -e 's/@jdk_tools@/$(jdk_tools_alt)/g' \ + -e 's/@corba_tools@/$(corba_tools)/g' \ + -e 's,@j2se_lib@,$(j2se_lib),g' \ + -e 's,@j2se_share@,$(j2se_share),g' \ + -e 's,@java_launcher@,$(java_launcher),g' \ + -e 's,@with_tzdata@,$(with_tzdata),g' \ + -e 's/@cjk_fonts@/$(cjk_fonts)/g' \ + $$f > $$f2; \ + done +ifneq (,$(filter $(DEB_HOST_ARCH), i386)) +# not yet in OpenJDK +# cat debian/$(p_jre)-i586.menu >> $(d_jre).menu + rm -f debian/$(p_jre)-i586.menu +endif + +configure: stamps/configure +stamps/configure: stamps/patch + -cat /etc/hosts + + mkdir -p bin +ifeq (,$(filter $(DEB_HOST_ARCH), alpha amd64 arm64 hppa mips64 mips64el ppc64 ppc64el s390x sparc64 x32)) + ( \ + echo '#! /bin/sh'; \ + echo 'if [ -x /usr/bin/linux32 ]; then'; \ + echo ' exec /usr/bin/linux32 /bin/uname "$$@"'; \ + echo 'else'; \ + echo ' exec /bin/uname "$$@"'; \ + echo 'fi'; \ + ) > bin/uname + chmod +x bin/uname + echo "UNAME checks" + uname -a +endif + /bin/uname -a + lsb_release -a + + -cat /proc/sys/kernel/random/entropy_avail + + mkdir -p stamps + mkdir -p $(builddir) + cd $(srcdir) && sh common/autoconf/autogen.sh + cd $(builddir) && $(EXTRA_BUILD_ENV) ../$(srcdir)/configure \ + $(DEFAULT_CONFIGURE_ARGS) \ + $(COMMON_CONFIGURE_ARGS) + + touch $@ + +stamps/zero-configure: stamps/build stamps/patch + mkdir -p stamps + mkdir -p $(zbuilddir) + cd $(zbuilddir) && $(EXTRA_BUILD_ENV) ../$(srcdir)/configure \ + $(ZERO_CONFIGURE_ARGS) \ + $(COMMON_CONFIGURE_ARGS) + + touch $@ + +stamps/jamvm-configure: stamps/jamvm-unpack stamps/patch stamps/build + if [ -x jamvm/autogen.sh ]; then \ + cd jamvm && NOCONFIGURE=yes ./autogen.sh; \ + fi + mkdir -p $(jbuilddir) + cd $(jbuilddir) && ../jamvm/configure \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --prefix=$(CURDIR)/$(jbuilddir)/install \ + --with-java-runtime-library=openjdk8 \ + --with-gnu-ld \ + CPPFLAGS='$(EXTRA_CPPFLAGS_JAMVM)' \ + CFLAGS='$(EXTRA_CFLAGS_JAMVM)' \ + CXXFLAGS='$(EXTRA_CXXFLAGS_JAMVM)' \ + LDFLAGS='$(EXTRA_LDFLAGS_JAMVM)' + touch $@ + +stamps/sound-configure: stamps/build + rm -rf icedtea-sound + tar xf icedtea-sound.tar.xz + mv $$(tar tf icedtea-sound.tar.xz | head -1 | sed 's,/.*,,') \ + icedtea-sound + patch -p1 < debian/patches/icedtea-sound.diff + if [ -x icedtea-sound/autogen.sh ]; then \ + cd icedtea-sound && ./autogen.sh; \ + fi + cd icedtea-sound && ./configure \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --disable-maintainer-mode \ + --with-jdk-home=$(BUILDJDK_HOME) \ + CPPFLAGS="$(EXTRA_CPPFLAGS_IT)" \ + CFLAGS="$(EXTRA_CFLAGS_IT)" \ + CXXFLAGS="$(EXTRA_CXXFLAGS_IT)" \ + LDFLAGS="$(EXTRA_LDFLAGS_IT)" + touch $@ + +stamps/sound-build: stamps/sound-configure + $(MAKE) -C icedtea-sound + touch $@ + +stamps/jamvm-build: stamps/jamvm-configure + $(MAKE) -C $(jbuilddir) + $(MAKE) -C $(jbuilddir) install + rm -rf $(builddir)/$(sdkimg)/jre/lib/$(archdir)/jamvm + mkdir -p $(builddir)/$(sdkimg)/jre/lib/$(archdir)/jamvm + cp -p $(jbuilddir)/install/lib/libjvm.so \ + $(builddir)/$(sdkimg)/jre/lib/$(archdir)/jamvm/. + cp -p $(builddir)/$(sdkimg)/jre/lib/$(archdir)/server/Xusage.txt \ + $(builddir)/$(sdkimg)/jre/lib/$(archdir)/jamvm/. + touch $@ + +unpack: stamps/unpack stamps/jamvm-unpack +stamps/unpack: + rm -rf $(srcdir) + tar xf root.tar.xz + mv $$(tar tf root.tar.xz | head -1 | sed 's,/.*,,') $(srcdir) + chmod +x $(srcdir)/configure + for tb in corba jaxp jaxws langtools hotspot jdk nashorn; do \ + d=$$(tar tf $$tb.tar.xz | head -1 | sed 's,/.*,,'); \ + tar -C $(srcdir) -x -f $$tb.tar.xz; \ + mv $(srcdir)/$$d $(srcdir)/$$tb; \ + done +# FIXME: do the zero build from the hotspot.tar.gz +ifneq (,$(filter $(DEB_HOST_ARCH),$(hotspot_aarch64_archs))) + rm -rf $(srcdir)/hotspot + tar -C $(srcdir) -x -f hotspot-aarch64.tar.xz + mv $(srcdir)/$$(tar tf hotspot-aarch64.tar.xz | head -1 | sed 's,/.*,,') \ + $(srcdir)/hotspot +endif + + : # remove embedded libraries + find $(srcdir)/jdk/src/share/native/sun/awt/image/jpeg \ + ! -name imageioJPEG.c ! -name jpegdecoder.c ! -name jinclude.h \ + -type f -delete + rm -rf $(srcdir)/jdk/src/share/native/sun/awt/libpng/* + rm -rf $(srcdir)/jdk/src/share/native/sun/awt/giflib/* + rm -rf $(srcdir)/jdk/src/share/native/sun/java2d/cmm/lcms/cms* + rm -rf $(srcdir)/jdk/src/share/native/sun/java2d/cmm/lcms/lcms2* + rm -rf $$d/src/solaris/native/sun/security/smartcardio/MUSCLE + + $(MAKE) -f debian/rules packaging-files + + cp /usr/share/misc/config.* $(srcdir)/common/autoconf/build-aux/. + + mkdir -p stamps + touch $@ + +stamps/jamvm-unpack: + mkdir -p stamps + rm -rf jamvm jamvm-* + tar xf jamvm.tar.gz + mv jamvm-2* jamvm + cp /usr/share/misc/config.* jamvm/. + patch -p1 < debian/patches/kfreebsd-support-jamvm.diff + patch -p1 < debian/patches/jamvm-fix.diff + patch -p1 < debian/patches/pr2775-cache_api.diff + @mkdir -p stamps + touch $@ + +patch: stamps/patch +stamps/patch: stamps/unpack stamps/jamvm-unpack + for i in $(DEFAULT_PATCHES); do \ + echo $$i; \ + done > $(srcdir)/series + + cd $(srcdir) && \ + QUILT_PATCHES=../debian/patches quilt --quiltrc - push -a + ( \ + echo ""; echo "Patches applied in this version:"; \ + for i in $$(egrep -v '^#|^ *$$' $(srcdir)/series); do \ + echo ""; echo "$$i:"; \ + sed -n 's/^# *DP: */ /p' debian/patches/$$i; \ + done \ + ) > stamps/pxx + mv stamps/pxx $@ + +ifeq ($(with_check),yes) + ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) alpha ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el sh4)) + with_mauve_check = $(default_vm) + endif + ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs) alpha arm64 armel armhf ia64 mips mipsel mips64 mips64el powerpc powerpcspe ppc64 ppc64el s390x sh4 x32)) + with_jtreg_check = $(default_vm) + endif + + ifneq (,$(filter jamvm, $(alternate_vms))) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 )) + # only activate after testing + with_mauve_check += jamvm + endif + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) + # only activate after testing; hangs several tests. + with_jtreg_check += jamvm + endif + endif + + ifneq (,$(filter shark, $(alternate_vms))) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 powerpc powerpcspe)) + # only activate after testing + with_mauve_check += $(if $(filter $(DEB_HOST_ARCH),$(altshark_archs)),shark,zero) + endif + # shark hangs on ppc64 + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 powerpc powerpcspe)) + # only activate after testing; hangs several tests. + with_jtreg_check += $(if $(filter $(DEB_HOST_ARCH),$(altshark_archs)),shark,zero) + endif + endif + + ifneq (,$(filter zero, $(alternate_vms))) + ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386)) + # only activate after testing + with_mauve_check += zero + endif + ifneq (,$(filter $(DEB_HOST_ARCH), arm64 amd64 i386)) + # only activate after testing; hangs several tests. + with_jtreg_check += zero + endif + endif + + with_mauve_check = +endif + +# these are best guesses depending on the architecture and the build machines +# some tests require 4min to run, so set the minimum timeout to 3 x 2min. +ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 m68k mips mipsel mips64 mips64el powerpc powerpcspe x32)) + JTREG_OPTIONS = -timeout:5 +else + JTREG_OPTIONS = -timeout:3 +endif + +ifeq (,$(filter $(distrel),wheezy trusty)) + JTREG_OPTIONS += -conc:auto +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), armel armhf)) + JTREG_OPTIONS += -Xmx256M -vmoption:-Xmx256M +endif + +build_stamps = \ + stamps/build \ + $(if $(filter $(DEB_HOST_ARCH),$(altzero_archs)),stamps/zero-build) \ + $(if $(filter $(DEB_HOST_ARCH),$(jamvm_archs)),stamps/jamvm-build) + +ifeq ($(with_pulse),yes) + build_stamps += stamps/sound-build +endif + +build_stamps += stamps/jtreg-check-default + +ifeq (0,1) +build_stamps += stamps/mauve-check-default stamps/jtreg-check-default +build_stamps += $(if $(filter jamvm, $(alternate_vms)),stamps/mauve-check-jamvm stamps/jtreg-check-jamvm) +build_stamps += $(if $(filter zero, $(alternate_vms)),stamps/mauve-check-zero stamps/jtreg-check-zero) +ifneq (,$(filter shark, $(alternate_vms))) + ifneq (,$(filter $(DEB_HOST_ARCH),$(altshark_archs))) + build_stamps += stamps/mauve-check-shark stamps/jtreg-check-shark + else + build_stamps += stamps/mauve-check-zero stamps/jtreg-check-zero + endif +endif +endif + +pre-build: +ifneq (,$(filter $(DEB_HOST_ARCH),s390)) + @echo explicitely fail the build for $(DEB_HOST_ARCH), patches not updated +#else ifneq (,$(filter $(DEB_HOST_ARCH),armel)) +# @echo explicitely fail the build for $(DEB_HOST_ARCH), ARM assembler interpreter not yet ported + false +endif + +build-arch: build +build-indep: build stamps/build-docs +build: pre-build $(build_stamps) + if [ -f buildwatch.pid ]; then \ + pid=$$(cat buildwatch.pid); \ + kill -1 $$pid || :; sleep 1; kill -9 $$pid || :; \ + fi + rm -f buildwatch.pid + +stamps/build: stamps/configure +ifneq (,$(filter $(DEB_HOST_ARCH), alpha armel armhf ia64 m68k mips mipsel mips64 mips64el powerpc powerpcspe s390x sparc sparc64)) + sh -c 'sh debian/buildwatch.sh $(CURDIR)/$(builddir) &' +endif + if $(EXTRA_BUILD_ENV) $(MAKE) -C $(builddir) $(build_target); then \ + : ; \ + else \ + if [ -f buildwatch.pid ]; then \ + pid=$$(cat buildwatch.pid); \ + kill -1 $$pid || :; sleep 1; kill -9 $$pid || :; \ + fi; \ + false; \ + fi + + touch $@ + +stamps/zero-build: stamps/zero-configure + : # FIXME: build using the just built jdk, and build the vm only + $(EXTRA_BUILD_ENV) $(MAKE) -C $(zbuilddir) images + rm -rf $(builddir)/$(sdkimg)/jre/lib/$(archdir)/zero + cp -a $(zbuilddir)/$(subst bootcycle-build/,,$(sdkimg))/jre/lib/$(archdir)/server \ + $(builddir)/$(sdkimg)/jre/lib/$(archdir)/zero + touch $@ + +stamps/build-docs: stamps/build + $(MAKE) -C $(builddir) docs + touch $@ + +stamps/xvfb-check: + mkdir -p bin test + ( \ + echo '#!/bin/sh'; \ + echo '$(with_wm_prefix) $(with_wm) $(with_wm_args) &'; \ + echo 'pid=$$!'; \ + echo 'sleep 3'; \ + echo '"$$@"'; \ + echo 'kill -9 $$pid'; \ + ) > bin/my-jtreg-run + chmod 755 bin/my-jtreg-run +ifeq (,$(wildcard /usr/bin/$(with_wm))) + echo 'xvfb-run -a -e $(CURDIR)/test/xvfb-run.log -s "-extension GLX" "$$@"' > bin/my-xvfb-run +else + echo 'xvfb-run -a -e $(CURDIR)/test/xvfb-run.log -s "-extension GLX" my-jtreg-run "$$@"' > bin/my-xvfb-run + ifeq ($(with_wm),twm) + grep -v '^include-menu-defs' /etc/X11/twm/system.twmrc-menu > bin/jtreg.tmwrc + echo RandomPlacement >> bin/jtreg.tmwrc + endif +endif + if ! /bin/sh bin/my-xvfb-run true ; then \ + echo "error running $$(cat bin/my-xvfb-run)"; \ + cat test/xvfb-run.log; \ + sed -i 's/ -s *"[^"]*"//' bin/my-xvfb-run; \ + if ! /bin/sh bin/my-xvfb-run true ; then \ + echo "error running $$(cat bin/my-xvfb-run)"; \ + cat test/xvfb-run.log; \ + rm -f bin/my-xvfb-run; \ + fi; \ + fi + if [ -f bin/my-xvfb-run ]; then \ + echo "using $$(cat bin/my-xvfb-run)"; \ + fi + touch $@ + +XVFB_RUN_CMD = xvfb-run -a -e $(CURDIR)/test/xvfb-run.log -s "-extension GLX" +ifneq (,$(wildcard /usr/bin/$(with_wm))) + XVFB_RUN_CMD += $(CURDIR)/bin/my-jtreg-run +endif + +stamps/mauve-check-default: stamps/build stamps/xvfb-check + $(MAKE) -f debian/rules mauve-run-check VMNAME=$(default_vm) VMARGS= + touch $@ + +stamps/mauve-check-jamvm: stamps/xvfb-check + $(MAKE) -f debian/rules mauve-run-check VMNAME=jamvm VMARGS='-vmarg -jamvm' + touch $@ + +stamps/mauve-check-shark: stamps/xvfb-check + $(MAKE) -f debian/rules mauve-run-check VMNAME=shark VMARGS='-vmarg -shark' + touch $@ + +stamps/mauve-check-zero: stamps/xvfb-check + $(MAKE) -f debian/rules mauve-run-check VMNAME=zero VMARGS='-vmarg -zero' + touch $@ + +stamps/mauve-build: stamps/build + rm -rf build/mauve + mkdir -p build/mauve +ifeq ($(with_mauve_check),yes) + tar -x -C build -f /usr/src/mauve.tar.gz + cd build/mauve \ + && aclocal \ + && automake \ + && autoconf \ + && PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH \ + ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) + PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH $(MAKE) -C build/mauve +endif + touch $@ + +stamps/mauve-check: stamps/build stamps/mauve-build stamps/xvfb-check + +mauve-run-check: + rm -rf build/mauve build/mauve-$(VMNAME) +ifneq (,$(filter $(VMNAME), $(with_mauve_check))) + tar -x -C build -f /usr/src/mauve.tar.gz + mv build/mauve build/mauve-$(VMNAME) + cd build/mauve-$(VMNAME) \ + && aclocal \ + && automake \ + && autoconf \ + && PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH ./configure \ + --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) + PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH $(MAKE) -C build/mauve-$(VMNAME) + + if [ -f bin/my-xvfb-run ]; then \ + cd build/mauve-$(VMNAME) && \ + JAVA_HOME=$(CURDIR)/build/$(sdkimg) \ + PATH=$(CURDIR)/build/$(sdkimg)/bin:$$PATH \ + time /bin/sh $(CURDIR)/bin/my-xvfb-run java Harness \ + -vm $(CURDIR)/build/$(sdkimg)/bin/java \ + $(VMARGS) \ + -file $(CURDIR)/debian/mauve_tests \ + -timeout 30000 2>&1 \ + | tee mauve_output-$(VMNAME); \ + else \ + echo "mauve testsuite not run for this build (xvfb failures)" \ + > build/mauve-$(VMNAME)/mauve_output-$(VMNAME); \ + cat test/xvfb-run.log >> build/mauve-$(VMNAME)/mauve_output-$(VMNAME); \ + fi + @sleep 5 +else + mkdir -p build/mauve-$(VMNAME) + echo "mauve testsuite not run for this build" \ + > build/mauve-$(VMNAME)/mauve_output-$(VMNAME) +endif + +stamps/jtreg-check-default: stamps/build stamps/xvfb-check + $(MAKE) -f debian/rules jtreg-run-check VMNAME=$(default_vm) VMARGS= \ + TEST_SUITES='hotspot langtools' +# $(if $(filter $(default_vm),hotspot),TEST_SUITES='hotspot langtools jdk',TEST_SUITES='hotspot langtools') + touch $@ + +stamps/jtreg-check-jamvm: stamps/build stamps/xvfb-check + $(MAKE) -f debian/rules jtreg-run-check VMNAME=jamvm VMARGS='-vmoption:-jamvm' \ + TEST_SUITES='hotspot langtools' + touch $@ + +stamps/jtreg-check-shark: stamps/build stamps/xvfb-check + $(MAKE) -f debian/rules jtreg-run-check VMNAME=shark VMARGS='-vmoption:-shark' \ + TEST_SUITES='hotspot langtools' + touch $@ + +stamps/jtreg-check-zero: stamps/build stamps/xvfb-check + $(MAKE) -f debian/rules jtreg-run-check VMNAME=zero VMARGS='-vmoption:-zero' \ + TEST_SUITES='langtools hotspot' + touch $@ + +jtreg-run-check: + mkdir -p test +ifneq (,$(filter $(VMNAME), $(with_jtreg_check))) + if [ ! -f $(builddir)/$(sdkimg)/jre/lib/security/java.security.install ]; then \ + fgrep -v 'sun.security.pkcs11' $(builddir)/$(sdkimg)/jre/lib/security/java.security \ + > $(builddir)/$(sdkimg)/jre/lib/security/java.security.test; \ + mv $(builddir)/$(sdkimg)/jre/lib/security/java.security \ + $(builddir)/$(sdkimg)/jre/lib/security/java.security.install; \ + mv $(builddir)/$(sdkimg)/jre/lib/security/java.security.test \ + $(builddir)/$(sdkimg)/jre/lib/security/java.security; \ + fi + + @echo "BEGIN jtreg" + time $(MAKE) -f debian/rules -k jtregcheck \ + $(if $(TEST_SUITES),TEST_SUITES="$(TEST_SUITES)") \ + JTREG_OPTIONS='$(VMARGS) $(JTREG_OPTIONS)' \ + 2>&1 | tee test/jtreg_output-$(VMNAME) + @echo "END jtreg" + + if [ -f $(builddir)/$(sdkimg)/jre/lib/security/java.security.install ]; then \ + mv $(builddir)/$(sdkimg)/jre/lib/security/java.security.install \ + $(builddir)/$(sdkimg)/jre/lib/security/java.security; \ + fi + +# for i in check-hotspot.log check-jdk.log check-langtools.log jtreg-summary.log; do \ +# if [ -f test/$$i ]; then \ + mv test/$$i test/$${i%*.log}-$(VMNAME).log; \ +# else \ +# mkdir -p test; \ +# cp test/jtreg_output-$(VMNAME) test/$${i%*.log}-$(VMNAME).log; \ +# fi; \ +# done + + for i in check-hotspot.log check-jdk.log check-langtools.log jtreg-summary.log; do \ + if [ -f test/$$i ]; then \ + mv test/$$i test/$${i%*.log}-$(VMNAME).log; \ + else \ + mkdir -p test; \ + fi; \ + done + + @echo "BEGIN jtreg-summary-$(VMNAME)" + -cat test/jtreg-summary-$(VMNAME).log + @echo "END jtreg-summary-$(VMNAME)" + + : # kill testsuite processes still hanging + @pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "killing processes..."; \ + $(jtreg_processes); \ + kill -1 $$pids; \ + sleep 2; \ + pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "trying harder..."; \ + $(jtreg_processes); \ + kill -9 $$pids; \ + sleep 2; \ + fi; \ + else \ + echo "nothing to cleanup"; \ + fi; \ + pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "leftover processes..."; \ + $(jtreg_processes); \ + fi + + -for i in hotspot langtools jdk; do \ + test -f test/check-$$i-$(VMNAME).log || continue; \ + for t in $$(egrep '^(FAILED|Error)' test/check-$$i-$(VMNAME).log | sed 's/.* \(.*\)\.[^.][^.]*$$/\1/'); do \ + echo test/$$i/JTwork/$$t.jtr; \ + done; \ + done > test/failed_tests-$(VMNAME).list; \ + GZIP=-9vn tar -C . -c -z -f test/failed_tests-$(VMNAME).tar.gz -T test/failed_tests-$(VMNAME).list +else + echo "jtreg harness not run for this build" > test/jtreg_output-$(VMNAME) +endif + +# ---------------------------------------------------------------------------- +# jtreg targets taken from IcedTea + +export JTREG_HOME=/usr/share/java + +TESTS_TO_RUN = $(addprefix check-,$(TEST_SUITES)) + +check-hotspot: stamps/build + mkdir -p test/hotspot/JTwork test/hotspot/JTreport + JT_JAVA=$(BOOTJDK_HOME) jtreg -v1 -a -ignore:quiet \ + -w:test/hotspot/JTwork -r:test/hotspot/JTreport \ + -agentvm \ + -jdk:$(builddir)/$(sdkimg) \ + $(JTREG_OPTIONS) \ + $(CURDIR)/$(srcdir)/hotspot/test \ + | tee test/$@.log + +check-langtools: stamps/build + mkdir -p test/langtools/JTwork test/langtools/JTreport + JT_JAVA=$(BOOTJDK_HOME) jtreg -v1 -a -ignore:quiet \ + -w:test/langtools/JTwork -r:test/langtools/JTreport \ + -agentvm \ + -jdk:$(builddir)/$(sdkimg) \ + $(JTREG_OPTIONS) \ + -exclude:debian/excludelist.langtools.jtx \ + $(CURDIR)/$(srcdir)/langtools/test \ + | tee test/$@.log + +check-jdk: stamps/build stamps/xvfb-check + mkdir -p test/jdk/JTwork test/jdk/JTreport + set -x; \ + if test "x$${DISPLAY}" = "x"; then XVFB_RUN="$(XVFB_RUN_CMD)"; fi; \ + if test "x$${DISPLAY}" = "x" && test "x$${XVFB_RUN}" = "x"; then \ + echo "WARNING: DISPLAY not set and xvfb-run not found"; \ + fi; \ + $(if $(DISPLAY),,$(XVFB_RUN_CMD)) \ + JT_JAVA=$(BOOTJDK_HOME) jtreg -v1 -a -ignore:quiet \ + -w:test/jdk/JTwork -r:test/jdk/JTreport \ + -agentvm \ + -jdk:$(builddir)/$(sdkimg) \ + $(JTREG_OPTIONS) \ + -exclude:debian/excludelist.jdk.jtx \ + $(CURDIR)/$(srcdir)/jdk/test \ + | tee test/$@.log + +# FIXME: this might need some adjustment for other OS than Linux +jtreg_processes = ps x -ww -o pid,ppid,args \ + | awk '$$2 == 1 && $$3 ~ /^$(subst /,\/,/scratch)/' \ + | $(SED) 's,$(CURDIR)/$(builddir)/$(sdkimg),<sdkimg>,g;s,$(CURDIR),<pwd>,g' +jtreg_pids = ps x --no-headers -ww -o pid,ppid,args \ + | awk '$$2 == 1 && $$3 ~ /^$(subst /,\/,$(CURDIR)/$(builddir)/$(sdkimg))/ {print $$1}' + +jtregcheck: $(TESTS_TO_RUN) + for i in $(TEST_SUITES); do \ + echo "--------------- jtreg console summary for $$i ---------------"; \ + egrep -v '^(Passed:|Directory|Re[a-z]+\ written\ to)' test/check-$$i.log; \ + done | tee test/jtreg-summary.log + + : # kill testsuite processes still hanging + @pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "killing processes..."; \ + $(jtreg_processes); \ + kill -1 $$pids; \ + sleep 2; \ + pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "try harder..."; \ + $(jtreg_processes); \ + kill -9 $$pids; \ + sleep 2; \ + fi; \ + else \ + echo "nothing to cleanup"; \ + fi; \ + pids=$$($(jtreg_pids)); \ + if [ -n "$$pids" ]; then \ + echo "leftover processes..."; \ + $(jtreg_processes); \ + fi + +# ---------------------------------------------------------------------------- + +clean: debian-clean + dh_testdir + dh_testroot + rm -rf $(srcdir) jamvm + rm -rf stamps build build-* test + rm -rf icedtea-sound + rm -rf autom4te.cache + rm -rf bin + rm -f buildwatch.pid + + dh_clean + +debian-clean: + dh_testdir + dh_testroot + dh_prep || dh_clean -k + for f in debian/*.in debian/patches/*.in; do \ + f2=$$(echo $$f | sed 's/JB/$(basename)/;s/\.in$$//'); \ + case "$$f2" in debian/control) continue; esac; \ + rm -f $$f2; \ + done + rm -f debian/*.install debian/*.links debian/*.debhelper.log + +lib_ext_dirs = common $(sort $(foreach arch,$(arch_map),$(firstword $(subst =,$(SPACE),$(arch))))) +ifeq ($(derivative),Ubuntu) + lib_ext_dirs := $(filter-out arm hppa m68k mips% powerpcspe s390% sh%, $(lib_ext_dirs)) +else + lib_ext_dirs := $(filter-out arm hppa, $(lib_ext_dirs)) +endif + +install: packaging-files + dh_testdir + dh_testroot + dh_prep || dh_clean -k + rm -f debian/*.install debian/*.links + dh_installdirs + + : # install into temporary location + mkdir -p $(d)/$(basedir) + cp -a $(builddir)/$(sdkimg)/* $(d)/$(basedir)/ +# FIXME: still needed? +# cp -a build/$(jreimg)/man $(d)/$(basedir)/jre/ + +ifeq ($(with_pulse),yes) + cp icedtea-sound/icedtea-sound.jar $(d)/$(basedir)/jre/lib/ext/. + cp icedtea-sound/build/native/libicedtea-sound.so \ + $(d)/$(basedir)/jre/lib/$(archdir)/. +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), kfreebsd-amd64 kfreebsd-i386)) + cp -a $(d)/$(basedir)/include/bsd $(d)/$(basedir)/include/linux + : # Easy fix for #851053 + mv $(d)/$(basedir)/jre/lib/$(archdir)/jspawnhelper $(d)/$(basedir)/jre/lib/ +endif + + chmod -R u+w $(d) + + : # use javaws from icedtea-netx + find $(d) -name 'javaws*' | xargs -r rm -f + + : # install default jvm config file + cp debian/jvm.cfg-default $(d)/$(basedir)/jre/lib/$(archdir)/ + +ifeq ($(with_tzdata),yes) + : # use the timezone files from tzdata-java + rm -rf $(d)/$(basedir)/jre/lib/zi +endif + + : # compress manpages + find $(d)/$(basedir)/man $(d)/$(basedir)/jre/man -type f ! -type l \ + | xargs gzip -9v -n + + : # copy man pages into the jre/man directory + mkdir -p $(d)/$(basedir)/jre/man/man1 + mkdir -p $(d)/$(basedir)/jre/man/ja_JP.UTF-8/man1 + for i in $(d)/$(basedir)/jre/bin/*; do \ + b=$$(basename $$i); \ + cp -p $(d)/$(basedir)/man/man1/$$b.1.gz $(d)/$(basedir)/jre/man/man1/.; \ + cp -p $(d)/$(basedir)/man/ja_JP.UTF-8/man1/$$b.1.gz $(d)/$(basedir)/jre/man/ja_JP.UTF-8/man1/.; \ + done + cp -a $(d)/$(basedir)/man/ja $(d)/$(basedir)/jre/man/. + + : # replace common files in jdk and jre by symlinks + @cd $(d)/$(basedir); \ + for i in `find jre -type f`; do \ + i2=$${i#jre/*}; \ + if [ -f $$i2 ]; then \ + if cmp -s $$i $$i2; then \ + : ; \ + else \ + echo "XXX: differing files"; \ + md5sum $$i $$i2; \ + fi; \ + else \ + continue; \ + fi; \ + d=$$(echo ./$$i2 | sed -r 's,[^/]+/,../,g;s,/[^/]+$$,,;s,\.\.$$,,'); \ + echo " symlink $$i2 -> $$d$$i"; \ + ln -sf $$d$$i $$i2; \ + done + + mkdir -p $(d)/$(etcdir)/security + mkdir -p $(d)/$(etcdir)/management + mkdir -p $(d)/$(etcdir)/images/cursors + + : # rename templates (comments only) to config files, + : # and move to /$(etcdir) + for i in \ + management/jmxremote.password \ + management/snmp.acl; \ + do \ + mv $(d)/$(basedir)/jre/lib/$$i.template $(d)/$(etcdir)/$$i; \ + done + +ifeq ($(with_bridge),atk) + ifneq (,$(filter $(distrel),lenny wheezy squeeze jessie lucid precise quantal raring saucy trusty utopic vivid)) + cp -p debian/accessibility-atk.properties.disabled \ + $(d)/$(basedir)/jre/lib/accessibility.properties + else + cp -p debian/accessibility-atk.properties.enabled \ + $(d)/$(basedir)/jre/lib/accessibility.properties + endif +else ifneq (,$(with_bridge)) + cp -p debian/accessibility.properties $(d)/$(basedir)/jre/lib/ +endif + cp -p debian/swing.properties $(d)/$(basedir)/jre/lib/ + +ifneq (,$(pkg_certs)) + rm -f $(d)/$(basedir)/jre/lib/security/cacerts +endif + + : # FIXME: merge nss changes from IcedTea + cp debian/nss.cfg $(d)/$(basedir)/jre/lib/security/nss.cfg + + : # move config files to $(etcdir) and symlink them. + for i in \ + $(if $(with_bridge),accessibility.properties) \ + calendars.properties \ + content-types.properties \ + images/cursors/cursors.properties \ + logging.properties \ + sound.properties \ + flavormap.properties \ + net.properties \ + psfontj2d.properties \ + psfont.properties.ja \ + swing.properties \ + tz.properties \ + management/jmxremote.access \ + management/management.properties \ + security/java.policy \ + security/java.security \ + $$([ -f $(d)/$(basedir)/jre/lib/security/nss.cfg ] && echo security/nss.cfg) \ + $(if $(findstring ca-cert,$(pkg_certs)),,security/cacerts) \ + security/blacklisted.certs; \ + do \ + mv $(d)/$(basedir)/jre/lib/$$i $(d)/$(etcdir)/$$i; \ + done + mv $(d)/$(basedir)/jre/lib/$(archdir)/jvm.cfg \ + $(d)/$(etcdir)/ +ifneq (,$(filter $(DEB_HOST_ARCH), $(hotspot_archs))) + printf -- '-zero KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg +else + printf -- '-zero ALIASED_TO -server\n' >> $(d)/$(etcdir)/jvm.cfg +endif + +ifneq (,$(filter $(DEB_HOST_ARCH), $(jamvm_archs))) + printf -- '-jamvm KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg +endif + +ifneq (,$(filter $(DEB_HOST_ARCH),$(jamvm_defaults))) + grep '^[# ]' $(d)/$(etcdir)/jvm.cfg \ + > $(d)/$(etcdir)/jvm.cfg.new + grep 'jamvm' $(d)/$(etcdir)/jvm.cfg \ + >> $(d)/$(etcdir)/jvm.cfg.new + egrep -v '^[# ]|jamvm' $(d)/$(etcdir)/jvm.cfg \ + >> $(d)/$(etcdir)/jvm.cfg.new + mv $(d)/$(etcdir)/jvm.cfg.new $(d)/$(etcdir)/jvm.cfg +endif + : # FIXME: avian working with 8? + : # printf -- '-avian KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg + printf -- '-dcevm KNOWN\n' >> $(d)/$(etcdir)/jvm.cfg + +ifeq (0,1) +# FIXME: XXX + mv $(d)/$(basedir)/jre/lib/fontconfig.Ubuntu.properties.src \ + $(d)/$(etcdir)/fontconfig.properties +endif + + : # remove files which we do not want to distribute + rm -f $(d)/$(basedir)/jre/lib/fontconfig*.properties.src + rm -f $(d)/$(basedir)/jre/lib/fontconfig*.bfc + rm -f $(d)/$(basedir)/jre/lib/$(archdir)/*/classes.jsa + + : # remove empty directories + rmdir $(d)/$(basedir)/jre/lib/management + rmdir $(d)/$(basedir)/jre/lib/applet +# rmdir $(d)/$(basedir)/jre/lib/security + + : # FIXME: fix, move and install tapset files + rm -rf $(d)/$(basedir)/tapset + + : # TODO: why do we provide a custom font.properties.ja? + : # cp -p debian/font.properties.ja $(d_jbin)/$(etcdir)/. +# cp debian/font.properties.wgy_zenhai \ +# $(d)/$(etcdir)/font.properties.ja + + + : # now move things to the packages. it is so ****** to create + : # .install files first. dh_movefiles did do the job perfectly + + : # $(p_jrehl).install / $(p_jre).install + ( \ + echo 'etc'; \ + echo '$(basedir)/jre/lib/jexec'; \ + echo '$(basedir)/jre/lib/rt.jar'; \ + echo '$(basedir)/jre/lib/security/*_policy.jar'; \ + echo '$(basedir)/jre/man/ja'; \ + echo '$(basedir)/man/ja'; \ + echo '$(basedir)/bin/java-rmi.cgi'; \ + ) > debian/$(p_jrehl).install +ifneq (,$(DEB_HOST_MULTIARCH)) + ( \ + echo '$(basedir)/jre/lib/meta-index'; \ + echo '$(basedir)/jre/lib/ext/meta-index'; \ + ) >> debian/$(p_jrehl).install +endif + $(RM) debian/$(p_jre).install + + cd $(CURDIR)/$(d); \ + for i in $(basedir)/jre/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ + case "$$i" in \ + */policytool*) echo $$i >> ../$(p_jre).install;; \ + *) echo $$i >> ../$(p_jrehl).install; \ + esac; \ + done + + cd $(CURDIR)/$(d); \ + for i in $(basedir)/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ + [ -h $$i ] || continue; \ + case "$$i" in \ + */policytool*) echo $$i >> ../$(p_jre).install;; \ + *) echo $$i >> ../$(p_jrehl).install; \ + esac; \ + done; \ + + cd $(CURDIR)/$(d); \ + for i in $(basedir)/jre/lib/$(archdir)/*; do \ + case "$$i" in \ + */libjavagtk.so|*/libsplashscreen.so|*/libjsoundalsa.so|$(if $(with_pulse),*/libicedtea-sound.so|)*/xawt) echo $$i >> ../$(p_jre).install;; \ + */jamvm) echo $$i >> ../$(p_jrej).install;; \ + */zero|*/shark) echo $$i >> ../$(p_jrez).install;; \ + *) echo $$i >> ../$(p_jrehl).install; \ + esac; \ + done + + : # $(p_jrehl).install + ( \ + echo '$(basedir)/jre/ASSEMBLY_EXCEPTION $(commonbasedir)/jre/'; \ + echo '$(basedir)/jre/THIRD_PARTY_README $(commonbasedir)/jre/'; \ + cd $(d); \ + for i in $(basedir)/jre/lib/*; do \ + case "$$i" in \ + */$(archdir)|*/jexec|*/rt.jar|*/security$(if $(DEB_HOST_MULTIARCH),|*/meta-index)) \ + continue; \ + esac; \ + echo $$i $(commonbasedir)/jre/lib/; \ + done; \ + ) >> debian/$(p_jrehl).install + + : # $(p_jdkhl).install + ( \ + cd $(d); \ + for i in $(basedir)/include/*.h; do \ + case $$i in */jawt.h) continue; esac; \ + [ -h $$i ] && continue; \ + echo $$i; \ + done; \ + echo '$(basedir)/include/*/jni_md.h'; \ + echo '$(basedir)/lib/jexec'; \ + echo '$(basedir)/LICENSE'; \ + echo '$(basedir)/ASSEMBLY_EXCEPTION'; \ + echo '$(basedir)/THIRD_PARTY_README'; \ + for i in $(basedir)/lib/*; do \ + case $$i in */jconsole.jar) continue; esac; \ + [ -h $$i ] && continue; \ + echo $$i; \ + done; \ + for i in $(basedir)/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ + case $$i in */appletviewer*|*/jconsole*) continue; esac; \ + [ -h $$i -o "$$i" = $(basedir)/bin/java-rmi.cgi ] && continue; \ + echo $$i; \ + done; \ + ) > debian/$(p_jdkhl).install + + : # $(p_jdk).install + ( \ + cd $(d); \ + for i in $(basedir)/include/*.h; do \ + case $$i in */jawt.h) : ;; *) continue; esac; \ + [ -h $$i ] && continue; \ + echo $$i; \ + done; \ + echo '$(basedir)/include/*/jawt_md.h'; \ + for i in $(basedir)/lib/*; do \ + case $$i in */jconsole.jar) : ;; *) continue; esac; \ + [ -h $$i ] && continue; \ + echo $$i; \ + done; \ + for i in $(basedir)/{bin,man/man1,man/ja_JP.UTF-8/man1}/*; do \ + case $$i in */appletviewer*|*/jconsole*) : ;; *) continue; esac; \ + [ -h $$i -o "$$i" = $(basedir)/bin/java-rmi.cgi ] && continue; \ + echo $$i; \ + done; \ + ) > debian/$(p_jdk).install + + : # $(p_src).install + ( \ + echo '$(basedir)/src.zip $(TOP)/$(basename)/'; \ + ) > debian/$(p_src).install + + : # move demos and samples, create symlinks for $(p_demo) + mkdir -p $(d)/usr/share/doc/$(p_jrehl)/demo + for i in $(d)/$(basedir)/demo/*; do \ + b=$$(basename $$i); \ + case "$$i" in \ + */jvmti) \ + echo $(basedir)/demo/$$b usr/share/doc/$(p_jrehl)/demo/$$b >> $(d_demo).links;; \ + *) \ + mv $$i $(d)/usr/share/doc/$(p_jrehl)/demo/$$b; \ + echo usr/share/doc/$(p_jrehl)/demo/$$b $(basedir)/demo/$$b >> $(d_demo).links;; \ + esac; \ + done + mv $(d)/$(basedir)/sample $(d)/usr/share/doc/$(p_jrehl)/examples + echo usr/share/doc/$(p_jrehl)/examples $(basedir)/sample >> $(d_demo).links + echo usr/share/doc/$(p_jre) usr/share/doc/$(p_demo) >> $(d_demo).links + + : # $(p_demo).install + ( \ + echo '$(basedir)/demo'; \ + echo 'usr/share/doc/$(p_jrehl)/examples'; \ + echo 'usr/share/doc/$(p_jrehl)/demo'; \ + ) > debian/$(p_demo).install + + : # $(p_dbg).install +ifneq (,$(wildcard $(d)/$(basedir)/jre/lib/$(archdir)/*.diz)) + ( \ + echo '$(basedir)/jre/lib/$(archdir)/*.diz'; \ + echo '$(basedir)/jre/lib/$(archdir)/*/*.diz'; \ + ) > debian/$(p_dbg).install +endif +ifneq (,$(wildcard $(d)/$(basedir)/jre/lib/$(archdir)/*.debuginfo)) + ( \ + echo '$(basedir)/jre/lib/$(archdir)/*.debuginfo'; \ + echo '$(basedir)/jre/lib/$(archdir)/*/*.debuginfo'; \ + ) > debian/$(p_dbg).install +endif + + dh_install --sourcedir=debian/tmp --fail-missing -XLICENSE -Xrelease + + find $(d_jrehl) $(d_jre) $(d_jrez) $(d_jrej) -type f \ + \( -name '*.debuginfo' -o -name '*.diz' \) -print | xargs -r rm -f + +ifneq (,$(DEB_HOST_MULTIARCH)) + rm -f $(d_jrehl)/$(commonbasedir)/jre/lib/ext/meta-index +endif + + : # give all permissions to cross-VM extension directory + sed -i \ + -e '/permission java\.security\.AllPermission;/,/};/c\' \ + -e ' permission java.security.AllPermission;\' \ + -e '};\' \ + -e '\' \ + $(if $(DEB_HOST_MULTIARCH),$(foreach i, $(lib_ext_dirs), \ + -e 'grant codeBase "file:/$(TOP)/java-$(shortver)-$(origin)-$(i)/jre/lib/ext/*" {\' \ + -e ' permission java.security.AllPermission;\' \ + -e '};\')) \ + -e '\' \ + -e '// Comment this out if you want to give all permissions to the\' \ + -e '// Debian Java repository too:\' \ + -e '//grant codeBase "file:/usr/share/java/repository/-" {\' \ + -e '// permission java.security.AllPermission;\' \ + -e '//};\' \ + -e '' \ + $(d_jrehl)/$(security)/java.policy +# 'make Emacs Makefile mode happy + + dh_installdirs -p$(p_jrehl) \ + usr/share/doc/$(p_jrehl) \ + usr/share/binfmts + + dh_installdirs -p$(p_jre) \ + usr/share/applications \ + usr/share/application-registry \ + usr/share/mime-info \ + usr/share/pixmaps + + : # add GNOME stuff + cp -p debian/$(basename)-policytool.desktop \ + $(d_jre)/usr/share/applications/ +ifneq (,$(findstring cautious-launcher, $(java_launcher))) + cp -p debian/$(basename)-java.desktop \ + $(d_jre)/usr/share/applications/ +endif + + for i in archive; do \ + cp debian/$(basename)-$$i.applications \ + $(d_jre)/usr/share/application-registry/; \ + cp debian/$(basename)-$$i.keys $(d_jre)/usr/share/mime-info/; \ + cp debian/$(basename)-$$i.mime $(d_jre)/usr/share/mime-info/; \ + done + + cp -p debian/sun_java.xpm \ + $(d_jre)/usr/share/pixmaps/$(basename).xpm + + mkdir -p $(d_demo)/usr/share/pixmaps + cp -p debian/sun_java_app.xpm \ + $(d_demo)/usr/share/pixmaps/$(basename)-app.xpm + + : # install icons + for i in 16 24 32 48; do \ + install -D -m 644 -p src/jdk/src/solaris/classes/sun/awt/X11/java-icon$${i}.png \ + $(d_jre)/usr/share/icons/hicolor/$${i}x$${i}/apps/$(basename).png; \ + done + + : # create docdir symlinks for $(p_jrehl) + ( \ + echo usr/share/doc/$(p_jrehl) $(basedir)/docs; \ + ) > $(d_jrehl).links +ifneq (,$(DEB_HOST_MULTIARCH)) + echo '/$(basedir) /usr/lib/jvm/$(jdirname)' >> $(d_jrehl).links +endif + + : # create docdir symlinks for $(p_jre) + ( \ + echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jre); \ + ) > $(d_jre).links + +ifneq (,$(filter shark zero, $(alternate_vms))) + : # create docdir symlinks for $(p_jrez) + ( \ + echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jrez); \ + ) > $(d_jrez).links +endif + + : # create docdir symlinks for $(p_src) + ( \ + echo usr/share/doc/$(p_jre) usr/share/doc/$(p_src); \ + ) > $(d_src).links + + : # create docdir symlinks for $(p_jdkhl) + ( \ + echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_jdkhl); \ + ) > $(d_jdkhl).links + + : # create docdir symlinks for $(p_jdk) + ( \ + echo usr/share/doc/$(p_jre) usr/share/doc/$(p_jdk); \ + ) > $(d_jdk).links +# doesn't work, no package dependency +ifneq (,$(DEB_HOST_MULTIARCH)) + echo '$(TOP)/$(basename)/src.zip $(basedir)/src.zip' >> $(d_jdkhl).links +endif + + : # create docdir symlinks for $(p_dbg) + ( \ + echo usr/share/doc/$(p_jrehl) usr/share/doc/$(p_dbg); \ + ) > $(d_dbg).links + +ifeq ($(with_bridge),atk) + : # create links for the atk wrapper + echo "usr/share/java/java-atk-wrapper.jar $(basedir)/jre/lib/ext/java-atk-wrapper.jar" \ + >> $(d_jre).links + echo "usr/lib$(multiarch_dir)/jni/libatk-wrapper.so $(basedir)/jre/lib/ext/libatk-wrapper.so" \ + >> $(d_jre).links +else ifneq (,$(with_bridge)) + : # create links for the gnome accessibility bridge + echo "usr/share/java/gnome-java-bridge.jar $(basedir)/jre/lib/ext/gnome-java-bridge.jar" \ + >> $(d_jre).links + ifeq ($(with_jni_bridge),yes) + echo "usr/lib$(multiarch_dir)/jni/libjava-access-bridge-jni.so $(basedir)/jre/lib/ext/libjava-access-bridge-jni.so" \ + >> $(d_jre).links + endif +endif + +ifeq ($(with_tzdata),yes) + echo usr/share/javazi $(basedir)/jre/lib/zi \ + >> $(d_jrehl).links +endif + + : # create links for the config files + find $(d_jrehl)/$(etcdir) -type f ! -name jvm.cfg \ + -printf "$(etcdir)/%P $(basedir)/jre/lib/%P\n" >> $(d_jrehl).links +ifneq (,$(DEB_HOST_MULTIARCH)) + mv $(d_jrehl)/$(etcdir)/jvm.cfg \ + $(d_jrehl)/$(etcdir)/jvm-$(DEB_HOST_ARCH).cfg + ( \ + echo "$(etcdir)/jvm-$(DEB_HOST_ARCH).cfg $(basedir)/jre/lib/$(archdir)/jvm.cfg"; \ + ) >> $(d_jrehl).links +else + ( \ + echo "$(etcdir)/jvm.cfg $(basedir)/jre/lib/$(archdir)/jvm.cfg"; \ + ) >> $(d_jrehl).links +endif +ifneq (,$(pkg_certs)) + echo "etc/ssl/certs/java/cacerts $(basedir)/jre/lib/security/cacerts" \ + >> $(d_jrehl).links +endif + + @echo JRE_HL_TOOLS: $(jre_hl_tools_alt) jexec + @echo JRE_TOOLS: $(jre_tools_alt) + @echo JDK_HL_TOOLS: $(jdk_hl_tools_alt) + @echo JDK_TOOLS: $(jdk_tools_alt) + ( \ + echo 'name=$(jdirname)'; \ + echo 'alias=$(jdiralias)'; \ + echo 'priority=$(priority)'; \ + echo 'section=main'; \ + echo ''; \ + for i in $(jre_hl_tools_alt); do \ + echo "hl $$i /$(basedir)/jre/bin/$$i"; \ + done; \ + echo "hl jexec /$(basedir)/jre/lib/jexec"; \ + for i in $(jre_tools_alt); do \ + echo "jre $$i /$(basedir)/jre/bin/$$i"; \ + done; \ + for i in $(jdk_hl_tools_alt); do \ + echo "jdkhl $$i /$(basedir)/bin/$$i"; \ + done; \ + for i in $(jdk_tools_alt); do \ + echo "jdk $$i /$(basedir)/bin/$$i"; \ + done; \ + for d in $(browser_plugin_dirs); do \ + echo "plugin $$d-javaplugin.so /$(basedir)/jre/lib/$(archdir)/$(plugin_name)"; \ + done; \ + ) > $(d_jrehl)/$(TOP)/.$(jdiralias).jinfo + + ( \ + echo 'package $(basename)'; \ + echo 'interpreter /usr/bin/jexec'; \ + echo 'magic PK\x03\x04'; \ + ) > $(d_jrehl)/$(basedir)/jre/lib/jar.binfmt + + : # another jvm symlink + ln -sf $(jdirname) $(d_jrehl)/usr/lib/jvm/$(jdiralias) + +ifeq ($(with_systemtap),yes FIXME) + : # systemtap support + mkdir -p $(d_jrehl)/usr/share/systemtap/tapset + cp -p build/tapset/hotspot.stp $(d_jrehl)/usr/share/systemtap/tapset/ +endif + + : # OpenJDK Stack Unwinder and Frame Decorator +ifneq (,$(filter $(DEB_HOST_ARCH),amd64 kfreebsd-amd64)) + mkdir -p $(d_jrehl)/usr/share/gdb/auto-load/$(basedir)/jre/lib/$(archdir)/server + cp debian/dbg8.py \ + $(d_jrehl)/usr/share/gdb/auto-load/$(basedir)/jre/lib/$(archdir)/server/libjvm.so-gdb.py + ifneq (,$(filter zero, $(alternate_vms))) + mkdir -p $(d_jrez)/usr/share/gdb/auto-load/$(basedir)/jre/lib/$(archdir)/zero + ln -sf ../server/libjvm.so-gdb.py \ + $(d_jrez)/usr/share/gdb/auto-load/$(basedir)/jre/lib/$(archdir)/zero/libjvm.so + endif +endif + +ifeq (0,1) + : # Install stuff to generate font config and timezone files. + mkdir -p $(d_jrehl)/$(commonbasedir)/jre/lib +# FIXME: not built in 8 + cp -p build/openjdk.build/btjars/compilefontconfig.jar \ + $(d_jrehl)/$(commonbasedir)/jre/lib/ + cp -p build/openjdk.build/btjars/javazic.jar \ + $(d_jrehl)/$(commonbasedir)/jre/lib/ +endif + + : # install lintian overrides + for FILE in debian/*.overrides; do \ + PKG=`basename $$FILE .overrides`; \ + install -D -m644 $$FILE debian/$$PKG/usr/share/lintian/overrides/$$PKG; \ + done + +nodocs = $(if $(findstring nodocs, $(DEB_BUILD_OPTIONS)),-N$(p_doc)) +nojrej = $(if $(filter jamvm, $(alternate_vms)),,-N$(p_jrej)) +nojrez = $(if $(filter shark zero, $(alternate_vms)),,-N$(p_jrez)) + +# Build architecture independant packages +binary-indep: build stamps/build-docs install + dh_testdir + dh_testroot +ifeq ($(with_docs),yes) + dh_installchangelogs -p$(p_doc) + dh_installdocs -p$(p_doc) + mkdir -p $(d_doc)/usr/share/doc/$(p_jrehl) + for i in $(builddir)/docs/*; do \ + [ -e $$i ] || continue; \ + b=$$(basename $$i); \ + cp -a $$i $(d_doc)/usr/share/doc/$(p_jrehl)/; \ + ln -sf ../$(p_jrehl)/$$b $(d_doc)/usr/share/doc/$(p_doc)/$$b; \ + done +endif +# FIXME: desktop and menu files not ready for multiarch. #658321 +ifeq (,$(DEB_HOST_MULTIARCH)) + dh_installmenu -i $(nodocs) +endif + -dh_icons -i $(nodocs) || dh_iconcache -i $(nodocs) +# dh_installdebconf -i $(nodocs) + dh_link -i $(nodocs) + dh_compress -i $(nodocs) -Xexamples -Xdemo -Xpackage-list + dh_fixperms -i $(nodocs) + dh_installdeb -i $(nodocs) + dh_gencontrol -i $(nodocs) -- $(control_vars) + dh_md5sums -i $(nodocs) + dh_builddeb -i $(nodocs) $(bd_options) + +absarchdir = $(CURDIR)/$(d_jrehl)/$(basedir)/jre/lib/$(archdir) +shlibdeps_ld_path =$(absarchdir):$(absarchdir)/client:$(absarchdir)/server:$(absarchdir)/native_threads$(if $(xulrunner_depends),:$(shell pkg-config --libs-only-L libxul | sed 's/^-L//;s/-devel//;s,/lib *$$,,')) + +# pass vm name as first argument +define install_test_results + mkdir -p $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH) +# -cp mauve-$(1)/mauve_output-$(1) \ +# $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/mauve_output-$(1).log + -cp jtreg_output-$(1) \ + $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/jtreg_output-$(1).log + -cp test/jtreg-summary-$(1).log test/check-*-$(1).log \ + $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/ + -cp test/failed_tests-$(1).tar.gz \ + $(d_jdk)/usr/share/doc/$(p_jrehl)/test-$(DEB_HOST_ARCH)/failed_tests-$(1).tar.gz +endef + +# Build architecture dependant packages +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs -p$(p_jrehl) + dh_installdocs -p$(p_jrehl) \ + debian/JAVA_HOME \ + debian/README.alternatives \ + debian/README.Debian +ifeq (0,1) +# FIXME: IcedTea specific bits + for i in AUTHORS NEWS README; do \ + cp -p $$i $(d_jrehl)/usr/share/doc/$(p_jrehl)/$$i.IcedTea; \ + done +endif + $(call install_test_results,$(default_vm)) + +ifneq (,$(filter jamvm, $(alternate_vms))) + dh_installchangelogs -p$(p_jrej) + dh_installdocs -p$(p_jrej) + $(call install_test_results,jamvm) +endif +ifneq (,$(filter zero, $(alternate_vms))) + $(call install_test_results,zero) +endif +# FIXME: desktop and menu files not ready for multiarch. #658321 +ifeq (,$(DEB_HOST_MULTIARCH)) + dh_installmenu -s $(nodemo) $(nojrej) $(nojrez) +endif + -dh_icons -s $(nodemo) $(nojrej) $(nojrez) \ + || dh_iconcache -s $(nodemo) $(nojrej) $(nojrez) +# dh_installdebconf -s $(nodemo) $(nojrej) $(nojrez) + dh_link -s $(nodemo) $(nojrej) $(nojrez) + $(if $(filter $(dh_version), 5 6 7 8),NADA=,DH_COMPAT=9) dh_strip -s \ + $(nodemo) $(nojrej) $(nojrez) \ + -Xlibjvm.so -X.debuginfo --dbg-package=$(p_dbg) + +ifeq (,$(findstring nostrip, $(DEB_BUILD_OPTIONS))) + set -ex; \ + for i in {$(d_jrehl),$(d_jre),$(d_jrez)}/$(basedir)/jre/lib/$(archdir)/*/libjvm.so; do \ + [ -f $$i ] || continue; \ + b_id=$$(LC_ALL=C readelf -n $$i | sed -n 's/ *Build ID: *\([0-9a-f][0-9a-f]*\)/\1/p'); \ + if [ -z "$$b_id" ] || [ "$(dh_version)" -lt 9 ]; then \ + id=$$(echo $$i | sed -r 's,debian/[^/]+,$(d_dbg)/usr/lib/debug,'); \ + echo strip $$i; \ + mkdir -p $$(dirname $$id); \ + objcopy --only-keep-debug $$i $$id; \ + chmod 644 $$id; \ + strip --remove-section=.comment --remove-section=.note \ + --strip-debug $$i; \ + objcopy --add-gnu-debuglink $$id $$i; \ + else \ + d=usr/lib/debug/.build-id/$${b_id:0:2}; \ + f=$${b_id:2}.debug; \ + mkdir -p $(d_dbg)/$$d; \ + objcopy --only-keep-debug --compress-debug-sections $$i $(d_dbg)/$$d/$$f; \ + chmod 644 $(d_dbg)/$$d/$$f; \ + strip --remove-section=.comment --remove-section=.note $$i; \ + pushd $(d_dbg)/$$d >/dev/null; \ + objcopy --add-gnu-debuglink $$f $(CURDIR)/$$i; \ + popd >/dev/null; \ + fi; \ + done +endif + + dh_compress -s $(nodemo) $(nojrej) $(nojrez) -Xexamples -Xdemo -Xpackage-list + dh_fixperms -s $(nodemo) $(nojrej) $(nojrez) + dh_makeshlibs -p$(p_jrehl) -p$(p_jre) + dh_shlibdeps -s $(nodemo) $(nojrej) $(nojrez) -L $(p_jrehl) \ + -l$(shlibdeps_ld_path) \ + -- + dh_installdeb -s $(nodemo) $(nojrej) $(nojrez) + dh_gencontrol -s $(nodemo) $(nojrej) $(nojrez) \ + -- $(control_vars) + dh_md5sums -s $(nodemo) $(nojrej) $(nojrez) + : # FIXME: something seems to hang here ... + -ps afx + NO_PKG_MANGLE=1 \ + dh_builddeb -s $(nodemo) $(nojrej) $(nojrez) #$(bd_options) + +is_release = +is_release = yes +hg_project = jdk8u +hg_tag = jdk8u131-b11 +package_version = $(subst jdk,,$(hg_tag)) +ifneq ($(is_release),yes) + package_version := $(subst -,~,$(package_version)) +endif +hg_url = http://hg.openjdk.java.net/jdk8u/$(hg_project) +hg_project_aarch64 = jdk8u +hg_tag_aarch64 = aarch64-jdk8u131-b12 +hg_url_aarch64 = http://hg.openjdk.java.net/aarch64-port/$(hg_project_aarch64) +origdir = ../openjdk-8-$(package_version).orig +get-orig: + mkdir $(origdir) + wget -O $(origdir)/root.tar.bz2 $(hg_url)/archive/$(hg_tag).tar.bz2 + for repo in corba jaxp jaxws langtools hotspot jdk nashorn; do \ + wget -O $(origdir)/$$repo.tar.bz2 \ + $(hg_url)/$$repo/archive/$(hg_tag).tar.bz2; \ + done + wget -O $(origdir)/hotspot-aarch64.tar.bz2 \ + $(hg_url_aarch64)/hotspot/archive/$(hg_tag_aarch64).tar.bz2 + + wget -O $(origdir)/icedtea-sound.tar.xz \ + http://icedtea.classpath.org/download/source/icedtea-sound-1.0.1.tar.xz + +# wget -O $(origdir)/icedtea-sound.tar.bz2 \ +# http://icedtea.classpath.org/hg/icedtea-sound/archive/tip.tar.bz2 + + wget -O $(origdir)/jamvm.tar.gz \ + http://downloads.sourceforge.net/project/jamvm/jamvm/JamVM%202.0.0/jamvm-2.0.0.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fjamvm%2Ffiles%2Fjamvm%2FJamVM%25202.0.0%2F&ts=1422282260&use_mirror=netcologne + + : # remove JSON license from THIRD_PARTY_README; no files shipped + set -ex; \ + for repo in root corba jaxp jaxws langtools hotspot jdk nashorn hotspot-aarch64; do \ + [ -f $(origdir)/$$repo.tar.bz2 ] || continue; \ + d=$$(tar tf $(origdir)/$$repo.tar.bz2 | head -1 | sed 's,/.*,,'); \ + tar xf $(origdir)/$$repo.tar.bz2; \ + find $$d -maxdepth 2 -name THIRD_PARTY_README; \ + for f in $$(find $$d -maxdepth 2 -name THIRD_PARTY_README); do \ + awk '/^%% This notice is provided with respect to JSON/ { skip=1 } skip == 0 {print} /^----------/ { skip = 0} ' $$f > $$f.new; \ + diff -u $$f $$f.new || true; \ + mv $$f.new $$f; \ + done; \ + case $$repo in jdk) \ + rm -v -rf $$d/src/share/native/java/util/zip/zlib-*; \ + find $$d/src/share/native/sun/awt/image/jpeg \ + ! -name imageioJPEG.c ! -name jpegdecoder.c ! -name jinclude.h \ + -type f -print -delete; \ + rm -v -rf $$d/src/share/native/sun/awt/giflib; \ + rm -v -rf $$d/src/share/native/sun/awt/libpng; \ + rm -v -f $$d/src/share/native/sun/java2d/cmm/lcms/cms*.c; \ + rm -v -f $$d/src/share/native/sun/java2d/cmm/lcms/lcms2*.h; \ + rm -v -rf $$d/src/solaris/native/sun/security/smartcardio/MUSCLE; \ + esac; \ + tar cfJ $(origdir)/$$repo.tar.xz $$d; \ + rm -rf $$d; \ + rm -f $(origdir)/$$repo.tar.bz2; \ + done + +binary: binary-arch binary-indep +.PHONY: build build-arch build-indep clean binary-indep binary-arch binary install packaging-files |