aboutsummaryrefslogtreecommitdiff
path: root/build-aux/xgettext.scm
blob: 7142336a9df6ea6866dd0c6c5b0d9edfa921aa9e (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#! /bin/sh
# -*-scheme-*-
build_aux=$(dirname $0)
srcdir=$build_aux/..
export LC_ALL=en_US.UTF-8
export TZ=UTC0
exec guile --no-auto-compile -L $srcdir -C $srcdir -e main -s "$0" "$@"
!#

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; This program is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; This program is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;;; Commentary:
;;;
;;; This script provides an xgettext wrapper to (re)set POT-Creation-Date from
;;; a Git timestamp.  Test doing something like:
;;;
;;; build-aux/xgettext.scm --files-from=po/guix/POTFILES.in --default-domain=test
;;;
;;;; Code:

(use-modules (srfi srfi-1)
             (srfi srfi-26)
             (ice-9 curried-definitions)
             (ice-9 match)
             (ice-9 popen)
             (ice-9 rdelim)
             (guix build utils))

(define ((option? name) option)
  (string-prefix? name option))

(define (get-option args name)
  (let ((option (find (option? name) args)))
    (and option
         (substring option (string-length name)))))

(define (pipe-command command)
  (let* ((port (apply open-pipe* OPEN_READ command))
         (output (read-string port)))
    (close-port port)
    output))


;;;
;;; Entry point.
;;;
(define (main args)
  (fluid-set! %default-port-encoding #f)
  (let* ((files-from (get-option args "--files-from="))
         (default-domain (get-option args "--default-domain="))
         (directory (or (get-option args "--directory=") "."))
         (xgettext (or (get-option args "--xgettext=") "xgettext"))
         (xgettext-args (filter (negate (option? "--xgettext=")) args))
         (command (match xgettext-args
                    ((xgettext.scm args ...)
                     `(,xgettext ,@args))))
         (result (apply system* command))
         (status (/ result 256)))
    (if (or (not (zero? status))
            (not files-from))
        (exit status)
        (let* ((text (with-input-from-file files-from read-string))
               (lines (string-split text #\newline))
               (files (filter (negate (cute string-prefix? "#" <>)) lines))
               (files (map (cute string-append directory "/" <>) files))
               (git-command `("git" "log" "--pretty=format:%ci" "-n1" ,@files))
               (timestamp (pipe-command git-command))
               (source-date-epoch (or (getenv "SOURCE_DATE_EPOCH") "1"))
               (timestamp (if (string-null? timestamp) source-date-epoch
                              timestamp))
               (po-file (string-append default-domain ".po")))
          (substitute* po-file
            (("(\"POT-Creation-Date: )[^\\]*" all header)
             (string-append header timestamp)))))))
TH, $OBJCPLUS_INCLUDE_PATH): New variables. (%gcc-search-paths): Include $OBJC_INCLUDE_PATH, $OBJCPLUS_INCLUDE_PATH. Change-Id: Ib4cd176eb88c733a82f2d31e8cc45b9c61720f8f Efraim Flashner 2024-08-31gnu: gcc@11: Update to 11.4.0....* gnu/packages/gcc.scm (gcc-11): Update to 11.4.0. Remove ‘gcc-10-tree-sra-union-handling.patch’. Change-Id: Iff8c9151326c87cb13db9c5b1a00c44b8eef95e3 Co-authored-by: Janneke Nieuwenhuizen <janneke@gnu.org> Signed-off-by: Ludovic Courtès <ludo@gnu.org> Greg Hogan 2024-08-31gnu: custom-gcc: Import the correct set of modules....* gnu/packages/gcc.scm (custom-gcc) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I133daad4e05d5daa98fadd5acf2d0f4606b6e056 Maxim Cournoyer 2024-08-31gnu: make-libstdc++: Import the correct set of modules....* gnu/packages/gcc.scm (make-libstdc++) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I3fe29766f767765e966c189395f618b7779f1e0d Maxim Cournoyer 2024-08-31gnu: gcc-4.8: Import the correct set of modules....* gnu/packages/gcc.scm (gcc-4.8) [arguments] <modules>: Replace %default-gnu-imported-modules with %default-gnu-modules. Change-Id: I8482661bd49a94adefc772fda0449023bdd5927e Maxim Cournoyer 2024-08-31build-systems: gnu: Export %default-gnu-imported-modules and %default-gnu-mod......Until now users would have to cargo cult or inspect the private %default-modules variable of (guix build-systems gnu) to discover which modules to include when extending the used modules via the #:modules argument. The renaming was automated via the command: $ git grep -l %gnu-build-system-modules | xargs sed 's/%gnu-build-system-modules/%default-gnu-imported-modules/' -i * guix/build-system/gnu.scm (%gnu-build-system-modules): Rename to... (%default-gnu-imported-modules): ... this. (%default-modules): Rename to... (%default-gnu-modules): ... this. Export. (dist-package, gnu-build, gnu-cross-build): Adjust accordingly. Change-Id: Idef307fff13cb76f3182d782b26e1cd3a5c757ee Maxim Cournoyer 2024-08-31gnu: make-libstdc++: Adjust order of phases....* gnu/packages/gcc.scm (make-libstdc++)[arguments]: Move custom 'fix-rs6000-libdir phase to after the 'unpack phase. Efraim Flashner 2024-08-31gnu: libstdc++-doc: Build libstdc++ info documentation....* gnu/packages/patches/gcc-13.2.0-libstdc++-docbook-xsl-uri.patch: New file. * gnu/packages/patches/gcc-13.2.0-libstdc++-info-install-fix.patch: Ditto. * gnu/packages/patches/gcc-5.5.0-libstdc++-xmlcatalog.patch: Ditto. * gnu/local.mk: Register them. * gnu/packages/gcc.scm (gcc-5)[source]: Use gcc-5.5.0-libstdc++-xmlcatalog.patch, gcc-13.2.0-libstdc++-docbook-xsl-uri.patch and gcc-13.2.0-libstdc++-info-install-fix.patch. (gcc-9)[source]: Use gcc-13.2.0-libstdc++-docbook-xsl-uri.patch and gcc-13.2.0-libstdc++-info-install-fix.patch. (make-libstdc++-doc)[arguments]<#:phases>: Remove 'set-xsl-directory. Adjust 'build and 'install for info documentation and to respect make-flags. [native-inputs]: Add docbook2x. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: Ie3b9de0328a10efadb28d211c3fe03f9b7aaf87f Bruno Victal 2024-08-31gnu: libstdc++-doc: Rewrite with G-Expressions....* gnu/packages/gcc.scm (make-libstdc++-doc): Rewrite arguments with G-Expressions. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Change-Id: Idc8da964b7d777e0459c731625296ccd96546fa7 Bruno Victal 2024-08-31gnu: %objc++-search-paths: Express using $LIBRARY_PATH....* gnu/packages/gcc.scm (%objc++-search-paths): Express using $LIBRARY_PATH. Maxim Cournoyer 2024-08-31gnu: gccgo-4.9: Express search paths via (guix search-paths) variables....* gnu/packages/gcc.scm (gccgo-4.9) [native-search-paths]: Express search paths via (guix search-paths) variables. Maxim Cournoyer 2024-08-31gnu: gcc-2.95: Express search paths via (guix search-paths) variables....* gnu/packages/gcc.scm (gcc-2.95) [native-search-paths]: Express search paths via (guix search-paths) variables. Maxim Cournoyer 2024-08-31gnu: gcc-4.7: Use %gcc-search-paths for native-search-paths....* gnu/packages/gcc.scm (gcc-4.7) [native-search-paths]: Use %gcc-search-paths. Change-Id: Ia9acc98c2f7c7bc101ac43a4288ee4368c2b3dfa Maxim Cournoyer 2024-08-31gnu: libgccjit: Track the default GCC version....* gnu/packages/gcc.scm (libgccjit): Rewrite to use the default gcc version. Efraim Flashner 2024-08-28gnu: Add gfortran 13....* gnu/packages/gcc.scm (gfortran-13): New variable. Change-Id: Idf9a35548a9a80251cc70154c7d70f5b3a316db9 Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Romain GARBAGE 2024-08-19gnu: gcc@12: Update to 12.4.0....* gnu/packages/gcc.scm (gcc-12): Update to 12.4.0. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: Ibdd003d5b61eb4b9e6a1b56428d01d51cca97b44 fanquake 2024-08-05gnu: gcc-14: Update to 14.2.0....* gnu/packages/gcc.scm (gcc-14): Update to 14.2.0. Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Change-Id: I250bf04c04233aa449f70701a238bfb4d4d07933 Michael Ford 2024-07-02gnu: Add libgccjit-14....* gnu/packages/gcc.scm (libgccjit-14): New variable. Change-Id: I9c5be52e4e07ca48ae7191b6ff0c163541544700 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-07-02gnu: Add gccgo-14....* gnu/packages/gcc.scm (gccgo-14): New variable. Change-Id: I065373047eb186ac410813b7eea0af3b44d8aaa7 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-07-02gnu: Add gcc-14....* gnu/packages/gcc.scm (gcc-14): New variable. Change-Id: I7eca4e35e010a69c13489c10c72c29d6e628bb72 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-06-11gnu: gcc: Add tuning targets for powerpc64le-linux....* gnu/packages/gcc.scm (%gcc-10-ppc64le-micro-architectures): New variable. (gcc-10, gcc-11, gcc-12, gcc-13)[properties]: Add entry in compiler-cpu-architectures for powerpc64le. Change-Id: I3f5d0f5949eea7ac1b1914ac1db2867f5d14aee6 Efraim Flashner 2024-05-30gnu: gcc-13: Remove unneeded patch for i586-gnu....* gnu/packages/gcc.scm (gcc-13)[arguments]: When building for i586-gnu delete the inherited phase 'patch-hurd-libpthread as it exists upstream. Change-Id: I0837dcff325b15b6975b34dbd7268faaa223ecdd Efraim Flashner 2024-05-30gnu: gccgo-12: Fix building on riscv64-linux....* gnu/packages/gcc.scm (make-gccgo)[arguments]: When building gccgo-12 for riscv64-linux don't add a phase to adjust the order of libgo dependencies. Change-Id: I600c744ce33ad802a5c466c19df41dcbb29a2be0 Efraim Flashner 2024-05-22gnu: gcc-13: Update to 13.3.0....* gnu/packages/gcc.scm (gcc-13): Update to 13.3.0. Signed-off-by: Zheng Junjie <zhengjunjie@iscas.ac.cn> Change-Id: Ia2dc3185acbb6671b2719e2d88d55b7d2b8fb92e Michael Ford 2024-04-04gnu: libstdc++: Support cross-compilation to powerpc64le-linux-gnu....Previously the phase would fail when cross-compiling because the patch could not be found in ‘inputs’. * gnu/packages/gcc.scm (make-libstdc++): Add alternative ‘patch-powerpc’ phase for when (%current-target-system) is true. Change-Id: Ia503d761d34596d95cc9d33edd911cebcc2e0d9e Ludovic Courtès 2024-03-07cpu: Enable tuning for i686-linux....* gnu/packages/gcc.scm (gcc-7, gcc-10, gcc-11, gcc-12, gcc-13) [properties]: In compiler-cpu-architectures use the x86_64-micro-architectures list for i686. * guix/cpu.scm (cpu->gcc-architecture): Expand the x86_64 case to also support i686. Change-Id: I0b820ceb715960db5e702814fa278dc8c619a836 Efraim Flashner 2024-03-07cpu: Rename x86-64-v1 to x86-64....This is the actual micro-architecture designation used by compilers. * gnu/packages/gcc.scm (%gcc-11-x86_64-micro-architectures): Rename x86-64-v1 to x86-64. * gnu/packages/golang.scm (%go-1.18-x86_64-micro-architectures): Same. * guix/cpu.scm (cpu->micro-architecture-level): Same. (gcc-architecture->micro-architecture-level): Same. Change-Id: I19ed556a7e8deb4a77f4c63fca3b794f25092788 Efraim Flashner 2024-03-05gnu: gcc@11: fix 'compiler-cpu-architectures' property....* gnu/packages/gcc.scm (%gcc-11-x86_64-micro-architectures): fix typo `alterlake' to `alderlake'. Change-Id: Ia1a7af3f25040101f6995b6a4df5f298bfbbeb44 Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Zheng Junjie 2024-02-13gnu: gcc-4.8: Fix building....* gnu/packages/gcc.scm (gcc-4.7)[arguments]: Adjust configure-flags to build gcc-4.8 using the C++03 standard. (gcc-4.8)[arguments]: Add a phase to remove the current gcc's C++ headers from the CPLUS_INCLUDE_PATH. (gcc-4.9)[arguments]: Inherit from gcc-4.8. (gcc-6)[arguments]: Inherit from gcc-4.7. Change-Id: Ibec0683e8385ae011e6a809c664cb679f1a35b80 Efraim Flashner 2024-01-26gnu: Add gdc alias....* gnu/packages/gcc.scm (gdc): New variable. Change-Id: I38447e46ffba44d3a9d3757d34fe9ff081803457 Reviewed-by: Ludovic Courtès <ludo@gnu.org> Maxim Cournoyer 2024-01-18gnu: Add gfortran-9....* gnu/packages/gcc.scm (gfortran-9): New variable. Change-Id: Icac0eeef445dcac72b8709ed81367a718116fd87 Ricardo Wurmus 2024-01-04gnu: Add support for x86_64-linux-gnux32....* gnu/packages/bootstrap.scm (glibc-dynamic-linker): Add entry for x86_64-linux-gnux32. * gnu/packages/gcc.scm (gcc-configure-flags-for-triplet): Add configure-flag for x86_64-linux-gnux32. * guix/platforms/x86.scm (x86_64-linux-gnux32): New variable. * guix/utils.scm (gnu-triplet->nix-system): Force x86_64-linux-gnux32 to output a different nix-system than x86_64-linux-gnu. Change-Id: I519fea2f8357e4b9895ede05fe8a5e373e9b034a Signed-off-by: Efraim Flashner <efraim@flashner.co.il> Efraim Flashner 2024-01-01gnu: gccgo-12: Fix building with 1 core....* gnu/packages/gcc.scm (make-gccgo)[arguments]: When building gccgo-12 or higher add a phase to build libbacktrace before libgo. Change-Id: I9bb225b58ffa439f9461e4126f51ab453683efbe Efraim Flashner