source: debian-alt/doc/dependencies.txt @ a3a17a4f

Last change on this file since a3a17a4f was a3a17a4f, checked in by zzz <zzz@…>, 3 years ago

Debian: Replace glassfish-javaee with libtaglibs-standard-* (ticket #2093)
Only for stretch and later, zesty and later
Copy more files for previous stretch setup to xenial

  • Property mode set to 100644
File size: 7.9 KB
Line 
1This document is for Debian package maintainers.
2It contains an overview of current package dependencies,
3the plan for improvement, and other notes.
4These notes will also be helpful for non-Debian package maintainers.
5
6We are not packaging experts, but we are doing the best we can to
7improve our official packages and support other packagers.
8Our packages are available at https://deb.i2p2.de/ and
9instructions are at https://geti2p.net/debian
10
11This document is current as of release 0.9.33, scheduled 2018-01
12
13
14Build-only Dependencies
15-----------------------
16
17* ant
18  This is the standard java build system.
19
20
21Current Runtime Dependencies
22----------------------------
23
24* Java JDK/JRE
25  We require openjdk-7-java to build, and any Java 7, 8, or 9 runtime to run.
26  Java 9 may still have some issues; see https://trac.i2p2.de/ticket/1870 for status
27
28* libecj-java
29  This is for compilation on-the-fly of webapps, but we don't really support that,
30  not sure why it's in there, to be researched, candidate for removal.
31
32* geoip-database
33  In non-Debian builds we bundle our own geoip data;
34  for Debian builds we use the system data.
35
36* gettext-base
37  For /usr/share/java/libintl.jar.
38  In non-Debian builds we bundle the source code; it's removed in the Debian source package.
39
40* libgetopt-java
41  For /usr/share/java/gnu-getopt.jar.
42  In non-Debian builds we bundle the source code; it's removed in the Debian source package.
43
44* libjetty9-java
45  For /usr/share/java/jetty9-*.jar.
46  In non-Debian builds we bundle the jars; it's removed in the Debian source package.
47
48* libtomcat8-java
49  For /usr/share/java/tomcat8-*.jar.
50  In non-Debian builds we bundle the jars as packaged in the Jetty 9.2 binary release,
51  which are different than the way they are packaged for Debian.
52  They are removed in the Debian source package.
53
54* libtaglibs-standard-*-java (stretch and later, zesty and later only)
55  Provides JSTL 1.2, solves the glassfish-javaee problem described below.
56
57* glassfish-javaee (wheezy, jessie, xenial and earlier only)
58  We need jstl.jar and standard.jar version 1.2.
59  This is an ancient and terrible package, but it's the only place we've found version 1.2 jars.
60  standard.jar classes are inside /usr/share/java/glassfish-appserv-jstl.jar
61  jstl.jar classes are inside /usr/share/java/glassfish-javaee.jar but we can't use it
62  because there are too many conflicting, old, unrelated classes in there, so we currently
63  bundle jstl.jar even in Debian builds.
64  We've found some other packages that contain version 1.1 jars:
65  libjakarta-taglibs-standard-java (containing standard.jar only)
66  and libjstl1.1-java (containing jstl.jar only).
67  Jetty 9 does contain JSTL 1.2 ??? but not in packages???
68  It's not clear why there isn't a libjstl1.2-java package.
69  It also isn't clear why we upgraded to 1.2 years ago, but the rest of the world didn't.
70  And it isn't clear why 1.1 won't work for us.
71
72* service-wrapper
73  In non-Debian builds we bundle the jars; it's removed in the Debian source package.
74  For some Debian and Ubuntu releases, these seem to be much older than what we're bundling,
75  which is 3.5.30, but there's no particular version that we need.
76
77* libgmp-dev
78  In non-Debian builds we bundle compiled C code; in the Debian packages we have a small
79  C shim that links to the libgmp .so file.
80  We depend on libgmp-dev for both the build and the runtime, but perhaps only the
81  libgmp10 package is required for runtime? To be researched.
82
83
84Bundled code, NOT current dependencies
85--------------------------------------
86
87These are packages that we at least partially bundle jars or java source for,
88even in Debian builds. For most of these we could remove the code and add
89a dependency if the package were widely available.
90We have not created private packages for any of these, we just bundle
91the binaries or sources.
92
93* geoip-java
94  Java interface to access geoip data.
95  We bundle source from https://github.com/maxmind/geoip-api-java
96  No package or not widely available.
97  There is a Maven geoip-api package at http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.maxmind.geoip%22
98
99* hashcash
100  One Java source file.
101  From http://www.nettgryppa.com/code/
102  No package or not widely available.
103  We don't really use this code anyway, but it would break compilation if we took it out.
104
105* identicon
106  Small number of Java source files, modified.
107  From https://github.com/PauloMigAlmeida/identicon
108  No package or not widely available.
109
110* jrobin
111  This is the Java graphing package.
112  We bundle a large portion of the 1.6.0 source from https://github.com/OpenNMS/jrobin
113  No package or not widely available.
114  There is an old 1.5.9 Maven jrobin package at http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.jrobin%22
115  Jrobin is in Gentoo.
116
117* libhttpclient-java
118  We only use a few classes from this large package.
119  We require 4.4 or higher which is not available in older distributions.
120  This is 2 MB of dependencies, instead we bundle 20 KB of copied source.
121  If we do add this dependency, we use only the code in
122  /usr/share/java/httpclient.jar and /usr/share/java/httpcore.jar.
123
124* UPnP (cybergarage)
125  Large subsystem, large number of Java source files, modified with several fixes.
126  From https://github.com/cybergarage/cybergarage-upnp
127  No package or not widely available.
128  There is a competing UPnP library (libupnp-java) that is packaged, but it would be
129  a huge effort on our part to port our code to use that library instead.
130  Maybe we will do this some day, but it won't be soon.
131
132* zxing
133  This is the QR/barcode library from Google.
134  We bundle a portion of the source from https://github.com/zxing/zxing
135  No package or not widely available.
136  There are Maven zxing packages at http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.google.zxing%22
137
138
139Other Issues and TODO
140---------------------
141
142* Building
143  As of 0.9.28, our Debian repo at https://deb.i2p2.de just contains
144  binaries copied from Launchpad. It's much easier than building them
145  ourselves, but it leaves non-x86 architectures out of date.
146  The directory above (debian-alt) contains various changes for different distros.
147
148* Configuration
149  So that we may easily support dependency changes in various distributions,
150  and test alternatives, we output configuration settings to the override.properties
151  file in the rules script. There are extensive comments in the
152  rules, i2p-router.install, and i2p-router.links files.
153  There's probably a better or more-standard way to do this, but this makes it
154  easier for us, and for non-Debian packagers, if there are any.
155
156* i2p-doc
157  This is just javadocs.
158  Added priority of 'extra' for 0.9.29, before that, everybody was installing it?
159
160* Init/systemd
161  Kytv did the systemd and init script parts, no idea if it's compliant,
162  needs review.
163
164* JCA issues.
165  This has never been a problem for Debian/Ubuntu, but many Gentoo, Redhat, and Fedora
166  distributions are missing or have broken ECDSA support in the Java Cryptography subsystem.
167  The console sidebar will show a warning and the router will log warnings if
168  ECDSA is not working. The router will still work, but the user will not be able
169  to access newer hidden services on the network. For best results, packagers
170  should ensure that the JCA supports ECDSA.
171  For further info, see https://trac.i2p2.de/wiki/Crypto/ECDSA
172
173* Raspberry Pi
174  The performance of OpenJDK 8 on the raspberry pi is terrible, it's almost
175  unusable. The Oracle JDK is several times faster. But there's no package for that.
176  We tell people to use Oracle for ARM on our download page, but there's no
177  solution for package users.
178
179* Splitting packages further
180  Might be nice to further split up the i2p-router package into just the
181  core headless router and the routerconsole/UI part.
182  Or even the susimail/susidns/i2psnark/i2ptunnel webapps also.
183
184* Plugins
185  We don't have a strategy for building, installing, or finding packages for
186  3rd-party plugins using our plugin system. If we do that, then we can
187  have packages for popular plugins such as i2p-bote.
Note: See TracBrowser for help on using the repository browser.