[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] gnu: Add Mlucas.
From: |
Mathieu Lirzin |
Subject: |
Re: [PATCH] gnu: Add Mlucas. |
Date: |
Mon, 05 Oct 2015 12:46:47 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Alex Vong <address@hidden> writes:
> From e5155b52f636bfee849268b19b81f5b6608540fd Mon Sep 17 00:00:00 2001
> From: Alex Vong <address@hidden>
> Date: Mon, 5 Oct 2015 12:49:49 +0800
> Subject: [PATCH] gnu: Add Mlucas.
>
> * gnu/packages/mlucas.scm: New file.
> * gnu-system.am (GNU_SYSTEM_MODULES): Register it.
> ---
This is quite an unusual patch. :)
> gnu-system.am | 1 +
> gnu/packages/mlucas.scm | 283
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 284 insertions(+)
> create mode 100644 gnu/packages/mlucas.scm
>
[...]
> +(define-module (gnu packages mlucas)
> + #:use-module (srfi srfi-1)
> + #:use-module (guix packages)
> + #:use-module (guix download)
> + #:use-module (guix build-system gnu)
> + #:use-module (guix licenses)
> + #:use-module (gnu packages autogen)
> + #:use-module (gnu packages autotools)
> + #:use-module (gnu packages perl))
> +
> +
> +;;; Procedures to manupulate build flags, similar to dpkg-buildflags.
> +;;;
> +;;; The data strcture flag-list is constrcuted by (flag-list
> <flag-sublist>...)
^^
“constructed”
> +;;; The constructor flag-list does something to the argument,
> +;;; such as trimming whitespaces, to ensure no two arguments mean the same.
> +;;;
> +;;; The data structure flag-sublist is in fact an ordinary list
> +;;; with the following structure (<flag-type-symbol> <flag-string>...)
> +;;;
> +;;; Here is an example:
> +;;; (flag-list
> +;;; '(CFLAGS "-O2" "-g")
> +;;; '(LDFLAGS "-lm" "-lpthread"))
> +;;;
> +;;; flag-list+ and flag-list- are analogous to
> +;;; numberic + and - but operate on flag-list.
> +;;;
> +;;; flag-list->string-list converts flag-list into
> +;;; configure-flags-compatible string-list.
> +;;;
IIUC these procedures are not meant to be specific the definition of package
mlucas. So this should be in some other commit and maybe located in other
file in “guix/guix/build/...” directory.
Can you explain the problem you faced with the current Guix methods to achieve
that, and what are the benefits of ‘flag-list’ comparing to them?
Example:
--8<---------------cut here---------------start------------->8---
(arguments
'(#:configure-flags ...
#:make-flags ...
--8<---------------cut here---------------end--------------->8---
[...]
> +;;; implement the bootstrap-build-system using syntax-case macro
> +;;; bootstrap-build-system use a bootstrap script
> +;;; to run autoreconf and generate documentation.
> +(define-syntax package*
> + (lambda(x)
> + ;; add autoconf, automake and perl as build dependencies
> + ;; Modify the gnu-build-system
> + ;; by adding bootstrap phase before configure phase.
> + (define (extend-fields s-exp)
I'm not competent enough to judge if it's a useful build-system to add but
this should be done in another commit and in
“guix/guix/build/bootstap-build-system.scm” if yes.
> +
> +(define-public mlucas
> + ;; descriptions of the package
> + (let ((short-description
> + "Program to perform Lucas-Lehmer test on a Mersenne number")
> + (long-description
> + "mlucas is an open-source (and free/libre) program
^^^
Being a GNU project, we use the term “free software”, but in the context of a
description it is not relevant to describe freedom of a package since every
package in Guix is free software.
I think there will be more details to cover for an extensive review, but let's
discuss the big lines first.
Thanks for your contribution!
--
Mathieu Lirzin