Dependencies and Linux Packaging
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)