Difference between revisions of "Dependencies and Linux Packaging"

From Freeplane - free mind mapping and knowledge management software
(Arch Linux)
m (Reverted edits by Dimitry (talk) to last revision by Artafinde)
(Tag: Rollback)
 
(23 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) / 1.0.2 (1.3.x)
+
| '''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 (1.2.x and 1.3.x)
+
| [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 (1.2.x and 1.3.x)
+
| >=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.6 (1.3.x)
+
| '''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
+
| >=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 93: Line 93:
 
|-
 
|-
 
| [http://xerces.apache.org/#xerces2-j Xerces2]
 
| [http://xerces.apache.org/#xerces2-j Xerces2]
| a library for parsing, validating and manipulating XML documents, used by SVG plugin
+
| 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
 
| >=2.5.0
 
| libxerces2-java
 
| libxerces2-java
Line 103: Line 103:
 
|-
 
|-
 
| [http://infonode.net/index.html?idw InfoNode Docking Windows]
 
| [http://infonode.net/index.html?idw InfoNode Docking Windows]
| Used for docking windows ('''>=1.3.x only!!''')
+
| Used for docking windows (>=1.3.x)
 
| >=1.6.1
 
| >=1.6.1
 
| [http://anonscm.debian.org/gitweb/?p=pkg-java/libidw-java.git libidw-java]
 
| [http://anonscm.debian.org/gitweb/?p=pkg-java/libidw-java.git libidw-java]
 
|-
 
|-
 
| [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
 
| [http://wiki.openstreetmap.org/wiki/JMapViewer JMapViewer]
| Used by openmaps plugin ('''>=1.3.x only!!''')
+
| Used by openmaps plugin (>=1.3.x)
| >=1.02 (patch for 1.03 is included!)
+
| >=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]
 
|-
 
|-
 
| [http://commons.apache.org/proper/commons-codec/ Apache commons codec]
 
| [http://commons.apache.org/proper/commons-codec/ Apache commons codec]
| Used to encode/decode view state ('''>=1.3.x only!!''')
+
| Used to encode/decode view state (>=1.3.x)
 
| >=1.7
 
| >=1.7
 
| libcommons-codec-java (currently at 1.8)
 
| libcommons-codec-java (currently at 1.8)
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].
  
 
== 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: freeplane_plugin_script/(src|resources)-jsyntaxpane/** (currently the LaTeX support)
+
** 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 161: Line 163:
  
 
== Changes for 1.4.x ==
 
== Changes for 1.4.x ==
 +
* gradle build system
 
* three new dependencies for ribbons
 
* three new dependencies for ribbons
* probably gradle build system
+
* knopflerfish upgraded
  
 
== Icons ==
 
== Icons ==
Line 173: Line 176:
 
See this [http://pkgs.org/search/?keyword=freeplane search link] for ''older'' packages.
 
See this [http://pkgs.org/search/?keyword=freeplane search link] for ''older'' packages.
  
=== Debian ===
+
=== Debian / Ubuntu ===
Current release for Debian is 1.3.12, maintainer is Felix Natter <fnatter@gmx.net>.
+
Current release for Debian/Ubuntu is 1.3.15, maintainer is Felix Natter <fnatter@gmx.net>.
It's now in testing/"jessie". This is the release that will be in Debian jessie stable.
+
1.3.12 is in stable/"jessie".
 +
See [http://packages.ubuntu.com/search?keywords=freeplane&searchon=names&suite=all&section=all versions in Ubuntu].
  
 
The packaging source code is maintained in Git repos:
 
The packaging source code is maintained in Git repos:
Line 189: Line 193:
 
* https://github.com/htgoebel/freeplane-mageia
 
* https://github.com/htgoebel/freeplane-mageia
  
=== Arch Linux ===
+
=== Archlinux ===
Current Release for Arch Linux is 1.3.12, maintainer is Leonidas Spyropoulos <artafinde at gmail dot com>
+
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)
The PKGBUILD is maintained at github:
 
* https://github.com/inglor/pkgbuild/tree/master/freeplane
 
  
 
=== Fedora ===
 
=== Fedora ===
Line 203: Line 205:
 
=== OpenSuSE ===
 
=== OpenSuSE ===
 
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 (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: &lt;package&gt;-&lt;version&gt;.jar
 +
* make sure to add &lt;package&gt;-&lt;version&gt;-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

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)