unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add Augeas.
@ 2016-01-21 15:05 Ricardo Wurmus
  2016-01-22 20:29 ` Leo Famulari
  0 siblings, 1 reply; 9+ messages in thread
From: Ricardo Wurmus @ 2016-01-21 15:05 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: 0001-gnu-Add-Augeas.patch --]
[-- Type: text/x-patch, Size: 3630 bytes --]

From 546a8651db1c420fee841a2da6474593e4c9aa93 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
Date: Thu, 21 Jan 2016 16:03:26 +0100
Subject: [PATCH] gnu: Add Augeas.

* gnu/packages/augeas.scm: New file.
* gnu-system.am (GNU_SYSTEM_MODULES): Add it.
---
 gnu-system.am           |  1 +
 gnu/packages/augeas.scm | 59 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+)
 create mode 100644 gnu/packages/augeas.scm

diff --git a/gnu-system.am b/gnu-system.am
index 3426056..c66e5ea 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -42,6 +42,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/attr.scm				\
   gnu/packages/audacity.scm			\
   gnu/packages/audio.scm			\
+  gnu/packages/augeas.scm			\
   gnu/packages/autogen.scm			\
   gnu/packages/autotools.scm			\
   gnu/packages/avahi.scm			\
diff --git a/gnu/packages/augeas.scm b/gnu/packages/augeas.scm
new file mode 100644
index 0000000..95b96ca
--- /dev/null
+++ b/gnu/packages/augeas.scm
@@ -0,0 +1,59 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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.
+;;;
+;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages augeas)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix utils)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages readline)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages xml))
+
+(define-public augeas
+  (package
+    (name "augeas")
+    (version "1.4.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "http://download.augeas.net/augeas-"
+                                  version ".tar.gz"))
+              (sha256
+               (base32
+                "0c2vncn0afmgwggnqa5s5z7m3zbcc66bi8v9m1h9w0i9q9xax7v5"))))
+    (build-system gnu-build-system)
+    ;; Marked as "required" in augeas.pc
+    (propagated-inputs
+     `(("libxml2" ,libxml2)))
+    (inputs
+     `(("readline" ,readline)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "http://augeas.net/")
+    (synopsis "Edit configuration files programmatically")
+    (description
+     "Augeas is a library and command line tool for programmatically editing
+configuration files in a controlled manner.  Augeas exposes a tree of all
+configuration settings and a simple local API for manipulating the tree.
+Augeas then modifies underlying configuration files according to the changes
+that have been made to the tree; it does as little modeling of configurations
+as possible, and focuses exclusivley on transforming the tree-oriented syntax
+of its public API to the myriad syntaxes of individual configuration files.")
+    (license license:lgpl2.1+)))
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-01-21 15:05 [PATCH] gnu: Add Augeas Ricardo Wurmus
@ 2016-01-22 20:29 ` Leo Famulari
  2016-02-02 15:50   ` Ricardo Wurmus
  0 siblings, 1 reply; 9+ messages in thread
From: Leo Famulari @ 2016-01-22 20:29 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

On Thu, Jan 21, 2016 at 04:05:43PM +0100, Ricardo Wurmus wrote:
> From 546a8651db1c420fee841a2da6474593e4c9aa93 Mon Sep 17 00:00:00 2001
> From: Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de>
> Date: Thu, 21 Jan 2016 16:03:26 +0100
> Subject: [PATCH] gnu: Add Augeas.
> 
> * gnu/packages/augeas.scm: New file.
> * gnu-system.am (GNU_SYSTEM_MODULES): Add it.

[...]

> +(define-public augeas

[...]

> +    (build-system gnu-build-system)
> +    ;; Marked as "required" in augeas.pc
> +    (propagated-inputs
> +     `(("libxml2" ,libxml2)))

Is there really no way to avoid this?

> +    (inputs
> +     `(("readline" ,readline)))
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (home-page "http://augeas.net/")
> +    (synopsis "Edit configuration files programmatically")
> +    (description
> +     "Augeas is a library and command line tool for programmatically editing
> +configuration files in a controlled manner.  Augeas exposes a tree of all
> +configuration settings and a simple local API for manipulating the tree.
> +Augeas then modifies underlying configuration files according to the changes
> +that have been made to the tree; it does as little modeling of configurations
> +as possible, and focuses exclusivley on transforming the tree-oriented syntax
> +of its public API to the myriad syntaxes of individual configuration files.")
> +    (license license:lgpl2.1+)))
> -- 
> 2.1.0
> 
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-01-22 20:29 ` Leo Famulari
@ 2016-02-02 15:50   ` Ricardo Wurmus
  2016-02-02 17:13     ` Tobias Geerinckx-Rice
  2016-02-03  9:37     ` Ludovic Courtès
  0 siblings, 2 replies; 9+ messages in thread
From: Ricardo Wurmus @ 2016-02-02 15:50 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel


Leo Famulari <leo@famulari.name> writes:

>> +    (build-system gnu-build-system)
>> +    ;; Marked as "required" in augeas.pc
>> +    (propagated-inputs
>> +     `(("libxml2" ,libxml2)))
>
> Is there really no way to avoid this?

