Re: IcedTea - a first step towards OpenJDK
well, then its cheaper to add it.
I've attatched a new debian/control with the build-deps fixed up to
allow for building on sid.
well, this is wrong, you are lacking the correct libraries. see linux32(1) for
the personality thing.
I've attatched a new debian/rules with a check added so it errors out early and with instructions on what to do if it detects someone trying to build in a i386 chrot on an amd64 system without switching personality.
Source: icedtea-java7
Section: devel
Priority: extra
Maintainer: Matthias Klose <doko@ubuntu.com>
Build-Depends: debhelper (>= 5), cdbs, autotools-dev, unzip, m4, gcj (>= 4:4.2.1), libxtst-dev, libxi-dev, libxt-dev, libxp-dev, libxaw7-dev, zip, libcupsys2-dev, lesstif2-dev, libasound2-dev, libfreetype6-dev, libxalan2-java, gawk, pkg-config, xprop | xbase-clients, libbonobo2-dev, libatspi-dev, at-spi, openssl, ca-certificates, libgtk2.0-dev, java-gcj-compat-dev (>= 1.0.76-2ubuntu3), firefox-dev | libxul-dev, ecj, wget
Standards-Version: 3.7.2
Package: icedtea-java7-jdk
Architecture: any
Depends: icedtea-java7-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Suggests: icedtea-java7-demo, icedtea-java7-source
Provides: java-sdk, java2-sdk, java5-sdk, java6-sdk, java7-sdk
Description: Java runtime based on OpenJDK
Icedtea is a temporary fork of OpenJDK
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-jre
Architecture: all
Section: interpreters
Depends: icedtea-java7-bin (>= ${base:Version}), java-common, ${shlibs:Depends}, ${misc:Depends}
Provides: java-runtime, java2-runtime, java5-runtime, java6-runtime, java7-runtime
Description: Java runtime based on OpenJDK
Icedtea is a temporary fork of OpenJDK
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-bin
Architecture: any
Section: interpreters
Depends: icedtea-java7-jre (>= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Conflicts: binfmt-support (<< 1.1.2)
Suggests: binfmt-support
Description: Java runtime based on OpenJDK
Icedtea is a temporary fork of OpenJDK
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-demo
Architecture: any
Depends: icedtea-java7-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Java runtime based on OpenJDK
Icedtea is a temporary fork of OpenJDK
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-plugin
Architecture: any
Depends: icedtea-java7-jre (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends}
Description: Java plugin based on OpenJDK and gcjwebplugin
Icedtea is a temporary fork of OpenJDK
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-source
Architecture: all
Depends: icedtea-java7-jdk (>= ${binary:Version})
Description: Icedtea Development Kit (JDK) source files
Icedtea is a development environment for building applications,
applets, and components using the Java programming language.
.
This package contains the Java programming language source files
(src.zip) for all classes that make up the Java core API.
.
Homepage: http://icedtea.classpath.org/
Package: icedtea-java7-doc
Architecture: all
Suggests: icedtea-java7-jdk
Description: Icedtea Development Kit (JDK) documentation
Icedtea is a development environment for building applications,
applets, and components using the Java programming language.
.
This package contains the API documentation.
#!/usr/bin/make -f
# -*- makefile -*-
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
unexport LANG LC_ALL
SHELL = /bin/bash
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
UNAMEM := $(shell uname -m)
arch_map := amd64=amd64 i386=i586 lpia=i586 powerpc=ppc sparc=sparc ia64=ia64
archdir_map := amd64=amd64 i386=i386 lpia=i386 powerpc=ppc sparc=sparc ia64=ia64
jvmarch := $(strip $(patsubst $(DEB_HOST_ARCH)=%, %, \
$(filter $(DEB_HOST_ARCH)=%, $(arch_map))))
archdir := $(strip $(patsubst $(DEB_HOST_ARCH)=%, %, \
$(filter $(DEB_HOST_ARCH)=%, $(archdir_map))))
# STAGE1_JAVA is either gcj or icedtea, the latter not yet supported
STAGE1_JAVA = gcj
#STAGE1_JAVA = icedtea
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
export GCC_SUFFIX = -4.1
GCJ_SUFFIX = -4.2
DISTRIBUTION_PATCHES = debian/patches/gcc-suffix.diff
export DISTRIBUTION_PATCHES
ifeq ($(STAGE1_JAVA),gcj)
CONFIGURE_ARGS = \
--with-ecj=/usr/bin/ecj \
--with-java=/usr/lib/jvm/java-gcj/bin/java \
--with-javah=/usr/bin/gjavah$(GCJ_SUFFIX) \
--with-rmic=/usr/bin/grmic$(GCJ_SUFFIX) \
--with-jar=/usr/bin/gjar$(GCJ_SUFFIX) \
--with-libgcj-jar=/usr/share/java/libgcj$(GCJ_SUFFIX).jar \
--with-xalan2-jar=/usr/share/java/xalan2.jar \
--with-xalan2-serializer-jar=/usr/share/java/serializer.jar
endif
# --with-ecj=$(CURDIR)/ecj/ecj \
# --with-ecj-jar=$(CURDIR)/ecj/eclipse-ecj.jar \
# --with-ecj=/usr/bin/ecj \
# --with-javac=/usr/lib/jvm/java-gcj/bin/javac \
build_target = icedtea-against-icedtea
#build_target = icedtea-against-ecj.stamp
VENDOR := icedtea
Vendor := IcedTea
TOP = usr/lib/jvm
basedir = usr/lib/jvm/$(jdirname)
origin = icedtea
basename = icedtea-java$(shortver)
jvmver = 1.7.0
shortver = 7
# priority is higher than java-gcj-compat
priority = 1060
jdiralias = java-$(shortver)-$(origin)
basedir = usr/lib/jvm/$(jdiralias)
jreimg = openjdk/control/build/linux-$(jvmarch)/j2re-image
sdkimg = openjdk/control/build/linux-$(jvmarch)/j2sdk-image
security = etc/$(jdiralias)/security
browser_plugin_dirs = firefox iceape iceweasel mozilla midbrowser xulrunner
# (most) jre and jdk tools handled by the alternatives system.
# dups in heimdal-clients, krb5-user: kinit, klist, ktab, no alternatives
all_jre_tools = $(notdir $(wildcard $(d)/$(basedir)/jre/bin/*))
corba_tools = orbd servertool tnameserv
jre_tools = $(filter-out $(corba_tools), $(all_jre_tools))
jre_tools_alt = $(filter-out kinit klist ktab, $(jre_tools)) $(corba_tools)
all_jdk_tools = $(notdir $(wildcard $(d)/$(basedir)/bin/*))
jdk_tools = $(filter-out $(all_jre_tools), $(all_jdk_tools))
jdk_tools_alt = $(jdk_tools)
jre_manpages_re:= $(shell echo $(jre_tools) $(corba_tools) | tr -s ' ' '|')
p_bin = $(basename)-bin
p_jre = $(basename)-jre
p_jdk = $(basename)-jdk
p_demo = $(basename)-demo
p_src = $(basename)-source
p_doc = $(basename)-doc
p_plug = $(basename)-plugin
d = debian/tmp
d_bin = debian/$(p_bin)
d_jre = debian/$(p_jre)
d_jdk = debian/$(p_jdk)
d_demo = debian/$(p_demo)
d_src = debian/$(p_src)
d_doc = debian/$(p_doc)
d_plug = debian/$(p_plug)
packaging-files:
for f in debian/*.in; do \
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@/$(relstring)/g' \
-e 's/@basename@/$(basename)/g' \
-e 's,@TOP@,$(TOP),g' \
-e 's,@basedir@,$(basedir),g' \
-e 's,@basediralias@,$(TOP)/$(jdiralias),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/@jre_tools@/$(jre_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,@browser_dirs@,$(browser_plugin_dirs),g' \
$$f > $$f2; \
done
ifneq (,$(filter $(DEB_HOST_ARCH), i386 lpia))
cat debian/$(p_bin)-i586.menu >> $(d_bin).menu
rm -f debian/$(p_bin)-i586.menu
endif
icedtea-configure: stamps/icedtea-configure
stamps/icedtea-configure:
mkdir -p stamps
./configure $(CONFIGURE_ARGS)
touch $@
unpack: stamps/unpack
stamps/unpack: stamps/icedtea-configure
$(MAKE) extract.stamp
$(MAKE) extract-ecj.stamp
touch $@
patch: stamps/patch
stamps/patch: stamps/unpack
$(MAKE) patch.stamp
$(MAKE) patch-ecj.stamp
touch $@
build: stamps/build stamps/build-bridge stamps/cacerts
stamps/build: stamps/patch
#if make fails on the following command it is because you are in an
#i386 chroot on a amd64 box and have not switched personality.
#please rerun the build through linux32
test "!" "(" "(" $(UNAMEM) = x86_64 ")" -a "(" $(DEB_HOST_ARCH) = i386 ")" ")"
$(MAKE) $(build_target)
touch $@
bridge_dir = java-access-bridge-1.19.2
stamps/build-bridge: stamps/build stamps/configure-bridge
JAVA_HOME=$(CURDIR)/$(sdkimg) \
PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH \
$(MAKE) -C $(bridge_dir)
touch $@
stamps/configure-bridge:
rm -rf $(bridge_dir)
tar xf $(bridge_dir).tar.gz
cd $(bridge_dir) && \
JAVA_HOME=$(CURDIR)/$(sdkimg) \
PATH=$(CURDIR)/$(sdkimg)/bin:$$PATH \
./configure
touch $@
stamps/cacerts: stamps/build
rm -rf build-cacerts
mkdir build-cacerts
cat /etc/ssl/certs/ca-certificates.crt > build-cacerts/cert.pem
perl debian/generate-cacerts.pl $(sdkimg)/bin/keytool
touch $@
clean:
dh_testdir
dh_testroot
rm -rf stamps
-$(MAKE) distclean
rm -rf openjdk openjdk-ecj
for f in debian/*.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
rm -rf $(bridge_dir)
rm -rf cacerts build-cacerts
dh_clean
install: packaging-files
dh_testdir
dh_testroot
dh_clean -k
rm -f debian/*.install debian/*.links
dh_installdirs
: # install into temporary location
mkdir -p $(d)/$(basedir)
cp -a $(sdkimg)/* $(d)/$(basedir)/
cp -a $(jreimg)/man $(d)/$(basedir)/jre/
chmod -R u+w $(d)
cp -a $(bridge_dir)/bridge/accessibility.properties $(d)/$(basedir)/jre/lib/
cp -a $(bridge_dir)/gnome-java-bridge.jar $(d)/$(basedir)/jre/lib/ext/
cp -a cacerts $(d)/$(basedir)/jre/lib/security/
: # remove files, which are not installed at all
: # replace common files in jdk and jre by symlinks
@cd $(d)/$(basedir); \
for i in `find jre -type f`; do \
i2=$${i#jre/*}; \
[ -f $$i2 ] && cmp -s $$i $$i2 || continue; \
d=$$(echo ./$$i2 | sed -r 's,[^/]+/,../,g;s,/[^/]+$$,,;s,\.\.$$,,'); \
echo " symlink $$i2 -> $$d$$i"; \
ln -sf $$d$$i $$i2; \
done
mkdir -p $(d)/etc/$(jdiralias)/security
mkdir -p $(d)/etc/$(jdiralias)/management
: # rename templates (comments only) to config files, and move to /etc/$(jdiralias)
for i in \
management/jmxremote.password \
management/snmp.acl; \
do \
mv $(d)/$(basedir)/jre/lib/$$i.template $(d)/etc/$(jdiralias)/$$i; \
done
: # move config files to etc/$(jdiralias) and symlink them.
for i in \
accessibility.properties \
calendars.properties \
content-types.properties \
logging.properties \
sound.properties \
flavormap.properties \
net.properties \
psfontj2d.properties \
psfont.properties.ja \
management/jmxremote.access \
management/management.properties \
security/cacerts \
security/java.policy \
security/java.security; \
do \
mv $(d)/$(basedir)/jre/lib/$$i $(d)/etc/$(jdiralias)/$$i; \
done
mv $(d)/$(basedir)/jre/lib/$(archdir)/jvm.cfg \
$(d)/etc/$(jdiralias)/
cp debian/fontconfig.properties.src \
$(d)/etc/$(jdiralias)/fontconfig.properties
: # FIXME: generate fontconfig.bfc
mv $(d)/$(basedir)/jre/lib/fontconfig.Ubuntu.bfc \
$(d)/etc/$(jdiralias)/fontconfig.bfc
: # 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
: # TODO: why do we provide a custom font.properties.ja?
: # cp -p debian/font.properties.ja $(d_jbin)/etc/$(jdiralias)/.
: # now move things to the packages. it is so ****** to create
: # .install files first. dh_movefiles did do job perfectly
: # $(p_bin).install
( \
echo 'etc'; \
echo '$(basedir)/jre/lib/jexec'; \
echo '$(basedir)/jre/bin'; \
echo '$(basedir)/jre/man'; \
echo '$(basedir)/man/ja'; \
cd $(CURDIR)/$(d); \
for i in $(basedir)/jre/lib/$(archdir)/*; do \
case "$$i" in */gcjwebplugin.so) continue; esac; \
echo $$i; \
done; \
cd $(CURDIR)/$(d); \
for i in $(basedir)/{bin,man/man1,man/ja_JP.eucJP/man1}/*; do \
[ -h $$i ] || continue; \
echo $$i; \
done; \
) > debian/$(p_bin).install
: # $(p_jre).install
( \
echo '$(basedir)/jre/LICENSE'; \
echo '$(basedir)/jre/ASSEMBLY_EXCEPTION'; \
echo '$(basedir)/jre/README.html'; \
echo '$(basedir)/jre/THIRD_PARTY_README'; \
cd $(d); \
for i in $(basedir)/jre/lib/*; do \
case "$$i" in */$(archdir)|*/jexec) continue; esac; \
echo $$i; \
done; \
) > debian/$(p_jre).install
: # $(p_jdk).install
( \
echo '$(basedir)/include'; \
echo '$(basedir)/lib'; \
echo '$(basedir)/LICENSE'; \
echo '$(basedir)/ASSEMBLY_EXCEPTION'; \
echo '$(basedir)/README.html'; \
echo '$(basedir)/THIRD_PARTY_README'; \
cd $(d); \
for i in $(basedir)/{bin,man/man1,man/ja_JP.eucJP/man1}/*; do \
[ -h $$i -o "$$i" = jexec ] && continue; \
echo $$i; \
done; \
) > debian/$(p_jdk).install
: # $(p_plug).install
( \
echo '$(basedir)/jre/lib/$(archdir)/gcjwebplugin.so'; \
) > debian/$(p_plug).install
: # $(p_src).install
( \
echo '$(basedir)/src.zip'; \
) > debian/$(p_src).install
: # move demos and samples, create symlinks for $(p_demo)
mkdir -p $(d)/usr/share/doc/$(p_jre)/demo
for i in $(d)/$(basedir)/demo/*; do \
b=$$(basename $$i); \
case "$$i" in \
*/jvmti) \
echo $(basedir)/demo/$$b usr/share/doc/$(p_jre)/demo/$$b >> $(d_demo).links;; \
*) \
mv $$i $(d)/usr/share/doc/$(p_jre)/demo/$$b; \
echo usr/share/doc/$(p_jre)/demo/$$b $(basedir)/demo/$$b >> $(d_demo).links;; \
esac; \
done
mv $(d)/$(basedir)/sample $(d)/usr/share/doc/$(p_jre)/examples
echo usr/share/doc/$(p_jre)/examples $(basedir)/sample >> $(d_demo).links
echo usr/share/doc/$(p_jre) usr/share/doc/$(p_demo) >> debian/$(p_demo).links
: # $(p_demo).install
( \
echo '$(basedir)/demo'; \
echo 'usr/share/doc/$(p_jre)/examples'; \
echo 'usr/share/doc/$(p_jre)/demo'; \
) > debian/$(p_demo).install
dh_install --sourcedir=debian/tmp --fail-missing
: # give all permissions to cross-VM extension directory
sed -i \
-e '/permission java\.security\.AllPermission;/,/};/c\' \
-e ' permission java.security.AllPermission;\' \
-e '};\' \
-e '\' \
-e 'grant codeBase "file:/$(basedir)/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_bin)/$(security)/java.policy
# 'make Emacs Makefile mode happy
dh_installdirs -p$(p_bin) \
usr/share/applications \
usr/share/control-center-2.0/capplets \
usr/share/application-registry \
usr/share/mime-info \
usr/share/icons \
usr/share/binfmts
: # add GNOME stuff
cp -p debian/$(basename)-java.desktop \
$(d_bin)/usr/share/applications/
cp -p debian/$(basename)-policytool.desktop \
$(d_bin)/usr/share/control-center-2.0/capplets/
ifneq (,$(filter $(DEB_HOST_ARCH), i386 lpia))
cp -p debian/$(basename)-{java,javaws}.desktop \
$(d_bin)/usr/share/applications/
cp -p debian/$(basename)-{controlpanel,policytool}.desktop \
$(d_bin)/usr/share/control-center-2.0/capplets/
endif
for i in archive web-start; do \
cp debian/$(basename)-$$i.applications \
$(d_bin)/usr/share/application-registry/; \
cp debian/$(basename)-$$i.keys $(d_bin)/usr/share/mime-info/; \
cp debian/$(basename)-$$i.mime $(d_bin)/usr/share/mime-info/; \
done
cp -p debian/sun_java.xpm \
$(d_bin)/usr/share/icons/$(basename).xpm
mkdir -p $(d_demo)/usr/share/icons
cp -p debian/sun_java_app.xpm \
$(d_demo)/usr/share/icons/$(basename)-app.xpm
: # create docdir symlinks for $(p_src)
( \
echo usr/share/doc/$(p_jre) usr/share/doc/$(p_src); \
) > debian/$(p_src).links
: # create docdir symlinks for $(p_jdk)
( \
echo usr/share/doc/$(p_jre) usr/share/doc/$(p_jdk); \
) > debian/$(p_jdk).links
: # create docdir symlinks for $(p_plug)
( \
echo usr/share/doc/$(p_jre) usr/share/doc/$(p_plug); \
) > debian/$(p_plug).links
: # create docdir symlinks for $(p_bin)
( \
echo usr/share/doc/$(p_jre) usr/share/doc/$(p_bin); \
) > debian/$(p_bin).links
: # create links for the config files
find $(d_bin)/etc/$(jdiralias) -type f ! -name jvm.cfg \
-printf "etc/$(jdiralias)/%P $(basedir)/jre/lib/%P\n" >> $(d_bin).links
echo "etc/$(jdiralias)/jvm.cfg $(basedir)/jre/lib/$(archdir)/jvm.cfg" \
>> $(d_bin).links
( \
echo 'name=$(jdirname)'; \
echo 'alias=$(jdiralias)'; \
echo 'priority=$(priority)'; \
echo 'section=non-free'; \
echo ''; \
for i in $(jre_tools_alt); do \
echo "jre $$i /$(TOP)/$(jdiralias)/jre/bin/$$i"; \
done; \
for i in $(jdk_tools_alt); do \
echo "jdk $$i /$(TOP)/$(jdiralias)/bin/$$i"; \
done; \
for i in $(browser_plugin_dirs); do \
echo "plugin $$i-javaplugin.so /$(TOP)/$(jdiralias)/jre/plugin/$(archdir)/gcjwebplugin.so"; \
done; \
) > $(d_bin)/$(TOP)/.$(jdiralias).jinfo
( \
echo 'package $(basename)'; \
echo 'interpreter /$(basedir)/jre/lib/jexec'; \
echo 'magic PK\x03\x04'; \
) > $(d_bin)/usr/share/binfmts/$(basename)
control_vars = \
'-Vbase:Version=7~b18' \
# Build architecture independant packages
binary-indep: build install
dh_testdir
dh_testroot
dh_installchangelogs -p$(p_jre) -p$(p_doc)
dh_installdocs -p$(p_jre) \
debian/JAVA_HOME \
debian/README.alternatives
dh_installdocs -p$(p_doc)
mkdir -p $(d_doc)/usr/share/doc/$(p_jre)
for i in openjdk/control/build/linux-$(jvmarch)/docs/*; do \
b=$$(basename $$i); \
cp -a $$i $(d_doc)/usr/share/doc/$(p_jre)/; \
ln -sf ../$(p_jre)/$$b $(d_doc)/usr/share/doc/$(p_doc)/$$b; \
done
# dh_installmenu -i
# dh_installdebconf -i
dh_link -i
dh_compress -i
dh_fixperms -i
dh_installdeb -i
dh_gencontrol -i -- $(control_vars)
dh_md5sums -i
dh_builddeb -i
# Build architecture dependant packages
binary-arch: build install
dh_testdir
dh_testroot
# dh_installchangelogs -s ChangeLog
# dh_installdocs -s
# dh_installmenu -s
# dh_installdebconf -s
dh_link -s
dh_strip -s
dh_compress -s
dh_fixperms -s
dh_makeshlibs -p$(p_bin)
ld_path=$(CURDIR)/$(d_bin)/$(basedir)/jre/lib/$(archdir) \
dh_shlibdeps -L $(p_bin) \
-l$$ld_path:$$ld_path/client:$$ld_path/native_threads
dh_installdeb -s
dh_gencontrol -s -- $(control_vars)
dh_md5sums -s
dh_builddeb -s
binary: binary-arch binary-indep
.PHONY: build clean binary-indep binary-arch binary install
Reply to: