guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: gnu: vlc: Make 'plugins.dat' generation reproducible.


From: Ludovic Courtès
Subject: 01/01: gnu: vlc: Make 'plugins.dat' generation reproducible.
Date: Mon, 18 Apr 2016 13:41:36 +0000

civodul pushed a commit to branch master
in repository guix.

commit cd76fbde6f70a6c0087f9330c266d51e334a0679
Author: Ludovic Courtès <address@hidden>
Date:   Mon Apr 18 15:39:43 2016 +0200

    gnu: vlc: Make 'plugins.dat' generation reproducible.
    
    Fixes <http://bugs.gnu.org/23307>.
    
    * gnu/packages/video.scm (vlc)[arguments]: Add #:phases.
---
 gnu/packages/video.scm |   25 ++++++++++++++++++++++++-
 1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 0e80dd4..a227c8b 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -619,7 +619,30 @@ audio/video codec library.")
        `("--disable-a52" ; FIXME: reenable once available
          ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
                          (assoc-ref %build-inputs "ffmpeg")
-                         "/lib")))) ; needed for the tests
+                         "/lib"))                 ;needed for the tests
+
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'install 'regenerate-plugin-cache
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; The 'install-exec-hook' rule in the top-level Makefile.am
+             ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
+             ;; 'vlc-cache-gen'.  This file includes the mtime of the plugins
+             ;; it references.  Thus, we first reset the timestamps of all
+             ;; these files, and then regenerate the cache such that the
+             ;; mtimes it includes are always zero instead of being dependent
+             ;; on the build time.
+             (let* ((out       (assoc-ref outputs "out"))
+                    (pkglibdir (string-append out "/lib/vlc"))
+                    (plugindir (string-append pkglibdir "/plugins"))
+                    (cachegen  (string-append pkglibdir "/vlc-cache-gen")))
+               ;; TODO: Factorize 'reset-timestamps'.
+               (for-each (lambda (file)
+                           (let ((s (lstat file)))
+                             (unless (eq? (stat:type s) 'symlink)
+                               (utime file 0 0 0 0))))
+                         (find-files plugindir))
+               (zero? (system* cachegen plugindir))))))))
     (home-page "https://www.videolan.org/";)
     (synopsis "Audio and video framework")
     (description "VLC is a cross-platform multimedia player and framework



reply via email to

[Prev in Thread] Current Thread [Next in Thread]