I don’t know.  The problem here is that when augeas is used as a library
and you only add “augeas” (but not “libxml2”) as an input the
configuration will silently fail.

It is ugly, though, that a user installing augeas as a command line tool
would end up with “libxml2” in their profile.

Should these be two package variants then?

~~ Ricardo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-02-02 15:50   ` Ricardo Wurmus
@ 2016-02-02 17:13     ` Tobias Geerinckx-Rice
  2016-02-02 19:11       ` Ricardo Wurmus
  2016-02-03  9:37     ` Ludovic Courtès
  1 sibling, 1 reply; 9+ messages in thread
From: Tobias Geerinckx-Rice @ 2016-02-02 17:13 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Disclaimer: NixOS weenie here,

On 2 February 2016 at 16:50, Ricardo Wurmus
<ricardo.wurmus@mdc-berlin.de> wrote:
> I don’t know.  The problem here is that when augeas is used as a library
> and you only add “augeas” (but not “libxml2”) as an input the
> configuration will silently fail.

Isn't this better solved by patching libaugeas.la? Or does Guix not
work like that?

T G-R

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-02-02 17:13     ` Tobias Geerinckx-Rice
@ 2016-02-02 19:11       ` Ricardo Wurmus
  0 siblings, 0 replies; 9+ messages in thread
From: Ricardo Wurmus @ 2016-02-02 19:11 UTC (permalink / raw)
  To: Tobias Geerinckx-Rice; +Cc: guix-devel


Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com> writes:

> Disclaimer: NixOS weenie here,
>
> On 2 February 2016 at 16:50, Ricardo Wurmus
> <ricardo.wurmus@mdc-berlin.de> wrote:
>> I don’t know.  The problem here is that when augeas is used as a library
>> and you only add “augeas” (but not “libxml2”) as an input the
>> configuration will silently fail.
>
> Isn't this better solved by patching libaugeas.la? Or does Guix not
> work like that?

What patch are you proposing?  Augeas (the library) declares that any
user also needs to have libxml2.  Propagating an input achieves this.

The problem that present itself to me is that propagation also means
that a user installing Augeas (the application) will end up with libxml2
in their profile.  That’s unnecessary for using the application.

I wonder if we could meaningfully change the semantics of propagating
inputs.

~~ Ricardo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-02-02 15:50   ` Ricardo Wurmus
  2016-02-02 17:13     ` Tobias Geerinckx-Rice
@ 2016-02-03  9:37     ` Ludovic Courtès
  2016-03-03 16:16       ` Ricardo Wurmus
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-02-03  9:37 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:

