Files
i2p.i2p/debian/rules
zzz 4ebd92445d Debian: Require libjetty12-java 12.0.32-2
Currently in forky/sid but not trixie/resolute.
12.0.32-2 bundles 4 of the 6 ee8 jars we need.
It does not contain the ee8-nested and ee8-security jars, those are currently in
libjetty12-extra-java. Rather than require -extra-, we bundle those two jars into jetty-extra.jar for now,
as -extra- is very large and has a number of other dependencies.
We have requested that Debian move the two jars to the stndard package.
For the non-libjetty12 builds, those two jars remain in jetty-webapp.jar.

12.0.17 in trixie/resolute is unusable because it is missing the ee8 jars
and is not the official Jetty release version so we can't bundle the jars from the Jetty release,
they are incompatible.
This change removes the 12.0.17 ee8 jars we attempted to bundle.

The trixie/resolute build is still unusable, unless/until they get 12.0.32-2

Update various build.xml classpaths to include jetty-extra.jar.

Fix the reference to cgi-context.xml which was renamed.

There are no changes for the jammy build, which bundles all required Jetty jars,
other than the cgi-context fix.
2026-03-13 08:35:40 -04:00

233 lines
11 KiB
Makefile
Executable File

#!/usr/bin/make -f
# Quoting Policy version 3.9.2.0, 2011-04-07 section 4.9:
# /start quote
# For some packages, notably ones where the same source tree is compiled in
# different ways to produce two binary packages, the build target does not make
# much sense. For these packages it is good enough to provide two (or more)
# targets (build-a and build-b or whatever) for each of the ways of building the
# package, and a build target that does nothing. The binary target will have to
# build the package in each of the possible ways and make the binary package out
# of each.
# ...
# When a package has a configuration and build routine which takes a long time,
# or when the makefiles are poorly designed, or when build needs to run clean
# first, it is a good idea to touch build when the build process is complete.
# This will ensure that if debian/rules build is run again it will not rebuild
# the whole program.
# /end quote
# Since that fits building I2P very well, we override the build target.
#
build:
@echo 'The build target is disabled. Use the appropriate binary target.'
JAVA_HOME=/usr/lib/jvm/default-java
I2P=$(CURDIR)/pkg-temp
ROUTERVERSION=$(CURDIR)/router/java/src/net/i2p/router/RouterVersion.java
export DEB_BUILD_HARDENING=1
# I2P's version will be displayed in the router console as "$I2PVERSION-$EXTRAPREFIX$DEBIANVERSION", eg. 0.8.12-0-deb1
#export EXTRAPREFIX := deb
export JAVA_HOME I2P
export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/^Version:/{print $$2}' |sed 's/.*-\([.0-9A-Za-z~+]\{1,\}\)$$/\1/')
# required for jbigi/jcpuid build
export BITS := $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
# debian: bullseye - transitioning
JSON_SIMPLE_VERSION = $(shell dpkg -l libjson-simple-java | grep '^ii' | awk '{print $$3}')
JSON_SIMPLE_3 = $(shell dpkg --compare-versions '$(JSON_SIMPLE_VERSION)' 'gt' '3.1.1-1~' && echo yes || echo no)
ifeq (yes,$(JSON_SIMPLE_3))
JSON_SIMPLE_PACKAGE = com.github.cliftonlabs.json_simple
JSON_EXCEPTION = JsonException
else
JSON_SIMPLE_PACKAGE = org.json.simple
JSON_EXCEPTION = DeserializationException
endif
%:
dh $@ --with systemd,bash-completion
clean: createcopyright
override_dh_auto_clean:
-[ -r $(CURDIR)/debian/routerversion.java.bak ] && mv -f $(CURDIR)/debian/routerversion.java.bak $(ROUTERVERSION)
dh_auto_clean
ant distclean
find $(CURDIR)/core \( -name '*\.so' -o -name '*\.o' \) -exec rm -f {} \;
rm -rf $(CURDIR)/core/c/jcpuid/lib/
rm -f $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
rm -rf $(CURDIR)/debian/python-i2p
rm -f $(CURDIR)/override.properties
rm -f $(CURDIR)/apps/susidns/src/lib/standard.jar
rm -f $(CURDIR)/apps/susidns/src/lib/jstl.jar
rm -f $(CURDIR)/apps/susidns/src/lib/jstlel.jar
debconf-updatepo
find . -type f -name \*.java.json-simple \
-exec sh -c 'file={} && mv $$file $${file%.json-simple}' \; -print
override_dh_auto_build:
override_dh_systemd_enable:
# We purposely do not set I2P to start at boot.
# This matches the behavior of the initscript
# and the setting RUN_DAEMON=false in /etc/default/i2p
binary-indep: build-indep
build-indep:
dh_prep
mkdir -p $(CURDIR)/installer/lib/wrapper/all
ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
if [ ! -e $(CURDIR)/debian/routerversion.java.bak ]; then \
cp $(ROUTERVERSION) $(CURDIR)/debian/routerversion.java.bak; \
fi
ifeq "$(findstring deb,$(shell grep 'deb' $(ROUTERVERSION)))" ""
sed -e "s/\(.*EXTRA\ =\ \)[^ ]*\"\(.*\)\"/\1\"-$$EXTRAPREFIX$$DEBIANVERSION\"/" < $(ROUTERVERSION) > $(ROUTERVERSION).tmp
mv -f $(ROUTERVERSION).tmp $(ROUTERVERSION)
else
@echo "Already found deb in version, not doing anything"
endif
@# build options
@/bin/echo -e "javac.release=17" > $(CURDIR)/override.properties
@/bin/echo -e "build.built-by=debian" >> $(CURDIR)/override.properties
@/bin/echo -e "build.reproducible=true" >> $(CURDIR)/override.properties
@# debian and ubuntu: everywhere
@/bin/echo -e "with-geoip-database=true" >> $(CURDIR)/override.properties
@/bin/echo -e "with-libjetty12-java=true" >> $(CURDIR)/override.properties
mkdir -p $(CURDIR)/apps/jetty/jettylib
ln -sf /usr/share/java/jetty12-deploy.jar $(CURDIR)/apps/jetty/jettylib/jetty-deploy.jar
ln -sf /usr/share/java/jetty12-ee.jar $(CURDIR)/apps/jetty/jettylib/jetty-ee.jar
ln -sf /usr/share/java/jetty12-http.jar $(CURDIR)/apps/jetty/jettylib/jetty-http.jar
ln -sf /usr/share/java/jetty12-io.jar $(CURDIR)/apps/jetty/jettylib/jetty-io.jar
ln -sf /usr/share/java/jetty12-rewrite.jar $(CURDIR)/apps/jetty/jettylib/jetty-rewrite-handler.jar
ln -sf /usr/share/java/jetty12-security.jar $(CURDIR)/apps/jetty/jettylib/jetty-security.jar
@# debian 12.0.32-2 package DOES contain these ee8 jars
ln -sf /usr/share/java/jetty12-ee8-apache-jsp.jar $(CURDIR)/apps/jetty/jettylib/jetty-apache-jsp.jar
ln -sf /usr/share/java/jetty12-ee8-servlet.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlet.jar
ln -sf /usr/share/java/jetty12-ee8-servlets.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlets.jar
ln -sf /usr/share/java/jetty12-ee8-webapp.jar $(CURDIR)/apps/jetty/jettylib/jetty-webapp.jar
@# debian 12.0.32-2 package DOES NOT contain these ee8 jars
@#ln -sf /usr/share/java/jetty12-ee8-nested.jar $(CURDIR)/apps/jetty/jettylib/jetty-nested.jar
@#ln -sf /usr/share/java/jetty12-ee8-security.jar $(CURDIR)/apps/jetty/jettylib/jetty-security.jar
ln -sf /usr/share/java/jetty12-session.jar $(CURDIR)/apps/jetty/jettylib/jetty-session.jar
ln -sf /usr/share/java/jetty12-start.jar $(CURDIR)/apps/jetty/jettylib/jetty-start.jar
ln -sf /usr/share/java/jetty12-util.jar $(CURDIR)/apps/jetty/jettylib/jetty-util.jar
ln -sf /usr/share/java/jetty12-xml.jar $(CURDIR)/apps/jetty/jettylib/jetty-xml.jar
ln -sf /usr/share/java/jetty12-server.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jetty.jar
ln -sf /usr/share/java/jetty12-jmx.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jmx.jar
@# following two are formerly from libservlet3.1-java, now in their own packages
ln -sf /usr/share/java/servlet-api.jar $(CURDIR)/apps/jetty/jettylib/javax.servlet.jar
@# this is roughly the same as tomcat8-jsp-api.jar, we use this one
ln -sf /usr/share/java/jsp-api.jar $(CURDIR)/apps/jetty/jettylib/jsp-api.jar
@# ubuntu: plucky+
@# debian: trixie+
@# the libslf4j2-java package does NOT provide a non-versioned file except in the maven-repo dir
@/bin/echo -e "with-libslf4j2-java=true" >> $(CURDIR)/override.properties
ln -sf /usr/share/maven-repo/org/slf4j/slf4j-api/2.x/slf4j-api-2.x.jar $(CURDIR)/apps/jetty/jettylib/slf4j2-api.jar
@# debian and ubuntu: buster, disco
@/bin/echo -e "with-libtomcat9-java=true" >> $(CURDIR)/override.properties
mkdir -p $(CURDIR)/apps/jetty/jettylib
ln -sf /usr/share/java/tomcat9-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
ln -sf /usr/share/java/tomcat9-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
ln -sf /usr/share/java/tomcat9-el-api.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
ln -sf /usr/share/java/tomcat9-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
ln -sf /usr/share/java/tomcat9-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
ln -sf /usr/share/java/tomcat9-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
ln -sf /usr/share/java/tomcat9-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
ln -sf /usr/share/java/tomcat9-util-scan.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util-scan.jar
@# debian and ubuntu: stretch+, zesty+
@/bin/echo -e "with-libtaglibs-standard=true" >> $(CURDIR)/override.properties
ln -sf /usr/share/java/taglibs-standard-spec.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
ln -sf /usr/share/java/taglibs-standard-impl.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
ln -sf /usr/share/java/taglibs-standard-jstlel.jar $(CURDIR)/apps/susidns/src/lib/jstlel.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-gettext-base=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/libintl.jar $(CURDIR)/core/java/build/libintl.jar
@# debian and ubuntu: everywhere
@/bin/echo -e "with-libgetopt-java=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/gnu-getopt.jar $(CURDIR)/core/java/build/gnu-getopt.jar
@# debian: jessie+; ubuntu: trusty+
@/bin/echo -e "with-libjson-simple-java=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/core/java/build
ln -sf /usr/share/java/json-simple.jar $(CURDIR)/core/java/build/json-simple.jar
@# 1.80 or higher debian: trixie+; ubuntu: questing+
@/bin/echo -e "with-libbcprov-java=true" >> $(CURDIR)/override.properties
@mkdir -p $(CURDIR)/router/java/build
ln -sf /usr/share/java/bcprov.jar $(CURDIR)/router/java/build/bcprov.jar
@# debian: bullseye - transitioning
find . -type f -name \*.java -exec grep -q 'import @JSON_SIMPLE@' {} \; \
-exec sed -i.json-simple \
-e 's,@JSON_SIMPLE@,$(JSON_SIMPLE_PACKAGE),' \
-e 's/@JSON_EXCEPTION@/$(JSON_EXCEPTION)/' \
{} \; -print
@# debian: everywhere; ubuntu: trusty+
@/bin/echo -e "with-famfamfam-flag-png=true" >> $(CURDIR)/override.properties
TZ=UTC JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ant preppkg-unix javadoc
echo router.updateDisabled=true > $(I2P)/router.config
mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper
binary-arch: build-arch
build-arch:
# build jbigi
cd $(CURDIR)/core/c/jbigi && ./build_jbigi.sh dynamic
# build jcpuid
cd $(CURDIR)/core/c/jcpuid && ./build.sh
binary: binary-arch binary-indep
createcopyright:
@echo " *** Creating debian/copyright*** "
@rm -f $(CURDIR)/debian/copyright
@/bin/echo -e "This package was Debianized by kytv <killyourtv@i2pmail.org>" >> $(CURDIR)/debian/copyright
@/bin/echo -e "Sun, 23 Jan 2011 20:26:51 +0000" >> $(CURDIR)/debian/copyright
@/bin/echo -e "\nIt was downloaded from https://geti2p.net" >> $(CURDIR)/debian/copyright
@/bin/echo -e "\nI2P is tracked upstream using the Monotone VCS" >> $(CURDIR)/debian/copyright
@/bin/echo -e "Complete information on fetching the source with monotone can be found" >> $(CURDIR)/debian/copyright
@/bin/echo -e "at https://geti2p.net/newdevelopers#getting-the-i2p-code\n\n\n" >> $(CURDIR)/debian/copyright
@/bin/cat $(CURDIR)/LICENSE.txt >> $(CURDIR)/debian/copyright
@/bin/echo -e "\n\n The debian packaging has been released into the public domain." >> $(CURDIR)/debian/copyright
override_dh_compress:
dh_compress -X.xsl -X.xml
override_dh_install:
dh_install --list-missing
dh_apparmor --profile-name=system_i2p -pi2p
dh_apparmor --profile-name=usr.bin.i2prouter -pi2p
override_dh_installchangelogs:
dh_installchangelogs history.txt
override_dh_installdocs:
dh_installdocs -pi2p --link-doc=i2p-router
dh_installdocs --remaining-packages
override_dh_shlibdeps:
dh_shlibdeps -llibjbigi-jni debian/libjbigi-jni/usr/lib/jni/*.so
#override_dh_installinit:
# dh_installinit -r
get-orig-source:
uscan --verbose --rename --destdir $(CURDIR)/.. --watchfile debian/watch --force-download