Subject: Re: bug#26157: [PATCH 2/2] gnu: kodi: Update to 18.0_alpha-0-4912f8f.

From: Leo Famulari <[email-masked]>
Date: Sat, 18 Mar 2017 13:18:48 -0400

On Sat, Mar 18, 2017 at 04:56:22PM +0100, Marius Bakke wrote:
> * gnu/packages/kodi.scm (libdvdnav/kodi, libdvdread/kodi, libdvdcss/kodi): New
> variables.
> (kodi): Update to 18.0_alpha-0-4912f8f.
> [source]: Download from git. Unbundle more stuff.
> [build-system]: Change to CMAKE-BUILD-SYSTEM.
> [arguments]: Add #:configure-flag to disable nonfree components. Rework phases
> to patch bundled software and bootstrap more libraries.
> [native-inputs]: Remove CMAKE. Add LIBDVDCSS/KODI, LIBDVDNAV/KODI and
> LIBDVDREAD/KODI.
> [inputs]: Remove BOOST, BZIP2, ENCA, GPERF, JASPER, LIBMODPLUG, LIBSAMPLERATE,
> MESA-UTILS and SDL2. Add FMT, GIFLIB, LCMS and LIBDRM.
> [license]: Update for remaining software bundles.

Wow!

> +;; Kodi requires special forks of these libraries. In addition,
> +;; it insists on downloading and building these as part of the
> +;; standard build process. To make things easier, we bootstrap
> +;; them here, so we don't have to worry about it later.

Can you add a sentence stating that these forks are contained in the
Kodi / XBMC repository? For a minute, I wondered how you figured out
which commit to use.

>  (define-public kodi

[...]

> -         ;; JsonSchemaBuilder is a small tool needed by the build system that
> -         ;; comes bundled with the source.  The build system tries to build it
> -         ;; during the bootstrapping phase, which causes serious issues
> +         ;; The build system tries to bootstrap these components
> +         ;; during the build phase, which causes serious issues

Nit-pick: these lines could be longer :)

> +         (add-after 'bootstrap-bundled-software 'patch-stuff
>             (lambda _
> +             ;; Prevent the build scripts from calling autoreconf in
> +             ;; the build stage.  Otherwise, it would undo the careful
> +             ;; bootstrapping that we've worked so hard for.
> +             (substitute* "cmake/modules/FindLibDvd.cmake"
> +               ;; Let's also use this opportunity to make the freshly
> +               ;; unpackaged source directory writable.
> +               (("autoreconf -vif") "chmod -R u+w ."))

Clever, but perhaps too clever :) I think we should use the Scheme
(chmod) procedure to do this separately, if there is a point where the
files are unpacked between build phases.