Dependencies and Linux Packaging

From Freeplane - free mind mapping and knowledge management software

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 only
  • latest 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!
  • make sure that srcpure does not contain *.class, *.exe, *.dll, ...
  • build LaTeXLexer.java before build target runs
  • remove /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:

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:

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)