> Leo Famulari <leo@famulari.name> writes:
>
>>> +    (build-system gnu-build-system)
>>> +    ;; Marked as "required" in augeas.pc
>>> +    (propagated-inputs
>>> +     `(("libxml2" ,libxml2)))

I find it clearer to put the comment right below ‘propagated-inputs’.

>> Is there really no way to avoid this?
>
> I don’t know.

The problem is that I don’t think it works to put an absolute file name
in the ‘Requires’ field of a ‘.pc’ file, so I don’t think we can avoid
it unfortunately.

However, since Augeas is a library, the propagated input is acceptable:
in practice, people probably won’t have it in their main environment,
but rather in a ‘guix environment’ thing, or in a dedicated development
profile.

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-02-03  9:37     ` Ludovic Courtès
@ 2016-03-03 16:16       ` Ricardo Wurmus
  2016-03-04  3:03         ` Leo Famulari
  0 siblings, 1 reply; 9+ messages in thread
From: Ricardo Wurmus @ 2016-03-03 16:16 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel


Ludovic Courtès <ludo@gnu.org> writes:

> Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:
>
>> Leo Famulari <leo@famulari.name> writes:
>>
>>>> +    (build-system gnu-build-system)
>>>> +    ;; Marked as "required" in augeas.pc
>>>> +    (propagated-inputs
>>>> +     `(("libxml2" ,libxml2)))
>
> I find it clearer to put the comment right below ‘propagated-inputs’.
>
>>> Is there really no way to avoid this?
>>
>> I don’t know.
>
> The problem is that I don’t think it works to put an absolute file name
> in the ‘Requires’ field of a ‘.pc’ file, so I don’t think we can avoid
> it unfortunately.
>
> However, since Augeas is a library, the propagated input is acceptable:
> in practice, people probably won’t have it in their main environment,
> but rather in a ‘guix environment’ thing, or in a dedicated development
> profile.

Augeas is both a library and a command line tool.  For a command line
tool propagation is ugly and I’d like to avoid it.

What should I best do in this case?

~~ Ricardo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-03-03 16:16       ` Ricardo Wurmus
@ 2016-03-04  3:03         ` Leo Famulari
  2016-03-04  8:21           ` Ricardo Wurmus
  0 siblings, 1 reply; 9+ messages in thread
From: Leo Famulari @ 2016-03-04  3:03 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

On Thu, Mar 03, 2016 at 05:16:05PM +0100, Ricardo Wurmus wrote:
> 
> Ludovic Courtès <ludo@gnu.org> writes:
> 
> > Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:
> >
> >> Leo Famulari <leo@famulari.name> writes:
> >>
> >>>> +    (build-system gnu-build-system)
> >>>> +    ;; Marked as "required" in augeas.pc
> >>>> +    (propagated-inputs
> >>>> +     `(("libxml2" ,libxml2)))
> >
> > I find it clearer to put the comment right below ‘propagated-inputs’.
> >
> >>> Is there really no way to avoid this?
> >>
> >> I don’t know.
> >
> > The problem is that I don’t think it works to put an absolute file name
> > in the ‘Requires’ field of a ‘.pc’ file, so I don’t think we can avoid
> > it unfortunately.
> >
> > However, since Augeas is a library, the propagated input is acceptable:
> > in practice, people probably won’t have it in their main environment,
> > but rather in a ‘guix environment’ thing, or in a dedicated development
> > profile.
> 
> Augeas is both a library and a command line tool.  For a command line
> tool propagation is ugly and I’d like to avoid it.
> 
> What should I best do in this case?

What is the effect of a wrapper compared to propagation? My
understanding is that the wrapped environment is only visible to the
wrapped binary. Is that correct? If so, it seems less intrusive to the
user's profile.

> 
> ~~ Ricardo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: Add Augeas.
  2016-03-04  3:03         ` Leo Famulari
@ 2016-03-04  8:21           ` Ricardo Wurmus
  0 siblings, 0 replies; 9+ messages in thread
From: Ricardo Wurmus @ 2016-03-04  8:21 UTC (permalink / raw)
  To: Leo Famulari; +Cc: guix-devel


Leo Famulari <leo@famulari.name> writes:

> On Thu, Mar 03, 2016 at 05:16:05PM +0100, Ricardo Wurmus wrote:
>> 
>> Ludovic Courtès <ludo@gnu.org> writes:
>> 
>> > Ricardo Wurmus <ricardo.wurmus@mdc-berlin.de> skribis:
>> >
>> >> Leo Famulari <leo@famulari.name> writes:
>> >>
>> >>>> +    (build-system gnu-build-system)
>> >>>> +    ;; Marked as "required" in augeas.pc
>> >>>> +    (propagated-inputs
>> >>>> +     `(("libxml2" ,libxml2)))
>> >
>> > I find it clearer to put the comment right below ‘propagated-inputs’.
>> >
>> >>> Is there really no way to avoid this?
>> >>
>> >> I don’t know.
>> >
>> > The problem is that I don’t think it works to put an absolute file name
>> > in the ‘Requires’ field of a ‘.pc’ file, so I don’t think we can avoid
>> > it unfortunately.
>> >
>> > However, since Augeas is a library, the propagated input is acceptable:
>> > in practice, people probably won’t have it in their main environment,
>> > but rather in a ‘guix environment’ thing, or in a dedicated development
>> > profile.
>> 
>> Augeas is both a library and a command line tool.  For a command line
>> tool propagation is ugly and I’d like to avoid it.
>> 
>> What should I best do in this case?
>
> What is the effect of a wrapper compared to propagation? My
> understanding is that the wrapped environment is only visible to the
> wrapped binary. Is that correct? If so, it seems less intrusive to the
> user's profile.

A person using the command line tool probably won’t need a wrapper and
doesn’t need propagation either.  They only just use the tool.

However, a programme using augeas as a library *does* need the input to
be propagated as pkg-config will otherwise claim that augeas could not
be loaded.  Such programme would have to add libxml2 to its inputs.  We
achieve this for all users of augeas by propagating libxml2.

As far as I can see there is no way to reconcile these two opposing
forces in a single package.  We don’t have a way to say that an input
should only be propagated if the package is not a leaf node in the graph
(i.e. installed directly into a user’s profile).

~~ Ricardo

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-03-04  8:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-21 15:05 [PATCH] gnu: Add Augeas Ricardo Wurmus
2016-01-22 20:29 ` Leo Famulari
2016-02-02 15:50   ` Ricardo Wurmus
2016-02-02 17:13     ` Tobias Geerinckx-Rice
2016-02-02 19:11       ` Ricardo Wurmus
2016-02-03  9:37     ` Ludovic Courtès
2016-03-03 16:16       ` Ricardo Wurmus
2016-03-04  3:03         ` Leo Famulari
2016-03-04  8:21           ` Ricardo Wurmus

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).