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

From: Marius Bakke <[email-masked]>
Date: Mon, 20 Mar 2017 17:39:05 +0100

Leo Famulari <[email-masked]> writes:

> 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.

Yep, thanks for pointing it out.

>
>>  (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.

Unfortunately, this is the only good opportunity to do this. They are
"downloaded", unpacked and bootstrapped from that cmake file, which is
invoked in the 'build' phase, and my attempts to wrangle this in a
separate phase were unsuccessful (hence the top-level bootstrapped
variables). I will make it clearer why we have to do this.

Will test the latest upstream git source and commit these later today
unless there are more comments :)