Difference between revisions of "Dependencies and Linux Packaging"
(→Guidelines for adding/upgrading dependencies) |
(Tag: Rollback) |
||
(14 intermediate revisions by 3 users not shown) | |||
Line 14: | Line 14: | ||
| [http://groovy.codehaus.org/ Groovy] | | [http://groovy.codehaus.org/ Groovy] | ||
| Dynamic language for the JVM, used for scripting/add-ons | | Dynamic language for the JVM, used for scripting/add-ons | ||
− | | >=1.8.6 | + | | >=1.8.6 (2.x is recommended) |
| groovy (=> use groovy-all.jar to get the deps below as well!) | | groovy (=> use groovy-all.jar to get the deps below as well!) | ||
|- | |- | ||
Line 34: | Line 34: | ||
| [http://forge.scilab.org/index.php/p/jlatexmath/ JLaTeXMath] | | [http://forge.scilab.org/index.php/p/jlatexmath/ JLaTeXMath] | ||
| Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x) | | Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x) | ||
− | | >=0.9.7 | + | | '''1.2.x''': >=0.9.7; '''1.3.x''': >=1.0.2 |
| [http://anonscm.debian.org/viewvc/pkg-java/trunk/libjlatexmath-java/ libjlatexmath-java] | | [http://anonscm.debian.org/viewvc/pkg-java/trunk/libjlatexmath-java/ libjlatexmath-java] | ||
|- | |- | ||
| [http://code.google.com/p/jsyntaxpane/ JSyntaxPane] | | [http://code.google.com/p/jsyntaxpane/ JSyntaxPane] | ||
| Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x). See [[#JSyntaxPane|note below]] | | Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x). See [[#JSyntaxPane|note below]] | ||
− | | [http://jsyntaxpane.googlecode.com/svn/branches/r095/ current subversion] @revision r156 including Debian patches from libjsyntaxpane-java-0.9.6~r156-5 ( | + | | [http://jsyntaxpane.googlecode.com/svn/branches/r095/ current subversion] @revision r156 including Debian patches from libjsyntaxpane-java-0.9.6~r156-5 (all versions) |
| [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git libjsyntaxpane-java] | | [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git libjsyntaxpane-java] | ||
|- | |- | ||
| [http://sourceforge.net/projects/simplyhtml/ SimplyHTML] | | [http://sourceforge.net/projects/simplyhtml/ SimplyHTML] | ||
| Rich text editor used for editing node content / notes / ... | | Rich text editor used for editing node content / notes / ... | ||
− | | >=0.16.07 ( | + | | >=0.16.07 (latest version is recommended) |
| [http://anonscm.debian.org/gitweb/?p=pkg-java/simplyhtml.git simplyhtml] | | [http://anonscm.debian.org/gitweb/?p=pkg-java/simplyhtml.git simplyhtml] | ||
|- | |- | ||
Line 54: | Line 54: | ||
| [http://commons.apache.org/proper/commons-lang/ Apache commons lang] | | [http://commons.apache.org/proper/commons-lang/ Apache commons lang] | ||
| Helper utilities for java.lang | | Helper utilities for java.lang | ||
− | | >=2.0 | + | | '''1.2.x''': >=2.0; '''1.3.x''': >=2.6 |
| libcommons-lang-java | | libcommons-lang-java | ||
|- | |- | ||
Line 64: | Line 64: | ||
| [http://www.jgoodies.com/freeware/libraries/forms/ JGoodies Forms] | | [http://www.jgoodies.com/freeware/libraries/forms/ JGoodies Forms] | ||
| Helper utilities for forms layout | | Helper utilities for forms layout | ||
− | | >= 1.2.1 | + | | >= 1.2.1; '''1.4.x''': 1.6.0 (jgoodies-forms 1.6.0 requires jgoodies-commons 1.4.0) |
| libjgoodies-forms-java | | libjgoodies-forms-java | ||
|- | |- | ||
| [http://savannah.gnu.org/projects/gnu-regexp GNU Regexp] | | [http://savannah.gnu.org/projects/gnu-regexp GNU Regexp] | ||
| GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!) | | GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!) | ||
− | | >=1.1.4 | + | | >=1.1.4 (deprecated but still used by simplyhtml) |
| libgnu-regexp-java | | libgnu-regexp-java | ||
|- | |- | ||
| [http://www.knopflerfish.org/ Knopflerfish OSGi] | | [http://www.knopflerfish.org/ Knopflerfish OSGi] | ||
| OSGi implementation used by freeplane | | OSGi implementation used by freeplane | ||
− | | >=2.3.3; >=1. | + | | >=2.3.3; '''Freeplane 1.3.15''': >= 5.1.0 (knopflerfish 5.1.0 corresponds to knopflerfish framework 7.1.2!) |
| libknopflerfish-osgi-framework-java | | libknopflerfish-osgi-framework-java | ||
|- | |- | ||
Line 109: | Line 109: | ||
| [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer] | | [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer] | ||
| Used by openmaps plugin (>=1.3.x) | | Used by openmaps plugin (>=1.3.x) | ||
− | | >=1.02 (patch for 1.03 is included!) '''warning''': jmapviewer>=1.04 requires | + | | >=1.02 (patch for 1.03 is included!) '''warning''': jmapviewer>=1.04 requires Java7! |
| [http://anonscm.debian.org/gitweb/?p=pkg-grass/jmapviewer.git;a=summary jmapviewer] | | [http://anonscm.debian.org/gitweb/?p=pkg-grass/jmapviewer.git;a=summary jmapviewer] | ||
|- | |- | ||
Line 119: | Line 119: | ||
If you want to know the mapping between freeplane jars and jars in Debian packages, | If you want to know the mapping between freeplane jars and jars in Debian packages, | ||
− | check out [http://anonscm.debian.org/ | + | check out [http://anonscm.debian.org/cgit/pkg-java/freeplane.git/tree/debian/patches/10_libraries_properties.patch this patch]. |
+ | |||
+ | The copyright of each (Linux-relevant) file in the srcpure tarball can be found [http://anonscm.debian.org/cgit/pkg-java/freeplane.git/tree/debian/copyright here]. | ||
== JSyntaxPane == | == JSyntaxPane == | ||
Line 125: | Line 127: | ||
* unfortunately, JSyntaxpane is no longer maintained [https://code.google.com/p/jsyntaxpane/ upstream] | * unfortunately, JSyntaxpane is no longer maintained [https://code.google.com/p/jsyntaxpane/ upstream] | ||
* therefore, patches are in one of two places: | * therefore, patches are in one of two places: | ||
− | ** in Freeplane: | + | ** in Freeplane: freeplane_plugin_jsp/ (currently the LaTeX support) |
** as quilt patches in the [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git;a=shortlog Debian package] | ** as quilt patches in the [http://anonscm.debian.org/gitweb/?p=pkg-java/libjsyntaxpane-java.git;a=shortlog Debian package] | ||
* In order to fix bugs in JSyntaxPane, add [http://anonscm.debian.org/cgit/pkg-java/libjsyntaxpane-java.git/tree/debian/patches patches], create+upload the package and commit the jsyntaxpane.jar from the package to freeplane.git | * In order to fix bugs in JSyntaxPane, add [http://anonscm.debian.org/cgit/pkg-java/libjsyntaxpane-java.git/tree/debian/patches patches], create+upload the package and commit the jsyntaxpane.jar from the package to freeplane.git | ||
Line 175: | Line 177: | ||
=== Debian / Ubuntu === | === Debian / Ubuntu === | ||
− | Current release for Debian/Ubuntu is 1.3. | + | Current release for Debian/Ubuntu is 1.3.15, maintainer is Felix Natter <fnatter@gmx.net>. |
− | + | 1.3.12 is in stable/"jessie". | |
See [http://packages.ubuntu.com/search?keywords=freeplane&searchon=names&suite=all§ion=all versions in Ubuntu]. | See [http://packages.ubuntu.com/search?keywords=freeplane&searchon=names&suite=all§ion=all versions in Ubuntu]. | ||
Line 191: | Line 193: | ||
* https://github.com/htgoebel/freeplane-mageia | * https://github.com/htgoebel/freeplane-mageia | ||
− | === | + | === Archlinux === |
− | Current Release for | + | Current Release for Archlinux is 1.5.13, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com> |
The package is available in AUR: | The package is available in AUR: | ||
* https://aur.archlinux.org/packages/freeplane | * https://aur.archlinux.org/packages/freeplane | ||
− | + | * https://aur.archlinux.org/packages/freeplane-git (following 1.6.x branch) | |
− | |||
− | * https:// | ||
=== Fedora === | === Fedora === | ||
Line 206: | Line 206: | ||
see [https://build.opensuse.org/package/view_file?file=freeplane.spec&package=freeplane&project=Office&rev=cf14d37870fb1f12049ad727dc46e083 this link] | see [https://build.opensuse.org/package/view_file?file=freeplane.spec&package=freeplane&project=Office&rev=cf14d37870fb1f12049ad727dc46e083 this link] | ||
− | == Guidelines for adding/upgrading dependencies == | + | == Guidelines for adding/upgrading dependencies (Gradle, >= 1.4.x) == |
− | + | With the introduction of the gradle build system, most dependencies are downloaded from maven.org, you need to specify only name, group and version (search maven.org to get these information): | |
− | + | 'commons-io:commons-io:2.4' | |
− | ** | + | |
− | + | However, not all dependencies are available via maven, so some dependencies need to be added to git | |
− | + | (like SimplyHTML, IDW, JSyntaxPane, JMapViewer) => Therefore, we differentiate between maven and local dependencies: | |
− | + | ||
− | + | === Maven Dependencies === | |
− | + | ||
− | + | Example: | |
− | + | 'commons-io:commons-io:2.4' | |
− | + | ||
+ | * sources will ''automatically'' be downloaded and attached by gradle | ||
+ | * of course maven dependencies should be preferred over dependencies added to git | ||
+ | |||
+ | === Local (git) dependencies === | ||
+ | |||
+ | Example: | ||
+ | // from flatDir "localGitDepsRepository": | ||
+ | compile ':SimplyHTML-0.16.09' | ||
+ | (you might need to add directories to "localGitDepsRepository" in toplevel build.gradle) | ||
+ | |||
+ | * prefer a versioned release over a (git-) snapshot | ||
+ | * commit a versioned jar: <package>-<version>.jar | ||
+ | * make sure to add <package>-<version>-sources.jar (Eclipse source attachments are automatically picked up by the gradle build system if they match this naming pattern) | ||
+ | * use the flat file repository for source attachments to work (see existing libraries like SimplyHTML) | ||
+ | |||
+ | === Common things to consider for all dependencies === | ||
+ | |||
+ | Unfortunately, '''some linux distros like Debian/Ubuntu do not allow to simply download dependencies from maven at build time''', | ||
+ | so any dependency (''maven or local git'') need to be packaged separately => every new dependency means more work for package developers. | ||
+ | Therefore, please discuss your intent to add a dependency on [http://freeplane-developer.996965.n3.nabble.com/ freeplane-developer]. | ||
+ | |||
+ | * make sure that the dependency does not require a newer version of java than freeplane currently does (i.e. JMapViewer 1.05 would require Java7) | ||
+ | * prefer a library that is actively maintained | ||
+ | * document the exact upstream version and where it can be downloaded (usually in a commit message) |
Latest revision as of 11:17, 18 November 2018
Contents
Packaging Freeplane for Linux distros
This page contains information about Freeplane requirements/dependencies and GNU/Linux packaging information for release 1.2.x and 1.3.x.
See also How to build Freeplane.
Dependencies
Package | Description | Version required | Debian Package |
Groovy | Dynamic language for the JVM, used for scripting/add-ons | >=1.8.6 (2.x is recommended) | groovy (=> use groovy-all.jar to get the deps below as well!) |
ANTLR | Parser Generator used by groovy | >= 2.7.7 | antlr (but groovy depends on it) |
Apache commons CLI | Command line parser, used by groovy. | >= 1.2 | libcommon-cli-java (but groovy depends on it) |
ASM | Java bytecode manipulation and analysis framework. | >= 3.3.2 | libasm3-java (but groovy depends on it) |
JLaTeXMath | Used for LaTeX Rendering in node extension (1.2.x) / node core (1.3.x) | 1.2.x: >=0.9.7; 1.3.x: >=1.0.2 | libjlatexmath-java |
JSyntaxPane | Provides JEditorPane with syntax highlighting, used for groovy scripts and LaTeX (>= 1.3.x). See note below | current subversion @revision r156 including Debian patches from libjsyntaxpane-java-0.9.6~r156-5 (all versions) | libjsyntaxpane-java |
SimplyHTML | Rich text editor used for editing node content / notes / ... | >=0.16.07 (latest version is recommended) | simplyhtml |
Java Help | deprecated, but still used by simplyhtml | >=2.0.0? | javahelp2 |
Apache commons lang | Helper utilities for java.lang | 1.2.x: >=2.0; 1.3.x: >=2.6 | libcommons-lang-java |
Apache commons IO | Helper utilities for java.io | >=2.4 | libcommons-io-java |
JGoodies Forms | Helper utilities for forms layout | >= 1.2.1; 1.4.x: 1.6.0 (jgoodies-forms 1.6.0 requires jgoodies-commons 1.4.0) | libjgoodies-forms-java |
GNU Regexp | GNU Regexp implementation (not sure if it's used by freeplane directly, but still used by simpyhtml!) | >=1.1.4 (deprecated but still used by simplyhtml) | libgnu-regexp-java |
Knopflerfish OSGi | OSGi implementation used by freeplane | >=2.3.3; Freeplane 1.3.15: >= 5.1.0 (knopflerfish 5.1.0 corresponds to knopflerfish framework 7.1.2!) | libknopflerfish-osgi-framework-java |
Apache Batik | used by SVG plugin | >=1.7 | libbatik-java |
Rhino | Pure Java open source javascript engine, used by SVG plugin | >=1.7R | librhino-java |
Apache FOP | Apache Formatting Objects Processor, used by SVG plugin | >=1.0 | libfop-java |
Xerces2 | a library for parsing, validating and manipulating XML documents, used by SVG plugin (not needed when starting from dist, but needed when starting from eclipse??) | >=2.5.0 | libxerces2-java |
Apache XML Commons | common code and guidelines for xml projects, used by SVG plugin | >=1.4? | libxml-commons-external-java |
InfoNode Docking Windows | Used for docking windows (>=1.3.x) | >=1.6.1 | libidw-java |
JMapViewer | Used by openmaps plugin (>=1.3.x) | >=1.02 (patch for 1.03 is included!) warning: jmapviewer>=1.04 requires Java7! | jmapviewer |
Apache commons codec | Used to encode/decode view state (>=1.3.x) | >=1.7 | libcommons-codec-java (currently at 1.8) |
If you want to know the mapping between freeplane jars and jars in Debian packages, check out this patch.
The copyright of each (Linux-relevant) file in the srcpure tarball can be found here.
JSyntaxPane
- unfortunately, JSyntaxpane is no longer maintained upstream
- therefore, patches are in one of two places:
- in Freeplane: freeplane_plugin_jsp/ (currently the LaTeX support)
- as quilt patches in the Debian package
- In order to fix bugs in JSyntaxPane, add patches, create+upload the package and commit the jsyntaxpane.jar from the package to freeplane.git
Build-time dependencies
- all of the dependencies above are build-deps too
- junit, ant, jdk
- 1.3.x: jflex for compiling latex.flex (LaTeX syntax highlighting for JSyntaxPane)
- LaTeXLexer.java must be built from latex.flex at package build time
Miscellaneous
- of course mac stuff can (and must) not be built
- freeplane_plugin_uispec4j/ can be ignored
- freeplane_plugin_help/ is no longer needed, can be ignored
- jortho.jar is built from JOrtho_0.4_freeplane/
- launch4j is Windows-only
Changes for 1.3.x
- Debian: require openjdk-7-jre as the only JRE (Depends:) because JMapViewer requires it anyway and jdk6 is not in jessie?
launch4j => windows onlylatest JSyntaxPane (..r156) required (LaTeX syntax highlighting)is ...r156 correctly pulled as a dependency (as opposed to r148!)????
- new plugin "Openmaps integration", new dependency JMapViewer
- new feature "Docking Windows", with new dependency IDW
- new command line option -U (include in man page!)
- also mention latex in core, openmaps integration, workspace plugins in 1.3.x manpage
- workspace plugin has been disabled for 1.3.x!!
- bump up version in man-page!
- also mention latex in core, openmaps integration, workspace plugins in 1.3.x manpage
make sure that srcpure does not contain *.class, *.exe, *.dll, ...build LaTeXLexer.java before build target runsremove /etc/kde3/magic/freeplane.magic- install a 48x48 icon (http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html)?
how to fix 80_no_update_check.patch??fix http://lintian.debian.org/tags/menu-icon-uses-relative-path.html (freeplane package)(fixed in 1.2.23-2)
Changes for 1.4.x
- gradle build system
- three new dependencies for ribbons
- knopflerfish upgraded
Icons
Freeplane 1.2.x and 1.3.x come with a single icon for files + application (freeplane_framework/build/freeplane.{svg,png}), while Freeplane 1.4.x _might_ have two icons (like on Windows):
- for files / mime types: freeplane_framework/build/freeplane.{svg,png}
- for the application: freeplane_framework/build/freeplane_app.{svg,png}
Distro-specific information
See this search link for older packages.
Debian / Ubuntu
Current release for Debian/Ubuntu is 1.3.15, maintainer is Felix Natter <fnatter@gmx.net>. 1.3.12 is in stable/"jessie". See versions in Ubuntu.
The packaging source code is maintained in Git repos:
- http://anonscm.debian.org/gitweb/?p=pkg-java/simplyhtml.git
- http://anonscm.debian.org/gitweb/?p=pkg-java/freeplane.git
See the table on the top of the page for Debian git/svn packaging repos of some dependencies.
Mageia Linux
Current release is 1.3.11, maintainer is Hartmut Goebel <h.goebel@crazy-compilers.com>.
The packaging source code is available at:
Archlinux
Current Release for Archlinux is 1.5.13, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com>
The package is available in AUR:
- https://aur.archlinux.org/packages/freeplane
- https://aur.archlinux.org/packages/freeplane-git (following 1.6.x branch)
Fedora
TODO: where is it?
OpenSuSE
see this link
Guidelines for adding/upgrading dependencies (Gradle, >= 1.4.x)
With the introduction of the gradle build system, most dependencies are downloaded from maven.org, you need to specify only name, group and version (search maven.org to get these information):
'commons-io:commons-io:2.4'
However, not all dependencies are available via maven, so some dependencies need to be added to git (like SimplyHTML, IDW, JSyntaxPane, JMapViewer) => Therefore, we differentiate between maven and local dependencies:
Maven Dependencies
Example:
'commons-io:commons-io:2.4'
- sources will automatically be downloaded and attached by gradle
- of course maven dependencies should be preferred over dependencies added to git
Local (git) dependencies
Example:
// from flatDir "localGitDepsRepository": compile ':SimplyHTML-0.16.09'
(you might need to add directories to "localGitDepsRepository" in toplevel build.gradle)
- prefer a versioned release over a (git-) snapshot
- commit a versioned jar: <package>-<version>.jar
- make sure to add <package>-<version>-sources.jar (Eclipse source attachments are automatically picked up by the gradle build system if they match this naming pattern)
- use the flat file repository for source attachments to work (see existing libraries like SimplyHTML)
Common things to consider for all dependencies
Unfortunately, some linux distros like Debian/Ubuntu do not allow to simply download dependencies from maven at build time, so any dependency (maven or local git) need to be packaged separately => every new dependency means more work for package developers. Therefore, please discuss your intent to add a dependency on freeplane-developer.
- make sure that the dependency does not require a newer version of java than freeplane currently does (i.e. JMapViewer 1.05 would require Java7)
- prefer a library that is actively maintained
- document the exact upstream version and where it can be downloaded (usually in a commit message)