For more information about these configuration options, read
<https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt> or the
document 'Documentation/admin-guide/pm/cpufreq.rst' in the linux-libre
source distribution.
* gnu/packages/aux-files/linux-libre/4.14-arm.conf,
gnu/packages/aux-files/linux-libre/4.14-i686.conf,
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.19-arm.conf,
gnu/packages/aux-files/linux-libre/4.19-arm64.conf,
gnu/packages/aux-files/linux-libre/4.19-i686.conf,
gnu/packages/aux-files/linux-libre/4.19-x86_64.conf,
gnu/packages/aux-files/linux-libre/4.9-i686.conf,
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.10-i686.conf,
gnu/packages/aux-files/linux-libre/5.10-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.12-i686.conf,
gnu/packages/aux-files/linux-libre/5.12-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.13-i686.conf,
gnu/packages/aux-files/linux-libre/5.13-x86_64.conf,
gnu/packages/aux-files/linux-libre/5.4-arm.conf,
gnu/packages/aux-files/linux-libre/5.4-arm64.conf,
gnu/packages/aux-files/linux-libre/5.4-i686.conf,
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf: Unset
'CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE' and set
'CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y'.
* gnu/packages/linux.scm (fuse)[inputs]: Add bash-minimal.
[arguments]: Refer to it rather than to the native build bash.
Do not return #t from phases.
For cross-compilation, meson needs to be passed a
‘cross file’ with information on the architecture,
CPU type, endianness and operating system, and the
name of the cross-compiler binaries.
The new module (guix build meson-configuration) has
some utilities for writing these cross files, used
by 'make-cross-file' in a G-exp. The values for
the cross file are generated by 'make-machine-alist'
and 'make-binaries-alist'.
'make-machine-alist' and 'make-binaries-alist' live
on the host side, such that new architectures and operating
systems can be added without causing rebuilds for old
architectures.
All operating systems and targets supported by Guix are
theoretically supported, but only aarch64-linux-gnu,
powerpc64le-linux-gnu and arm-linux-gnueabihf have been
tested. i686-linux-gnu has also been tested with a previous
version of this patch series but required some changes
to 'cross-base.scm'.
This has been tested with:
$ ./pre-inst-env guix build glib --target=TARGET
* guix/build/meson-configuration.scm
(write-section-header): New procedure.
(write-assignment): New procedure.
(write-assignments): New procedure.
* guix/build-system/meson.scm
(target-hurd?): New predicate.
(make-machine-alist): New procedure.
(make-binaries-alist): New procedure.
(make-cross-file): New procedure.
(meson-cross-build): New procedure.
(lower)[build-inputs]: Add standard cross packages when cross-compiling.
Do not include regular 'inputs' when cross-compiling.
(lower)[host-inputs]: Include 'inputs' when cross-compiling.
(lower)[target-inputs]: Add cross packages when cross-compiling.
(lower)[build]: Call 'meson-cross-build' instead of 'cross-build'
when cross-compiling.
(lower)[target]: Set it.
(lower)[private-keywords]: Do not remove #:target when cross-compiling.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
The current configure script is too old to find the cross-compiler
and support variables passed as arguments. Also, config.guess and
config.sub are too old to recognise powerpc64 and aarch64. Solve
this by regenerating the 'configure' script and replacing
'config.guess' and 'config.sub'.
* gnu/packages/elf.scm
(libelf)[arguments]<#:phases>{configure}: Remove phase.
(libelf)[arguments]<#:phases>{delete-configure}: Regenerate
the configure script and replace 'config.guess' and 'config.sub'.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
Otherwise, "tzdata" won't be found when cross-compiling
and string-append will complain about types. Alternatively,
"tzdata" could be moved from 'native-inputs' to 'inputs'.
* gnu/packages/glib.scm (glib)[arguments]<#:phases>{pre-check}:
Look up "tzdata" in 'native-inputs', not 'inputs'.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
During the build, a native python should be used as these
scripts will be invoked during the build, but when installed,
they should be a python for the system we're compiling for.
* gnu/packages/glib.scm
(glib)[arguments]<#:phases>{patch-python-references}: Look up
"python" in 'native-inputs', not 'inputs'.
(glib)[inputs]{python,python-wrapper,bash-minimal}: New inputs.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
By computing this value outside the build code, new targets
can be added without causing rebuilds for other targets.
* gnu/packages/tls.scm
(target->openssl-target): New procedure.
(openssl)[arguments]<#:phases>{set-cross-compile}: Use it.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
There does not seem to be any reason to only move man3 pages.
So, move all man pages to a separate output for documentation.
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>{move-extra-documentation}: Move
all man pages, not only man3.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>{move-extra-documentation}: Use
'rename-file' instead of 'copy-recursively' and
'delete-file-recursively'.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
This doesn't fix anything broken, just for simplifying
the code a little while we're rebuilding the world anyway.
IMHO this makes the code a little more readable.
* gnu/packages/tls.scm (openssl)[arguments]<#:phases>: Don't refer
to the association list 'outputs', use #$output, #$output:doc
and #$output:static instead.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
This allows using this-package-native-input later.
* gnu/packages/tls.scm
(openssl)[arguments]<#:phases>: Make this a G-expression.
(openssl-1.0)[arguments]<#:phases>: Likewise.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
"sitecustomize.py" is a native input, so look it up
in 'native-inputs', not 'inputs'.
* gnu/packages/python.scm (customize-site): Look up "sizecustomize.py"
in 'native-inputs', not 'inputs'.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
TODO: inform upstream about the cross-compilation error.
* gnu/packages/gnupg.scm
(libgpg-error)[arguments]{fix-gen-lock-obj.sh}: Prevent generated
header files from being sprinkled with ‘\c’.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* gnu/packages/gpg.scm
(libgpgerror)[arguments]<#:phases>{cross-symlinks}: Only
link to src/syscfg/lock-obj-pub.linux-gnu.h if the package
is being compiled for a Linux target. Do not link either
if the architecture is unknown, as the headers vary with
the architecture.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
The time zone database is architecture-independent,
so trying to cross-compile it is pointless!
* gnu/packages/base.scm
(tzdata)[arguments]<#:target>: Set to #f.
(tzdata)[allowed-references]: Only include the "out" output itself,
to make sure no (architecture-dependent) binaries are installed.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
net-base is pure data, so cross-compiling is pointless.
* gnu/packages/admin.scm
(net-base)[arguments]<#:target>: Set to #f.
(net-base)[arguments]<#:allowed-references>: Disallow all
references.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
These macros are intended to be used in build phases.
More precisely, (assoc-ref %build-inputs "input") can be
replaced by #$(this-package-input "input") or #+(this-package-native-input
"native-input") as appropriate.
* guix/packages.scm
(package-input, package-native-input): New (unexported) procedures.
(this-package-input, this-package-native-input): New macros.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
It behaves similarily to the other target-...? procedures.
The usage of hurd-triplet? / target-hurd? in libgc appears
incorrect to me, as (%current-system) is normally never false.
* gnu/packages/hurd.scm (hurd-triplet?): Move to ...
* guix/util.scm (target-hurd?): ... here, let its argument
default to (%current-target-system) or (%current-system),
and write a docstring.
* gnu/packages/hurd.scm
(hurd-target?, hurd-system?): Use target-hurd? instead of
hurd-triplet?.
* gnu/packages/bdw-gc.scm (libgc): Likewise.
* gnu/packages/cross-base.scm
(cross-libc)[arguments]<#:configure-flags>: Likewise.
(cross-libc)[arguments]<#:phases>: Likewise.
(cross-libc)[arguments]<#:native-inputs>: Likewise.
* gnu/packages/make-boostrap.scm
(%glibc-stripped)[inputs]: Likewise.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* guix/utils.scm (target-linux?): New predicate.
* tests/utils.scm
("target-linux?"): Test it.
("target-mingw?"): Also test ‘target-mingw?’.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* gnu/packages/text-editors.scm (mg)[arguments]: Use cc-for-target.
Add phase to substitute pkg-config with the target's pkg-config.
Remote #t return from phases.