[javapackages] [doc] split directory layout into two sections
by Michael Šimáček
commit 905cb6e1a411da94d093d322dd8cd75cfe305d9e
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 10:16:36 2013 +0100
[doc] split directory layout into two sections
Separate directories that are important for regular packagers from the
rest.
doc/directory_layout.txt | 73 ++++++++++++++++++++++++---------------------
1 files changed, 39 insertions(+), 34 deletions(-)
---
diff --git a/doc/directory_layout.txt b/doc/directory_layout.txt
index 140a83a..862ccd4 100644
--- a/doc/directory_layout.txt
+++ b/doc/directory_layout.txt
@@ -4,6 +4,45 @@ be used in RPM spec files. Symbolic name is followed by usual macro
expansion (i.e. physical directory location in the file system) and
short description.
+.Directories commonly used by regular packages
+[glossary]
+*`%{_javadir}`* -- `/usr/share/java`::
+
+ Directory that holds all JAR files that do not contain or use
+ native code and do not depend on a particular Java standard
+ version. JAR files can either be placed directly in this
+ directory or one of its subdirectories. Often packages create
+ their own subdirectories there, in this case subdirectory name
+ should match package name.
+
+*`%{_jnidir}`* -- `/usr/lib/java`::
+
+ Directory where architecture-specific JAR files are installed. In
+ particular JAR files containing or using native code (Java Native
+ Interface, NI) should be installed.
+
+*`%{_javadocdir}`* -- `/usr/share/javadoc`::
+
+ Root directory where all Java API documentation (Javadoc) is
+ installed. Each source package usually creates a single
+ subdirectory containing aggregated Javadocs for all binary
+ packages it produces.
+
+*`%{_mavenpomdir}`* -- `/usr/share/maven-poms`::
+
+ Directory where Project Object Model (POM) files used by Apache
+ Maven are installed. Each POM must have name that strictly
+ corresponds to JAR file in `%{_javadir}` or `%{_jnidir}`.
+
+*`%{_mavendepmapfragdir}`* -- `/usr/share/maven-fragments`::
+
+ Directory containing package metadata in XML format. Typically
+ each binary package installs there a single XML file containing
+ various information (metadata) about artifacts associated with
+ that package.
+
+
+.Other directories
[glossary]
*`%{_jvmdir}`* -- `/usr/lib/jvm`::
@@ -38,21 +77,6 @@ short description.
Directory containing Java configuration files. In particular it
contains main Java configuration file -- `java.conf`.
-*`%{_javadir}`* -- `/usr/share/java`::
-
- Directory that holds all JAR files that do not contain or use
- native code and do not depend on a particular Java standard
- version. JAR files can either be placed directly in this
- directory or one of its subdirectories. Often packages create
- their own subdirectories there, in this case subdirectory name
- should match package name.
-
-*`%{_jnidir}`* -- `/usr/lib/java`::
-
- Directory where architecture-specific JAR files are installed. In
- particular JAR files containing or using native code (Java Native
- Interface, NI) should be installed.
-
*`%{_javadir}-ext`* -- `/usr/share/java-ext`::
*`%{_javadir}-`+_x_._y_._z_+* -- `/usr/share/java-`+_x_._y_._z_+::
*`%{_jnidir}-ext`* -- `/usr/lib/java-ext`::
@@ -64,22 +88,3 @@ short description.
that such JARs can (and usually are) placed in `%{_javadir}` or
`%{_jnidir}`.
-*`%{_javadocdir}`* -- `/usr/share/javadoc`::
-
- Root directory where all Java API documentation (Javadoc) is
- installed. Each source package usually creates a single
- subdirectory containing aggregated Javadocs for all binary
- packages it produces.
-
-*`%{_mavenpomdir}`* -- `/usr/share/maven-poms`::
-
- Directory where Project Object Model (POM) files used by Apache
- Maven are installed. Each POM must have name that strictly
- corresponds to JAR file in `%{_javadir}` or `%{_jnidir}`.
-
-*`%{_mavendepmapfragdir}`* -- `/usr/share/maven-fragments`::
-
- Directory containing package metadata in XML format. Typically
- each binary package installs there a single XML file containing
- various information (metadata) about artifacts associated with
- that package.
10 years, 5 months
[javapackages] [doc] fix typos, missing quotes, etc.
by Michael Šimáček
commit b1a026cb086ad977a18b077558d4d60fc122b733
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 00:26:15 2013 +0100
[doc] fix typos, missing quotes, etc.
Please note that RPM macros with braces that are not enclosed in
backticks cause whole line of text to be entirely skipped.
doc/core_java_packages.txt | 2 +-
doc/directory_layout.txt | 8 ++++----
doc/fedora_java_specifics.txt | 7 +++----
doc/jar_file_id.txt | 4 ++--
doc/jar_file_id_relative.txt | 2 +-
5 files changed, 11 insertions(+), 12 deletions(-)
---
diff --git a/doc/core_java_packages.txt b/doc/core_java_packages.txt
index 7e0c266..34e0728 100644
--- a/doc/core_java_packages.txt
+++ b/doc/core_java_packages.txt
@@ -11,7 +11,7 @@ depending of what Java funtionality is required.
*`java-headless`*::
This package provides a working Java Runtime Environment (JRE)
- with some functionality didabled. Graphics and audio support may
+ with some functionality disabled. Graphics and audio support may
be unavailable in this case. `java-headless` provides
functionality that is enough for most of packages and avoids
pulling in a number of graphics and audio libraries as
diff --git a/doc/directory_layout.txt b/doc/directory_layout.txt
index ca78cb1..140a83a 100644
--- a/doc/directory_layout.txt
+++ b/doc/directory_layout.txt
@@ -44,7 +44,7 @@ short description.
native code and do not depend on a particular Java standard
version. JAR files can either be placed directly in this
directory or one of its subdirectories. Often packages create
- their own subdirectories here, in this case subdirectory name
+ their own subdirectories there, in this case subdirectory name
should match package name.
*`%{_jnidir}`* -- `/usr/lib/java`::
@@ -61,8 +61,8 @@ short description.
These directories are rarely used and are retained mostly for
compatibility with JPackage project. They are meant to contain
JAR files that depend on particular Java standard version. Note
- that such JARs can (and usually are) placed in %{_javadir} or
- %{_jnidir}.
+ that such JARs can (and usually are) placed in `%{_javadir}` or
+ `%{_jnidir}`.
*`%{_javadocdir}`* -- `/usr/share/javadoc`::
@@ -80,6 +80,6 @@ short description.
*`%{_mavendepmapfragdir}`* -- `/usr/share/maven-fragments`::
Directory containing package metadata in XML format. Typically
- each binary package installs here a single XML file containing
+ each binary package installs there a single XML file containing
various information (metadata) about artifacts associated with
that package.
diff --git a/doc/fedora_java_specifics.txt b/doc/fedora_java_specifics.txt
index 89a5e5a..916783c 100644
--- a/doc/fedora_java_specifics.txt
+++ b/doc/fedora_java_specifics.txt
@@ -15,7 +15,7 @@ It's a Java application launcher which spawns Java Virtual Machine
Here is an example how to run sample Java project from section 1.1.1:
-[source,java]
+[source,shell]
--------
$ java org/fedoraproject/helloworld/HelloWorld.class
--------
@@ -38,7 +38,6 @@ installed at the same time. It is possible in Fedora, but only one of
them can be default Java environment in system. Fedora uses
`alternatives` for switching between different installed JREs/JDKs.
-[source,shell]
--------
# alternatives --config java
@@ -82,7 +81,7 @@ $ build-classpath log4j junit org.ow2.asm:asm
/usr/share/java/log4j.jar:/usr/share/java/junit.jar:/usr/share/java/objectweb-asm4/asm.jar
--------
-`log4j` corresponds to `log4j.jar` stored in %{_javadir}. If the JAR
+`log4j` corresponds to `log4j.jar` stored in `%{_javadir}`. If the JAR
file is stored in subdirectory under `%{_javadir}`, it's neccessary to
pass `subdirectory/jarname` as an argument to `build-classpath`.
Example:
@@ -114,7 +113,7 @@ Similar command `rebuild-jar-repository` can be used to rebuild JAR
repository previously built by `build-jar-repository`. See `man
rebuild-jar-repository` for more information.
-build-classpath-directory is a small tool which can be used to build
+`build-classpath-directory` is a small tool which can be used to build
classpath string from specified directory.
[source,shell]
diff --git a/doc/jar_file_id.txt b/doc/jar_file_id.txt
index 4f1e4a6..88ebe87 100644
--- a/doc/jar_file_id.txt
+++ b/doc/jar_file_id.txt
@@ -1,9 +1,9 @@
Complex Java applications usually consist of multiple components.
Each component can have multiple implementations, called _artifacts_.
-Artifacts in java context are _usually_ JAR files, but can also be WAR
+Artifacts in Java context are _usually_ JAR files, but can also be WAR
files or any other kind of file.
-There exist multiple incompatible ways of identifying (naming) Java
+There are multiple incompatible ways of identifying (naming) Java
artifacts and each build system often encourages usage of specific
naming scheme. This means that Linux distributions also need to allow
each artifact to be located using several different identifiers,
diff --git a/doc/jar_file_id_relative.txt b/doc/jar_file_id_relative.txt
index feb9b81..1eedeae 100644
--- a/doc/jar_file_id_relative.txt
+++ b/doc/jar_file_id_relative.txt
@@ -1,4 +1,4 @@
-As described in [link], JAR artifacts are installed in one of standard
+JAR artifacts are installed in one of standard
directory trees. Usually this is either `%{_javadir}`
(`/usr/share/java`) or `%{_jnidir}` (`/usr/lib/java`).
10 years, 5 months
[javapackages] [doc] reordering sections in intro for packagers
by Michael Šimáček
commit 4c2d99bc37daf1a49e01cd55ec5e5248312fa26b
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 00:23:33 2013 +0100
[doc] reordering sections in intro for packagers
doc/introduction_for_packagers.txt | 66 ++++++++++++++++++-----------------
1 files changed, 34 insertions(+), 32 deletions(-)
---
diff --git a/doc/introduction_for_packagers.txt b/doc/introduction_for_packagers.txt
index 7fd083a..09b63ed 100644
--- a/doc/introduction_for_packagers.txt
+++ b/doc/introduction_for_packagers.txt
@@ -12,7 +12,7 @@ Specification].
==== Example Java Project
To better illustrate various parts of Java packaging we will dissect simple Java
-hello world application. Java sources are usually organized using directory
+``Hello world'' application. Java sources are usually organized using directory
hierarchies. Shared directory hierarchy creates a namespace called `package` in
Java terminology. To understand naming mechanisms of Java `packages` see
link:http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html[...
@@ -22,13 +22,13 @@ Let's create a simple hello world application that will execute following steps
when run:
1. Ask for a name
- 2. Print out "Hello World from $name" where $name is from step one
+ 2. Print out ``Hello World from'' and the name from previous step
To illustrate certain points we artificially complicate things by creating:
- - Input class used only for input of text from terminal
- - Output class used only for output on terminal
- - HelloWorldApp class used as main application
+ - `Input` class used only for input of text from terminal
+ - `Output` class used only for output on terminal
+ - `HelloWorldApp` class used as main application
.Directory listing of example project
[source,shell]
@@ -76,9 +76,36 @@ Above example makes use of three separate packages:
Environment setup consists of two main parts:
- - Telling JVM which Java class contains `main()` function
+ - Telling JVM which Java class contains `main()` method
- Adding required JAR files on JVM classpath
+.Classpath
+
+The classpath is a way of telling JVM where to look for user classes
+and 3rd party libraries. By default, only current directory is searched,
+all other locations need to be specified explicitly by setting up
+CLASSPATH environment variable, or via `-cp` (`-classpath`) option of a
+Java Virtual Machine.
+
+.Setting the classpath
+[source,shell]
+------
+java -cp /usr/share/java/log4j.jar:/usr/share/java/junit.jar mypackage/MyClass.class
+CLASSPATH=/usr/share/java/log4j.jar:/usr/share/java/junit.jar java mypackage/MyClass.class
+------
+
+Please note that two JAR files are separated by colon in a classpath
+definition.
+
+[TIP]
+======
+See
+http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html[official
+documentation] for more information about classpath.
+======
+
+.Wrapper scripts
+
Classic compiled applications use dynamic linker to find dependencies (linked
libraries), Python interpreter has predefined directories where it searches for
imported modules. JVM itself has no embedded knowledge of installation paths and
@@ -87,6 +114,7 @@ all Java applications have to use wrapper shell scripts to setup the environment
before invoking the JVM and running the application itself. Note that this is
not necessary for libraries.
+.Compiling our project
The sample project can be compiled to a bytecode by Java compiler. Java
compiler can be typically invoked from command line by command `javac`.
@@ -113,32 +141,6 @@ See also <<maven,Maven>> and <<ant,Ant>> sections.
======
-[[classpath]]
-==== Classpath
-
-The classpath is a way of telling JVM where to look for user classes
-and 3rd party libraries. By default, only current directory is searched,
-all other locations need to be specified explicitly by setting up
-CLASSPATH environment variable, or via `-cp` (`-classpath`) option of a
-Java Virtual Machine.
-
-.Setting the classpath
-[source,shell]
-------
-java -cp /usr/share/java/log4j.jar:/usr/share/java/junit.jar mypackage/MyClass.class
-CLASSPATH=/usr/share/java/log4j.jar:/usr/share/java/junit.jar java mypackage/MyClass.class
-------
-
-Please note that two JAR files are separated by colon in a classpath
-definition.
-
-[TIP]
-======
-See
-http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html[official
-documentation] for more information about classpath.
-======
-
==== Build System Identification
Build system used by upstream can be usually identified by looking at
their configuration files, which reside in project directory structure,
10 years, 5 months
[javapackages] [doc] note about Java packages(namespaces)
by Michael Šimáček
commit 49599d8d19a4425ddf91d4d9b0b3fed68accfd60
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 00:22:26 2013 +0100
[doc] note about Java packages(namespaces)
doc/introduction_for_packagers.txt | 13 ++++++++-----
1 files changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/doc/introduction_for_packagers.txt b/doc/introduction_for_packagers.txt
index 1b45e9a..7fd083a 100644
--- a/doc/introduction_for_packagers.txt
+++ b/doc/introduction_for_packagers.txt
@@ -57,7 +57,7 @@ include::java_project/src/org/fedoraproject/helloworld/HelloWorld.java[]
-.Java Namespaces
+.Java packages
[source,shell]
------
org/fedoraproject/helloworld/input/Input.java
@@ -65,11 +65,14 @@ org/fedoraproject/helloworld/output/Output.java
org/fedoraproject/helloworld/HelloWorld.java
------
-Above example makes use of three separate namespaces:
+Although the directory structure of our package is hierarchical, there
+is no real parent-child relationship between packages. Each package is
+therefore seen as independent.
+Above example makes use of three separate packages:
- - org.fedoraproject.helloworld.input
- - org.fedoraproject.helloworld.output
- - org.fedoraproject.helloworld
+ - `org.fedoraproject.helloworld.input`
+ - `org.fedoraproject.helloworld.output`
+ - `org.fedoraproject.helloworld`
Environment setup consists of two main parts:
10 years, 5 months
[javapackages] [doc] build system identification
by Michael Šimáček
commit 505e9fe13868db97c00e73e3a180329a6740b2f7
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Mon Nov 25 00:00:48 2013 +0100
[doc] build system identification
doc/introduction_for_packagers.txt | 114 +++++++++++++++++++++++++++++++++++-
1 files changed, 112 insertions(+), 2 deletions(-)
---
diff --git a/doc/introduction_for_packagers.txt b/doc/introduction_for_packagers.txt
index c191e66..1b45e9a 100644
--- a/doc/introduction_for_packagers.txt
+++ b/doc/introduction_for_packagers.txt
@@ -137,8 +137,118 @@ documentation] for more information about classpath.
======
==== Build System Identification
-How to determine preferred upstream build system
-TODO - write content
+Build system used by upstream can be usually identified by looking at
+their configuration files, which reside in project directory structure,
+usually in its root or in specialized directories with names such as
+`build` or `make`.
+
+
+.Maven
+Build managed by Apache Maven is configured by an XML file that is by
+default named `pom.xml`. In its simpler form it usually looks like this:
+
+[source, xml]
+-------------
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+ http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>com.example.myproject</groupId>
+ <artifactId>myproject</artifactId>
+ <packaging>jar</packaging>
+ <version>1.0</version>
+ <name>myproject</name>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
+---------
+
+
+It describes project's build process in a declarative way, without
+explicitly specifying exact steps needed to compile sources and assemble
+pieces together. It also specifies project's dependencies which are
+usually the main point of interest for packagers. Other important
+feature of Maven that packagers should know about are plugins. Plugins
+extend Maven with some particular functionality, but unfortunately some
+of them may get in the way of packaging and need to be altered or
+removed. There are RPM macros provided to facilitate modifying Maven
+dependencies and plugins.
+
+
+.Ant
+Apache Ant is also configured by an XML file. It is by convention named
+`build.xml` and in its simple form it looks like this:
+
+[source, xml]
+-------------
+<project name="MyProject" default="dist" basedir=".">
+ <property name="src" location="src"/>
+ <property name="build" location="build"/>
+ <property name="dist" location="dist"/>
+
+ <target name="init" description="Create build directory">
+ <mkdir dir="${build}"/>
+ </target>
+
+ <target name="compile" depends="init"
+ description="Compile the source">
+ <javac srcdir="${src}" destdir="${build}"/>
+ </target>
+
+ <target name="dist" depends="compile"
+ description="Generate jar">
+ <mkdir dir="${dist}/lib"/>
+
+ <jar jarfile="${dist}/myproject.jar" basedir="${build}"/>
+ </target>
+
+ <target name="clean" description="Clean build files">
+ <delete dir="${build}"/>
+ <delete dir="${dist}"/>
+ </target>
+</project>
+----------
+
+
+Ant build file consists mostly of targets, which are collections of
+steps needed to accomplish intended task. They usually depend on each
+other and are generally similar to Makefile targets. Available targets
+can be listed by invoking `ant -p` in project directory containing
+`build.xml` file. If the file is named differently than `build.xml` you
+have to tell Ant which file should be used by using `-f` option with the
+name of the actual build file.
+
+
+.Gradle
+Gradle is configured by a script written in Groovy (dynamic language
+built on top of JVM and extending Java's syntax). It's configuration
+file is `build.gradle`.
+
+[source, java]
+----------------
+apply plugin: 'java'
+
+task customJar(type: Jar) {
+ archiveName = 'myproject.jar'
+ destinationDir = file("${buildDir}/jars")
+ from sourceSets.main.output
+}
+----------------
+
+
+.Make
+While unlikely, it's still possible that you encounter a project whose
+build is managed by plain old Makefiles. They contain a list of targets
+which consist of commands (marked with tab at the begining of line) and
+are invoked by `make` _target_ or simply `make` to run the default
+target.
==== Quiz for Packagers
10 years, 5 months
[javapackages] [doc] more comments in minimal specfile
by Michael Šimáček
commit 7ca2ef2372827a3744bb279a809e3b0995b1f047
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Thu Nov 21 11:48:31 2013 +0100
[doc] more comments in minimal specfile
doc/rpm_project/minimal.spec | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/doc/rpm_project/minimal.spec b/doc/rpm_project/minimal.spec
index fa03e42..a5e26c5 100644
--- a/doc/rpm_project/minimal.spec
+++ b/doc/rpm_project/minimal.spec
@@ -9,8 +9,12 @@ Summary: This is a minimal spec file example
License: GPLv2+
URL: http://www.fedoraproject.org
+# Packages that contain only architecture independent files, such as shell
+# scripts or Java programs, should be marked as 'noarch'
+BuildArch: noarch
+
%description
-Very short description since we have nothing to say
+Very short description since we have nothing to say.
%prep
# section for preparation of sources, applying patches
@@ -27,12 +31,14 @@ cat > %{buildroot}%{_bindir}/minimalistic << EOF
echo This is a minimalistic script
EOF
-
+# List of files that this package installs on the system
%files
%attr(0775,root,root) %{_bindir}/minimalistic
-# RPM changelog has prescribed format
+# RPM changelog has prescribed format. To prevent mistakes in format, it is
+# advised to use tool such as rpmdev-bumpspec from package rpmdevtools to
+# append new changelog entries instead of editing it by hand
%changelog
* Tue Mar 19 2013 Stanislav Ochotnicky <sochotnicky(a)redhat.com> - 1.0-1
- This is first version
10 years, 5 months
[javapackages] [doc] fix broken link
by Michael Šimáček
commit 54a8f10a08483754a1010cab4cc60b8093fef455
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Thu Nov 21 11:16:57 2013 +0100
[doc] fix broken link
doc/introduction_for_developers.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
---
diff --git a/doc/introduction_for_developers.txt b/doc/introduction_for_developers.txt
index add6d65..c5b1f47 100644
--- a/doc/introduction_for_developers.txt
+++ b/doc/introduction_for_developers.txt
@@ -68,7 +68,7 @@ dependencies. There are two types of dependencies in RPM:
- runtime dependencies (Requires tag in `spec` file)
More information on this topic can be found in
-<<handling_dependencies,Handling dependencies>> section.
+<<dependency_handling ,Handling dependencies>> section.
Except building binary RPMs (`-bb`), `rpmbuild` can also be told to:
10 years, 5 months
[javapackages] [doc] minor fixes in introduction.txt
by Michael Šimáček
commit 7283552d5fe2391eb6089ee63a23c777ff72689f
Author: Michael Simacek <msimacek(a)redhat.com>
Date: Thu Nov 21 11:14:53 2013 +0100
[doc] minor fixes in introduction.txt
doc/introduction.txt | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/doc/introduction.txt b/doc/introduction.txt
index 9e8d793..57428ee 100644
--- a/doc/introduction.txt
+++ b/doc/introduction.txt
@@ -10,11 +10,11 @@ components they bundle, a complete Java system suffers from endless
duplication of the same modules, and integrating multiple parts can be
a nightmare since they are bound to depend on the same elements - only
with different and subtly incompatible versions (different
-requirements, different bugs). Any security or compatibility upgrade,
+requirements, different bugs). Any security or compatibility upgrade
must be performed for each of those duplicated elements.
This problem is compounded by the current practice of folding
-extensions proper in the JVM itself after a while; an element that
+extensions in the JVM itself after a while; an element that
could safely be embedded in a application will suddenly conflict with
a JVM part and cause subtle failures.
@@ -28,7 +28,7 @@ packaging of Java applications a custom infrastructure and strict
packaging rules had to be evolved.
-Basic introduction to packaging, reasons problems rationale
+=== Basic introduction to packaging, reasons, problems, rationale
This section includes basic introduction to Java packaging world to people
coming from different backgrounds. Goal is to understand language of all groups
@@ -39,7 +39,7 @@ xref:XFor_Packagers[introduction to Java world] is probably a better starting
point.
It should be noted that especially in this section we might sacrifice
-correctness for simplicity
+correctness for simplicity.
[[XFor_Packagers]]
=== For Packagers
10 years, 5 months
[pegdown/f20] (3 commits) ...update to 1.4.1
by gil
Summary of changes:
29f6dcf... update to 1.4.1 (*)
30dd53f... update to 1.4.1 (*)
50805e9... update to 1.4.1 (*)
(*) This commit already existed in another branch; no separate mail sent
10 years, 5 months
[parboiled/f20] update to 1.1.6
by gil
Summary of changes:
6fe087b... update to 1.1.6 (*)
(*) This commit already existed in another branch; no separate mail sent
10 years, 5 months