Subject: Re: [bug#27434] [PATCH] gnu: Add mkvtoolnix.

From: Leo Famulari <[email-masked]>
Date: Sun, 25 Jun 2017 09:44:01 -0400

On Tue, Jun 20, 2017 at 11:54:33PM +0200, Gregor Giesen wrote:
> * gnu/packages/serialization.scm (nlohmann-json-cpp): New variable.
> * gnu/packages/video.scm (mkvtoolnix libmatroska): New variables.
> * gnu/packages/xml.scm (libebml): New variable.

Thank you!

I spent some time splitting this patch into "one patch per package",
which is how we like to do it.

nlohmnann-json-cpp, libebml, and libmatroska are done, in my opinion,
and I'll push them shortly.

> +(define-public mkvtoolnix
> +  (package
> +    (name "mkvtoolnix")
> +    (version "12.0.0")

When I built and ran mkvtoolnix-gui, it told me there was a new version
available (13.0.0). Can we use that version instead?

> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (string-append "https://mkvtoolnix.download/sources/"
> +                           name "-" version ".tar.xz"))

I noticed it includes some files in 'lib/', and at least some of them
appear to be bundled copies of 3rd-party libraries:

$ ls -l mkvtoolnix-12.0.0/lib
total 4
drwxr-xr-x 1 leo leo 116 May 20 13:25 avilib-0.6.10
drwxr-xr-x 1 leo leo  66 May 20 13:25 boost
drwxr-xr-x 1 leo leo 194 May 20 13:25 libebml
drwxr-xr-x 1 leo leo 236 May 20 13:25 libmatroska
drwxr-xr-x 1 leo leo 120 May 20 13:25 librmff
drwxr-xr-x 1 leo leo  70 May 20 13:25 nlohmann-json
drwxr-xr-x 1 leo leo  26 May 20 13:25 pugixml
-rw-r--r-- 1 leo leo 244 May 20 13:25 Rakefile
drwxr-xr-x 1 leo leo  18 May 20 13:25 utf8-cpp

After removing libebml, libmatroska, and nlohmann-json in an "origin
snippet" [0], mkvtoolnix still builds. We don't like to use or
distribute bundled libraries if we can help it. I didn't have time yet
to investigate the other directories in that list.

> +    (native-inputs
> +     `(("docbook-xsl" ,docbook-xsl)
> +       ("gettext" ,gettext-minimal)
> +       ("googletest" ,googletest)
> +       ("libxslt" ,libxslt)
> +       ("nlohmann-json-cpp" ,nlohmann-json-cpp)
> +       ("perl" ,perl)
> +       ("pkg-config" ,pkg-config)
> +       ("po4a" ,po4a)
> +       ("ruby" ,ruby)
> +       ("zsh", zsh)))

Does it need to use Zsh while building? Native-inputs are basically
build-time dependencies, and it's definitely unusual to require Zsh, so
that's why I'm asking. I removed Zsh from this list and the resulting
mkvtoolnix-gui seems to start without any problems.