Difference between revisions of "Dependencies and Linux Packaging"

From Freeplane - free mind mapping and knowledge management software
(Dependencies)
m (Dependencies)
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/gitweb/?p=pkg-java/freeplane.git;a=blob;f=debian/patches/10_libraries_properties.patch;h=e6eb59c7ce168b8e35f41a14c6f788b9a6f1f2d4;hb=HEAD this patch].
+
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].
 
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].

Revision as of 09:14, 30 March 2015

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.13: >= 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.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:

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 => 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)