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 | 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) | >=0.9.7 (1.2.x) / >=1.0.2 (1.3.x) | 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 (1.2.x and 1.3.x) | libjsyntaxpane-java |
SimplyHTML | Rich text editor used for editing node content / notes / ... | >=0.16.07 (1.2.x and 1.3.x) | simplyhtml |
Java Help | deprecated, but still used by simplyhtml | >=2.0.0? | javahelp2 |
Apache commons lang | Helper utilities for java.lang | >=2.0 (1.2.x), >=2.6 (1.3.x) | 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) --> 1.4.x requires libjgoodies-commons-java 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 | libgnu-regexp-java |
Knopflerfish OSGi | OSGi implementation used by freeplane | >=2.3.3; >=1.3.13: 4.1.10 | 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 J7! | 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.
JSyntaxPane
- unfortunately, JSyntaxpane is no longer maintained upstream
- therefore, patches are in one of two places:
- in Freeplane: freeplane_plugin_script/(src|resources)-jsyntaxpane/** (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.12, maintainer is Felix Natter <fnatter@gmx.net>. It's now in testing/"jessie". This is the release that will be in Debian jessie stable. 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:
Arch Linux
Current Release for Arch Linux is 1.3.12, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com>
The package is available in AUR:
The PKGBUILD is maintained at github:
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 so 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)