Re: Guix Jargon File (WAS: Rethinking propagated inputs?)

2021-09-05 Thread Bengt Richter
Hi Jonathan,

Thanks for the TXR reference, I will have to look into it.

Just on the basis of the author name "Kaz Kylheku" I would check it out.
I have encountered his posts 'way in the past, and they were always
intelligent and interesting. (If he is older than me, I'd like to know more
about his diet and habits ;-)

Anyway, if you are interested in PEGs in any guix connection, I think
you should look at Guile's PEG implementation and syntaxes (scheme and 
string/regex styles).

Type "info guile" (not guix), and then "Ctrl-s Peg Parsing"
which will take you to an index, and either use that link (hit Return) or
hit Ctrl-s again and you should be at the beginning of some interesting reading 
;-)

Note that guix is built on top of guile and its infrastructure of libaries
(mostly C still where they aren't scheme, UIAM, but that may be changing
to include more, I'm not sure -- I am not insider enough to follow ;-)

Maybe you can make a guile-txr.scm package for a txr wrapper module
using foreign function or your own C extension loadable by guile scheme.

Have fun!
Maybe my best strategy is to see what you come up with before re-inventing
things you may already be way ahead in :)

Oh, if you haven't already, also check into guile's regular expressions, e.g.
"info guile Ret Ctrl-s regular expressions Ret Ret"

And also try guile's repl by just typing "guile Ret" and then ",help"

Mvh, Bengt Richter

On +2021-09-05 15:53:34 +, Jonathan McHugh wrote:
> Hi Bengt,
> 
> I believe that a collection of regular expressions for recognising starting 
> block and closing block for differing formats. It would for instance become 
> political making a choice between (say):
> * -a-dangerous-pair-of-scissors--8<--ouch- ;
> * an Orgmode output; a GemText block;
> * somebody who uses '£' as a delimiter,
> * et al.
> 
> That way people can maintain their workflows while still having a better idea 
> of where other peoples blocks/citations are.
> 
> FYI, I am looking into parsing manpages and 'cheat' style command tools to 
> generate Parsing Expression Grammars - so as to permit people to identify 
> coding, if not perform actions. Hopefully one can then identify inline 
> content, as well as inferences regarding when coding blocks start and stop 
> (let alone additional knowledge)
> 
> I was planning on using the Lisp TXR to do so - if somebody thinks this is a 
> mistake please say so! If somebody would like to propose what a Guile PEG 
> environment should look like I can make an additional grammar. If I get 
> enough positive feedback I can prioritise it more for a project Im working on.
> 
> Kind regards,
> 
> 
> Jonathan McHugh
> indieterminacy@libre.brussels
> 
> September 5, 2021 4:54 PM, "Bengt Richter"  wrote:
> 
> > Hi Liliana,
> > 
> > Thank you for starting this renamed thread (as I should have done).
> > 
> > I think a people who are just looking at _maybe_ installing guix
> > should have an easy way to look up terms they haven't seen before.
> > 
> > But really I am more interested in promoting the idea of a snippet-quoting
> > convention modeled on a subset of mime email standards.
> > 
> > Very simple, but capable of containing and transferring anything 
> > unambiguously
> > (if not always with efficient transmission encodings).
> > 
> > We can of course already do that with signed and attached files, and we can
> > archive them and retrieve them, but I am interested in retrieving little 
> > pieces
> > and making it easy to mark things in arbitratry contexts (like this email or
> > a cannibal-friendly program source) so that simple snarfing utilities will 
> > be
> > able to extract snippet-quote info based on tags and identifiers or anything
> > in the headers or content per search options much like for any search 
> > engine.
> > 
> > This is to create a simple contribution mechanism as well as a format
> > for retrieval.
> > 
> > I have seen many code snippets from developers that are tutorial material
> > as well as practical how-tos for debugging and browsing guix.
> > 
> > Wouldn't it be nice if they were snip-quoted so that we could extract them
> > from mail archives in a better way than searching the raw archives, or 
> > having
> > to browse though treads and extract nuggets by hand?
> > 
> > simply:
> > --8<---cut here---start->8---
> > header part, ending with blank line
> > 
> > optional content part, encoded and delimited or referenced per header info
> > --8<---cut here---end--->8---
> > 
> > The header part could start with just prefixing GX- like the optional custom
> > header X- prefix described in mime rfcs, and we could borrow whatever was 
> > useful.
> > 
> > Tbc.. So called "real life" demands I postpone making a decent real example
> > 'til later, sorry ;/
> > 
> > Please excuse the big top-post. I had intended to comment and edit in line 
> > ;/
> > 
> > BTW, I know "info guix|grep -i whatever" often gives 

Re: Rethinking propagated inputs?

2021-09-05 Thread Liliana Marie Prikler
Am Sonntag, den 05.09.2021, 22:27 +0200 schrieb Maxime Devos:
> Liliana Marie Prikler schreef op zo 05-09-2021 om 21:37 [+0200]:
> > > > I must admit that this solution appears to have some surface
> > > > elegance, but what exactly would go in the "build" output of a
> > > > package?  You mentioned pkg-config files (obviously), but those
> > > > don't suffice to actually build a package, do they?
> > > 
> > > Sometimes they do suffice.  The .pc files contain the "-
> > > L/.../LIB", "-I/.../include" and "-lstuff" flags needed for
> > > compilation.  If the build system of the package uses pkg-config, 
> > > it will use those flags, so the compiler will find the library in
> > > that case.
> > > 
> > > Not sure if they always do suffice.
> > 
> > Is that so?  I would think the build process needs to see stuff
> > outside of its inputs for that to work, e.g. the actual header it
> > wants to include, which isn't part of "build".  Am I
> > misunderstanding our sandbox requirements?
> 
> The .pc file includes the absolute path to the library and include
> directories, so the output "build" with the .pc file has a reference
> to the output "out" with the libraries and include headers.  More
> concretely, take the .pc from the glib package:
> 
> prefix=/gnu/store/98hgv3i6hdqgiq98ldy7rkpdwhah8iq2-glib-2.62.6
> libdir=${prefix}/lib
> includedir=${prefix}/include
> [more stuff]
> Requires.private: libpcre >=  8.31
> Libs: -L${libdir} -lglib-2.0
> Libs.private: -pthread
> Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include
> 
> The (transitive) references of all inputs to the build process are
> included in the sandbox.  In this case, if the package has the
> hypothetical glib:build among its inputs, the daemon will
> automatically make glib:out available as well in the sandbox.
And IIUC if glib had a "lib" output, glib:lib would be available in the
sandbox instead of glib:out due to the reference by glib:build?  If
that's the case using #:by and "build" outputs might be a preferable
solution, if not for all packages then at least for some.

At this point the question then becomes what to name this "build"
output and what to put into it besides pkg-config stuff.  Particularly
in the land of glib, there also exist typelibs, which can be used as
"build" inputs in the case of Vala or as runtime inputs in the case of
pygobject and other language bindings.  Perhaps this is early
bikeshedding when we'd actually need to code up #:by, but what would be
the better approach here?  Separate "build" into "pkg-config", "cmake"
(for CMake-based package discovery), "typelib" etc. or have one more or
less anonymous blob called "build"?

Greetings




Re: Rethinking propagated inputs?

2021-09-05 Thread Maxime Devos
Liliana Marie Prikler schreef op zo 05-09-2021 om 21:37 [+0200]:
> > > I must admit that this solution appears to have some surface
> > > elegance, but what exactly would go in the "build" output of a
> > > package?  You mentioned pkg-config files (obviously), but those
> > > don't suffice to actually build a package, do they?
> > 
> > Sometimes they do suffice.  The .pc files contain the "-L/.../LIB",
> > "-I/.../include" and "-lstuff" flags needed for compilation.  If the
> > build system of the package uses pkg-config, it will use those flags,
> > so the compiler will find the library in that case.
> > 
> > Not sure if they always do suffice.
>
> Is that so?  I would think the build process needs to see stuff outside
> of its inputs for that to work, e.g. the actual header it wants to
> include, which isn't part of "build".  Am I misunderstanding our
> sandbox requirements?

The .pc file includes the absolute path to the library and include directories,
so the output "build" with the .pc file has a reference to the output "out"
with the libraries and include headers.  More concretely, take the .pc from
the glib package:

prefix=/gnu/store/98hgv3i6hdqgiq98ldy7rkpdwhah8iq2-glib-2.62.6
libdir=${prefix}/lib
includedir=${prefix}/include
[more stuff]
Requires.private: libpcre >=  8.31
Libs: -L${libdir} -lglib-2.0
Libs.private: -pthread
Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib-2.0/include

The (transitive) references of all inputs to the build process are included
in the sandbox.  In this case, if the package has the hypothetical glib:build
among its inputs, the daemon will automatically make glib:out available as well
in the sandbox.

Greetings,
Maxime.


signature.asc
Description: This is a digitally signed message part


Re: Rethinking propagated inputs?

2021-09-05 Thread Liliana Marie Prikler
Am Sonntag, den 05.09.2021, 21:18 +0200 schrieb Maxime Devos:
> [...]
> [Liliana Marie Prikler schreef op zo 05-09-2021 om 18:50 [+0200]:]
> > This does cause problems with language bindings though,
> > e.g. pygobject, as those also propagate the package in question and
> > can't be neatly separated.
> 
> python-pygobject can just keep everything in the output "out",
> and let glib and libffi be propagated by "out", no?  I don't see
> how this would cause trouble for language bindings.
It doesn't immediately cause problems with the language bindings
themselves, you are correct about that, but since packages using such
bindings must by virtue of being python packages already propagate all
their inputs we are back at square zero, so to speak.  However, perhaps
we can solve that by putting launchers in the "bin" output?

> > > Now, imagine the "build" output of "zile" had glib:build in
> > > propagated-inputs, using the scheme described above.  Then, if
> > > the "out" output of zile is installed in a profile, that doesn't
> > > cause glib to appear in the profile as well, because glib is only
> > > propagated for the "build" output of zile, and not for "out"
> > > output of zile.
> > > 
> > > However, if "build" is installed in the profile (e.g. because
> > > someone runs "guix environment --ad-hoc zile:build various
> > > compilation tools" to create an application using the zile
> > > library), then the .pc becomes available in the profile. 
> > I must admit that this solution appears to have some surface
> > elegance, but what exactly would go in the "build" output of a
> > package?  You mentioned pkg-config files (obviously), but those
> > don't suffice to actually build a package, do they?
> 
> Sometimes they do suffice.  The .pc files contain the "-L/.../LIB",
> "-I/.../include" and "-lstuff" flags needed for compilation.  If the
> build system of the package uses pkg-config, it will use those flags,
> so the compiler will find the library in that case.
> 
> Not sure if they always do suffice.
Is that so?  I would think the build process needs to see stuff outside
of its inputs for that to work, e.g. the actual header it wants to
include, which isn't part of "build".  Am I misunderstanding our
sandbox requirements?

> > Would we need an extra syntax to e.g. propagate the "out" output by
> > "build" (and in some cases the "lib" output instead)?
> 
> Not if .pc files are put in "out" (or "lib" in some cases) instead of
> the originally proposed "build", but otherwise, possibly?
Okay, let's talk about the other things then until we can put a certain
(as in "sure to be correct") answer to this question.

Greetings




Re: Rethinking propagated inputs?

2021-09-05 Thread Maxime Devos
Liliana Marie Prikler schreef op zo 05-09-2021 om 18:50 [+0200]:
> 
[...]
> > (Feel free to suggest a more concise name.)
> Since "propagated" is already given by propagated-inputs, what about
> simply having #:by?
> E.g. something like: [...]
>   (define glib
> (package
>   (name "glib")
>   (outputs '("out" ; everything
>  "bin")) ; glib-mkenums ... depends on Python
>   (propagated-inputs
> `(("pcre" ,pcre #:by ("out")) ; future-proof #:by  
>   ("libffi" ,libffi #:by ("out")) ; have it be a list
>   [...]))

That looks nice, thanks.

> I'm not sure whether we need to necessarily add a new "build" output
> for pkg-config, that'd lead to a lot of doubly-propagated includes. 
> (Imagine both libffi and libffi:build etc.)  I think the more
> meaningful division here would be to add "bin" or "lib" outputs to
> those packages, where we don't want propagation to continue
> indefinitely.

Putting pkg-config files into the "lib" or "out" output (together with shared 
libraries)
seems reasonable to me ("lib" if the package is usually used as a binary,
but also has libaries with pkg-config files, and "out" if it is usually
used as a library).

>   This does cause problems with language bindings though,
> e.g. pygobject, as those also propagate the package in question and
> can't be neatly separated.

python-pygobject can just keep everything in the output "out",
and let glib and libffi be propagated by "out", no?  I don't see
how this would cause trouble for language bindings.

> > Now, imagine the "build" output of "zile" had glib:build in
> > propagated-inputs, using the scheme described above.  Then, if the
> > "out" output of zile is installed in a profile, that doesn't cause
> > glib to appear in the profile as well, because glib
> > is only propagated for the "build" output of zile, and not for "out"
> > output of zile.
> > 
> > However, if "build" is installed in the profile (e.g. because someone
> > runs "guix environment --ad-hoc zile:build various compilation tools"
> > to create an application using the zile library), then the .pc
> > becomes available in the profile. 
> I must admit that this solution appears to have some surface elegance,
> but what exactly would go in the "build" output of a package?  You
> mentioned pkg-config files (obviously), but those don't suffice to
> actually build a package, do they?

Sometimes they do suffice.  The .pc files contain the "-L/.../LIB",
"-I/.../include" and "-lstuff" flags needed for compilation.  If the
build system of the package uses pkg-config, it will use those flags,
so the compiler will find the library in that case.

Not sure if they always do suffice.

>   Would we need an extra syntax to
> e.g. propagate the "out" output by "build" (and in some cases the "lib"
> output instead)?

Not if .pc files are put in "out" (or "lib" in some cases) instead of the
originally proposed "build", but otherwise, possibly?

Greetings,
Maxime.


signature.asc
Description: This is a digitally signed message part


Re: Rethinking propagated inputs?

2021-09-05 Thread Liliana Marie Prikler
Hi

Am Sonntag, den 05.09.2021, 18:17 +0200 schrieb Maxime Devos:
> Liliana Marie Prikler schreef op za 04-09-2021 om 20:24 [+0200]:
> > Hi Guix,
> > 
> > some while ago we made the decision to propagate inputs, that are
> > mentioned in pkg-config files, the rationale being that those
> > propagated inputs will be needed in packages in order to
> > compile.  This
> > has saved us some typing, but at a cost.  For instance, it is now
> > no
> > longer possible to upgrade "zile"
> 
> Zile doesn't propagate glib: it's in inputs, not propagated-inputs:
> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/zile.scm#n84.
Oops, what a blunder.  It turns out my mistake was
> > " and "icecat" independently, because
> > both propagate glib.  "libreoffice" and "telegram-desktop", two
> > packages that have failed us loudly before, are also in that list.
> 
> libreoffice doesn't propagate anything.  Neither does icecat.
> 
> >   To
> > see what else is in here, you might want to use the following
> > snippet
> > in a guix repl:
> > 
> > --8<---cut here---start->8---
> > (use-modules (guix packages)
> >  (gnu packages)
> >  (guix discovery)
> >  (srfi srfi-1)
> >  (srfi srfi-26))
> > 
> > (display
> >  (fold-packages
> >  (lambda (p s)
> >(if (any (compose (lambda (input)
> >(and (package? input)
> > (string=? "glib" (package-name
> > input
> >  cadr)
> > (package-transitive-inputs p))
> >(cons (package-name p) s)
> >s))
> >  '()
> >  (all-modules %default-package-module-path)))
> > --8<---cut here---end--->8---
(package-transitive-inputs p) should be (package-transitive-propagated-
inputs p).  With that, telegram-desktop is still in the list, as is
gst-plugins-base (why?), rhythmbox, polari, and some others.

> > It returns more than 1400 packages – a bit less than 10% of Guix. 
> > Needless to say, that's a bad thing and I think we should do
> > something about it, particularly when it comes to leaf packages,
> > that users are likely to install.
> > 
> > Does anyone have an idea how we should handle propagations for the
> > sake of pkg-config?  Perhaps we could add "linked-inputs", which
> > are added when building packages and environments when not using --
> > ad-hoc, but not when union-building profiles.  WDYT?
> 
> For packages using pkg-config, I had the following scheme in mind:
> 
> A package that has .pc files puts them into a separate "build"
> output.  The code handling 'propagated-inputs' is modified such that
> an entry in 'propagated-inputs' can have an additional 'propagated-
> for-output' component.
> 
> (Feel free to suggest a more concise name.)
Since "propagated" is already given by propagated-inputs, what about
simply having #:by?

E.g. something like:
  (define glib
(package
  (name "glib")
  (outputs '("out" ; everything
 "bin")) ; glib-mkenums ... depends on Python
  (propagated-inputs
`(("pcre" ,pcre #:by ("out")) ; future-proof #:by  
  ("libffi" ,libffi #:by ("out")) ; have it be a list
  [...]))

I'm not sure whether we need to necessarily add a new "build" output
for pkg-config, that'd lead to a lot of doubly-propagated includes. 
(Imagine both libffi and libffi:build etc.)  I think the more
meaningful division here would be to add "bin" or "lib" outputs to
those packages, where we don't want propagation to continue
indefinitely.  This does cause problems with language bindings though,
e.g. pygobject, as those also propagate the package in question and
can't be neatly separated.

> Now, imagine the "build" output of "zile" had glib:build in
> propagated-inputs, using the scheme described above.  Then, if the
> "out" output of zile is installed in a profile, that doesn't cause
> glib to appear in the profile as well, because glib
> is only propagated for the "build" output of zile, and not for "out"
> output of zile.
> 
> However, if "build" is installed in the profile (e.g. because someone
> runs "guix environment --ad-hoc zile:build various compilation tools"
> to create an application using the zile library), then the .pc
> becomes available in the profile. 
I must admit that this solution appears to have some surface elegance,
but what exactly would go in the "build" output of a package?  You
mentioned pkg-config files (obviously), but those don't suffice to
actually build a package, do they?  Would we need an extra syntax to
e.g. propagate the "out" output by "build" (and in some cases the "lib"
output instead)?

Greetings




Re: Rethinking propagated inputs?

2021-09-05 Thread Maxime Devos
Liliana Marie Prikler schreef op za 04-09-2021 om 20:24 [+0200]:
> Hi Guix,
> 
> some while ago we made the decision to propagate inputs, that are
> mentioned in pkg-config files, the rationale being that those
> propagated inputs will be needed in packages in order to compile.  This
> has saved us some typing, but at a cost.  For instance, it is now no
> longer possible to upgrade "zile"

Zile doesn't propagate glib: it's in inputs, not propagated-inputs:
https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/zile.scm#n84.

> " and "icecat" independently, because
> both propagate glib.  "libreoffice" and "telegram-desktop", two
> packages that have failed us loudly before, are also in that list.

libreoffice doesn't propagate anything.  Neither does icecat.

>   To
> see what else is in here, you might want to use the following snippet
> in a guix repl:
> 
> --8<---cut here---start->8---
> (use-modules (guix packages)
>  (gnu packages)
>  (guix discovery)
>  (srfi srfi-1)
>  (srfi srfi-26))
> 
> (display
>  (fold-packages
>  (lambda (p s)
>(if (any (compose (lambda (input)
>(and (package? input)
> (string=? "glib" (package-name input
>  cadr)
> (package-transitive-inputs p))
>(cons (package-name p) s)
>s))
>  '()
>  (all-modules %default-package-module-path)))
> --8<---cut here---end--->8---
> 
> It returns more than 1400 packages – a bit less than 10% of Guix. 
> Needless to say, that's a bad thing and I think we should do something
> about it, particularly when it comes to leaf packages, that users are
> likely to install.
> 
> Does anyone have an idea how we should handle propagations for the sake
> of pkg-config?  Perhaps we could add "linked-inputs", which are added
> when building packages and environments when not using --ad-hoc, but
> not when union-building profiles.  WDYT?

For packages using pkg-config, I had the following scheme in mind:

A package that has .pc files puts them into a separate "build" output.
The code handling 'propagated-inputs' is modified such that an entry in
'propagated-inputs' can have an additional 'propagated-for-output' component.

(Feel free to suggest a more concise name.)

I.e., something like:

  (define glib
(package
  (name "glib")
  (outputs '("out" ; everything
 "bin" ; glib-mkenums ... depends on Python
 "build")) ; glib-2.0.pc
  (propagated-inputs
`(("pcre" ,pcre #:propagate-for-output "build") ; in the 
Requires.private field of glib-2.0.pc
  ("libffi" ,libffi #:propagate-for-output "build") ; ditto, for 
gobject-2.0.pc
  ;; etc.
  ))
  (native-inputs '()) ; not relevant to this e-ail
  ...))

Now, imagine the "build" output of "zile" had glib:build in propagated-inputs,
using the scheme described above.  Then, if the "out" output of zile is 
installed
in a profile, that doesn't cause glib to appear in the profile as well, because 
glib
is only propagated for the "build" output of zile, and not for "out" output of 
zile.

However, if "build" is installed in the profile (e.g. because someone runs
"guix environment --ad-hoc zile:build various compilation tools" to create
an application using the zile library), then the .pc becomes available in the 
profile. 

Greetings,
Maxime.


signature.asc
Description: This is a digitally signed message part


Re: Guix Jargon File (WAS: Rethinking propagated inputs?)

2021-09-05 Thread Jonathan McHugh
Hi Bengt,

I believe that a collection of regular expressions for recognising starting 
block and closing block for differing formats. It would for instance become 
political making a choice between (say):
* -a-dangerous-pair-of-scissors--8<--ouch- ;
* an Orgmode output; a GemText block;
* somebody who uses '£' as a delimiter,
* et al.

That way people can maintain their workflows while still having a better idea 
of where other peoples blocks/citations are.

FYI, I am looking into parsing manpages and 'cheat' style command tools to 
generate Parsing Expression Grammars - so as to permit people to identify 
coding, if not perform actions. Hopefully one can then identify inline content, 
as well as inferences regarding when coding blocks start and stop (let alone 
additional knowledge)

I was planning on using the Lisp TXR to do so - if somebody thinks this is a 
mistake please say so! If somebody would like to propose what a Guile PEG 
environment should look like I can make an additional grammar. If I get enough 
positive feedback I can prioritise it more for a project Im working on.

Kind regards,


Jonathan McHugh
indieterminacy@libre.brussels

September 5, 2021 4:54 PM, "Bengt Richter"  wrote:

> Hi Liliana,
> 
> Thank you for starting this renamed thread (as I should have done).
> 
> I think a people who are just looking at _maybe_ installing guix
> should have an easy way to look up terms they haven't seen before.
> 
> But really I am more interested in promoting the idea of a snippet-quoting
> convention modeled on a subset of mime email standards.
> 
> Very simple, but capable of containing and transferring anything unambiguously
> (if not always with efficient transmission encodings).
> 
> We can of course already do that with signed and attached files, and we can
> archive them and retrieve them, but I am interested in retrieving little 
> pieces
> and making it easy to mark things in arbitratry contexts (like this email or
> a cannibal-friendly program source) so that simple snarfing utilities will be
> able to extract snippet-quote info based on tags and identifiers or anything
> in the headers or content per search options much like for any search engine.
> 
> This is to create a simple contribution mechanism as well as a format
> for retrieval.
> 
> I have seen many code snippets from developers that are tutorial material
> as well as practical how-tos for debugging and browsing guix.
> 
> Wouldn't it be nice if they were snip-quoted so that we could extract them
> from mail archives in a better way than searching the raw archives, or having
> to browse though treads and extract nuggets by hand?
> 
> simply:
> --8<---cut here---start->8---
> header part, ending with blank line
> 
> optional content part, encoded and delimited or referenced per header info
> --8<---cut here---end--->8---
> 
> The header part could start with just prefixing GX- like the optional custom
> header X- prefix described in mime rfcs, and we could borrow whatever was 
> useful.
> 
> Tbc.. So called "real life" demands I postpone making a decent real example
> 'til later, sorry ;/
> 
> Please excuse the big top-post. I had intended to comment and edit in line ;/
> 
> BTW, I know "info guix|grep -i whatever" often gives clues about whatever, 
> for pursuing
> "C-s whatever" once inside "info guix whatever", but though concept and api 
> indices
> are great, they are not a Jargon File, and not as handy for an outsider :)
> 
> On +2021-09-05 12:50:56 +0200, Liliana Marie Prikler wrote:
> 
>> Hi,
>> 
>> Am Sonntag, den 05.09.2021, 11:50 +0200 schrieb Bengt Richter:
>>> We don't call things build-inputs here in Guix land, that's a no-no
>>> :P
>> 
>> Is there an official guix jargon file or glossary file or texi file
>> or wikimedia/wiktionary/wikipedia clone on gnu.org that non-
>> cognoscenti could use to get a clue?
>> AFAIK no, you more or less have to go by what the manual tells you. As
>> for why we have native-inputs and not build-inputs like other distros,
>> it's because people often misclassify "build" inputs, so the definition
>> actually does more harm than good. Guix knows which files are actually
>> "just used for build" by what ends up in the store, with some
>> exceptions like UTF-32 encoded strings.
>> 
>> Is there a thread that on that topic making any progress on making it
>> happen?
>> AFAIK no.
>> 
>> when someone in a thread like this offers a candidate official
>> definition, (off-topic sort of, but meta-on-topic for relevant
>> documentation) could it be snip-quoted for easy search and
>> aggregation for maintainers of official definitions and translations?
>> E.g.
>> (or actually borrow some rfc0842 or descendant so an attached file
>> generates a usuable section in mail archives that can be snarfed
>> automatically?)
>> 
>> --8<---cut here---start->8---
>> X-Content-type: 

Re: Guix Jargon File (WAS: Rethinking propagated inputs?)

2021-09-05 Thread Liliana Marie Prikler
Hi,

Am Sonntag, den 05.09.2021, 16:54 +0200 schrieb Bengt Richter:
> Hi Liliana,
> 
> Thank you for starting this renamed thread (as I should have done).
> 
> I think a people who are just looking at _maybe_ installing guix
> should have an easy way to look up terms they haven't seen before.
Personally speaking, the manual and cookbook lend themselves easily to
grepping (and it turns out you acknowledge that later on yourself), but
of course they only reference what Guix *has*, i.e. inputs and native-
inputs, not what it doesn't have, e.g. the Gentoo distinction between
DEPEND and BDEPEND.

> But really I am more interested in promoting the idea of a snippet-
> quoting convention modeled on a subset of mime email standards.
> 
> Very simple, but capable of containing and transferring anything
> unambiguously (if not always with efficient transmission encodings).
> 
> We can of course already do that with signed and attached files, and
> we can archive them and retrieve them, but I am interested in
> retrieving little pieces and making it easy to mark things in
> arbitratry contexts (like this email or a cannibal-friendly program
> source) so that simple snarfing utilities will be able to extract
> snippet-quote info based on tags and identifiers or anything
> in the headers or content per search options much like for any search
> engine.
Both the mailing lists and IRC channel are already archived, so what
you would need to do is simply to collect the funniest quotes and
publish them somewhere, perhaps with links back for context.  As for
tag-based lookup mechanisms, those already exist in the wild as well,
you don't particularly need to reinvent the wheel.

What I don't really understand from all this is for one, what purpose
this Jargon file would serve, and for another, who you would want to
collaborate it.  For all its explanatory power, I do think a manual
would be better suited most of the time if we're talking about serious
definitions of important concepts.

> This is to create a simple contribution mechanism as well as a format
> for retrieval.
> 
> I have seen many code snippets from developers that are tutorial
> material as well as practical how-tos for debugging and browsing
> guix.
> 
> Wouldn't it be nice if they were snip-quoted so that we could extract
> them from mail archives in a better way than searching the raw
> archives, or having to browse though treads and extract nuggets by
> hand?
Possibly, though your particular suggestion is probably more fun if
you're used to writing mail headers by hand than using a GUI client
which mostly hides such things for you (I personally haven't switched
to using Emacs for my mail yet, and I think integrating it with EDS or
even just GOA might take some while).

> simply:
> --8<---cut here---start->8---
> header part, ending with blank line
> 
> optional content part, encoded and delimited or referenced per header
> info
> --8<---cut here---end--->8---
> 
> 
> The header part could start with just prefixing GX- like the optional
> custom header X- prefix described in mime rfcs, and we could borrow
> whatever was useful.
X- exists for a reason, so you should make that X-SOMEID-KEY, where
SOMEID uniquely labels your scheme.  Or who knows, maybe some scheme
already exists out there and you don't need to create a new one.

> BTW, I know "info guix|grep -i whatever" often gives clues about
> whatever, for pursuing "C-s whatever" once inside "info guix
> whatever", but though concept and api indices are great, they are not
> a Jargon File, and not as handy for an outsider :)
I always thought jargon files to be insider humor?  Did I miss
something?  Like, obviously you can read them as an outsider, but you
won't have a clear understanding of what is actually said by having a
bunch more definitions in the back of your head.  To me that sounds
like learning a language with nothing but a dictionary, or worse a
thesaurus.




Re: Guix Jargon File (WAS: Rethinking propagated inputs?)

2021-09-05 Thread Bengt Richter
Hi Liliana,

Thank you for starting this renamed thread (as I should have done).

I think a people who are just looking at _maybe_ installing guix
should have an easy way to look up terms they haven't seen before.

But really I am more interested in promoting the idea of a snippet-quoting
convention modeled on a subset of mime email standards.

Very simple, but capable of containing and transferring anything unambiguously
(if not always with efficient transmission encodings).

We can of course already do that with signed and attached files, and we can
archive them and retrieve them, but I am interested in retrieving little pieces
and making it easy to mark things in arbitratry contexts (like this email or
a cannibal-friendly program source) so that simple snarfing utilities will be
able to extract snippet-quote info based on tags and identifiers or anything
in the headers or content per search options much like for any search engine.

This is to create a simple contribution mechanism as well as a format
for retrieval.

I have seen many code snippets from developers that are tutorial material
as well as practical how-tos for debugging and browsing guix.

Wouldn't it be nice if they were snip-quoted so that we could extract them
from mail archives in a better way than searching the raw archives, or having
to browse though treads and extract nuggets by hand?

simply:
--8<---cut here---start->8---
header part, ending with blank line

optional content part, encoded and delimited or referenced per header info
--8<---cut here---end--->8---


The header part could start with just prefixing GX- like the optional custom
header X- prefix described in mime rfcs, and we could borrow whatever was 
useful.

Tbc.. So called "real life" demands I postpone making a decent real example
'til later, sorry ;/

Please excuse the big top-post. I had intended to comment and edit in line ;/

BTW, I know "info guix|grep -i whatever" often gives clues about whatever, for 
pursuing
"C-s whatever" once inside "info guix whatever", but though concept and api 
indices
are great, they are not a Jargon File, and not as handy for an outsider :)

On +2021-09-05 12:50:56 +0200, Liliana Marie Prikler wrote:
> Hi,
> 
> Am Sonntag, den 05.09.2021, 11:50 +0200 schrieb Bengt Richter:
> > > We don't call things build-inputs here in Guix land, that's a no-no 
> > > :P
> > 
> > Is there an official guix jargon file or glossary file or texi file
> > or wikimedia/wiktionary/wikipedia clone on gnu.org that non-
> > cognoscenti could use to get a clue?
> AFAIK no, you more or less have to go by what the manual tells you.  As
> for why we have native-inputs and not build-inputs like other distros,
> it's because people often misclassify "build" inputs, so the definition
> actually does more harm than good.  Guix knows which files are actually
> "just used for build" by what ends up in the store, with some
> exceptions like UTF-32 encoded strings.
> 
> > Is there a thread that on that topic making any progress on making it
> > happen?
> AFAIK no.
> 
> > when someone in a thread like this offers a candidate official
> > definition, (off-topic sort of, but meta-on-topic for relevant
> > documentation) could it be snip-quoted for easy search and
> > aggregation for maintainers of official definitions and translations?
> > E.g.
> > (or actually borrow some rfc0842 or descendant so an attached file
> > generates a usuable section in mail archives that can be snarfed
> > automatically?)
> > 
> > --8<---cut here---start->8---
> > X-Content-type: Cadidate-guix-jargon-definition
> > Ad lib comment and metacomment ended by blank line ...
> > "> We don't call things build-inputs here in Guix land, that's a no-
> > no :P"
> > 
> > build-propagated-inputs:
> > 
> > --8<---cut here---end--->8---
> When you quote someone like that out-of-context, you run a risk of
> misrepresenting what is actually stated.  What I mean, is that a
> package field called something along the lines of "build-inputs" is
> likely to confuse Guix veterans and newcomers alike, as evidenced by
> the following reply:
> 
> Am Sonntag, den 05.09.2021, 10:06 + schrieb Attila Lendvai:
> > potentially worthless two cents from a newcomer's perspective:
> > 'build-time' and 'run-time' are well established concepts in the
> > wider community.
> And one, that is well misunderstood.  
> 
> > if i were reading 'linked-inputs' in a package definition, i wouldn't
> > associate it to being the set of build-time dependencies.
> That's not what linked-inputs are, though.  Take the following
> paragraph from propagated-inputs:
> 
> > For example this is necessary when packaging a C/C++ library
> > that needs headers of another library to compile, or when a
> > pkg-config file refers to another one via its ‘Requires’
> > field.
> This use case of propagated inputs 

Re: Rethinking propagated inputs?

2021-09-05 Thread Julien Lepiller
All inputs of a package are build-time, whether normal, native or propagated. 
The result may reference some of them, and these references are the run-time 
dependencies.

native-inputs are usually buill-time only, because they are usually programs 
that are run during the build (hence the need for them to be native in a 
cross-build).

propagated-inputs breaks this nice model by making them run-time dependencies 
despite the abscence of a reference.

I think focusing on the name is distracting, but maybe "dependent-inputs", 
since this type of input would only affect the inputs of its dependents?

Le 5 septembre 2021 06:06:02 GMT-04:00, Attila Lendvai  a 
écrit :
>> > What do you think of "build-propagated-inputs"?
>>
>> We don't call things build-inputs here in Guix land, that's a no-no :P
>
>potentially worthless two cents from a newcomer's perspective:
>'build-time' and 'run-time' are well established concepts in the wider
>community.
>
>if i were reading 'linked-inputs' in a package definition, i wouldn't
>associate it to being the set of build-time dependencies.
>
>the best name, from my admittedly uninformed perspective, would be
>`build-time-inputs`.
>
>- attila
>PGP: 5D5F 45C7 DFCD 0A39
>
>


Guix Jargon File (WAS: Rethinking propagated inputs?)

2021-09-05 Thread Liliana Marie Prikler
Hi,

Am Sonntag, den 05.09.2021, 11:50 +0200 schrieb Bengt Richter:
> > We don't call things build-inputs here in Guix land, that's a no-no 
> > :P
> 
> Is there an official guix jargon file or glossary file or texi file
> or wikimedia/wiktionary/wikipedia clone on gnu.org that non-
> cognoscenti could use to get a clue?
AFAIK no, you more or less have to go by what the manual tells you.  As
for why we have native-inputs and not build-inputs like other distros,
it's because people often misclassify "build" inputs, so the definition
actually does more harm than good.  Guix knows which files are actually
"just used for build" by what ends up in the store, with some
exceptions like UTF-32 encoded strings.

> Is there a thread that on that topic making any progress on making it
> happen?
AFAIK no.

> when someone in a thread like this offers a candidate official
> definition, (off-topic sort of, but meta-on-topic for relevant
> documentation) could it be snip-quoted for easy search and
> aggregation for maintainers of official definitions and translations?
> E.g.
> (or actually borrow some rfc0842 or descendant so an attached file
> generates a usuable section in mail archives that can be snarfed
> automatically?)
> 
> --8<---cut here---start->8---
> X-Content-type: Cadidate-guix-jargon-definition
> Ad lib comment and metacomment ended by blank line ...
> "> We don't call things build-inputs here in Guix land, that's a no-
> no :P"
> 
> build-propagated-inputs:
>   
> --8<---cut here---end--->8---
When you quote someone like that out-of-context, you run a risk of
misrepresenting what is actually stated.  What I mean, is that a
package field called something along the lines of "build-inputs" is
likely to confuse Guix veterans and newcomers alike, as evidenced by
the following reply:

Am Sonntag, den 05.09.2021, 10:06 + schrieb Attila Lendvai:
> potentially worthless two cents from a newcomer's perspective:
> 'build-time' and 'run-time' are well established concepts in the
> wider community.
And one, that is well misunderstood.  

> if i were reading 'linked-inputs' in a package definition, i wouldn't
> associate it to being the set of build-time dependencies.
That's not what linked-inputs are, though.  Take the following
paragraph from propagated-inputs:

> For example this is necessary when packaging a C/C++ library
> that needs headers of another library to compile, or when a
> pkg-config file refers to another one via its ‘Requires’
> field.
This use case of propagated inputs explains why they need to be
propagated when given as a (propagated-)input to a package, but not
when given as a native input or merely existing in a profile.

The – required if we go by other systems – use case of installing
libraries system- or user-wide is already discouraged by Guix, for it
is not needed.  As long as we can spawn an environment, in which we can
compile these things, it should be enough.

Note, that this is not equivalent to being a "build-time" dependency. 
Going by Gentoo's definition "Build dependencies are used to specify
any dependencies that are required to unpack, patch, compile, test or
install the package", GCC is a build dependency of nearly any C program
(and a native one at that, i.e. BDEPEND in Gentoo), but it's not a
linked-dependency, because there are numerous ways in which other
programs could use it without ever needing to invoke GCC.  Guix, of
course, includes GCC as an implicit native input anyway, but that's a
different topic.

Regards




Re: Rethinking propagated inputs?

2021-09-05 Thread Attila Lendvai
> > What do you think of "build-propagated-inputs"?
>
> We don't call things build-inputs here in Guix land, that's a no-no :P

potentially worthless two cents from a newcomer's perspective:
'build-time' and 'run-time' are well established concepts in the wider
community.

if i were reading 'linked-inputs' in a package definition, i wouldn't
associate it to being the set of build-time dependencies.

the best name, from my admittedly uninformed perspective, would be
`build-time-inputs`.

- attila
PGP: 5D5F 45C7 DFCD 0A39




Re: Rethinking propagated inputs?

2021-09-05 Thread Bengt Richter
Hi,

On +2021-09-05 09:36:30 +0200, Liliana Marie Prikler wrote:
> Am Samstag, den 04.09.2021, 17:50 -0700 schrieb Sarah Morgensen:
> > Hi Liliana,
> > 
> > (Efraim, I've Cc'd you since you're working on re-doing Rust inputs.)
> > 
> > Liliana Marie Prikler  writes:
> > 
> > > Does anyone have an idea how we should handle propagations for the
> > > sake of pkg-config?  Perhaps we could add "linked-inputs", which
> > > are added when building packages and environments when not using --
> > > ad-hoc, but not when union-building profiles.  WDYT?
> > 
> > I know nothing about pkg-config, but such an input would help
> > simplify things for Go (and I think for Rust) since many inputs need
> > to be propagated only at build-time.
> To be fair, I wasn't not thinking about Go and Rust, which at least on
> the surface appear to have similar propagation semantics.  I do however
> not know whether all currently propagated inputs from those two could
> be reclassified as linked-inputs.  FWIW I don't think (most) Emacs,
> Python or Guile packages work that way, but I do know of at least one
> that would profit from having linked-inputs.
> 
> > What do you think of "build-propagated-inputs"?
> We don't call things build-inputs here in Guix land, that's a no-no :P
>

Is there an official guix  jargon file or glossary file or texi file or
wikimedia/wiktionary/wikipedia clone on gnu.org that non-cognoscenti
could use to get a clue?

Is there a thread that on that topic making any progress on making it
happen?

when someone in a thread like this offers a candidate official definition,
(off-topic sort of, but meta-on-topic for relevant documentation)
could it be snip-quoted for easy search and aggregation for maintainers
of official definitions and translations? E.g.
(or actually borrow some rfc0842 or descendant so an attached file
generates a usuable section in mail archives that can be snarfed automatically?)

--8<---cut here---start->8---
X-Content-type: Cadidate-guix-jargon-definition
Ad lib comment and metacomment ended by blank line ...
"> We don't call things build-inputs here in Guix land, that's a no-no :P"

build-propagated-inputs:

--8<---cut here---end--->8---

> > (A quick search of the ML turned up one previous discussion [0]; does
> > anyone know of others?)
> > 
> > [0] 
> > https://lists.gnu.org/archive/html/guix-devel/2017-02/msg00362.html
> W.r.t. native-inputs, I think native-inputs should propagate
> propagated-inputs, but not linked-inputs.  Makes sense, doesn't it?
> 
> 

-- 
Regards,
Bengt Richter



Re: Rethinking propagated inputs?

2021-09-05 Thread Liliana Marie Prikler
Am Samstag, den 04.09.2021, 17:50 -0700 schrieb Sarah Morgensen:
> Hi Liliana,
> 
> (Efraim, I've Cc'd you since you're working on re-doing Rust inputs.)
> 
> Liliana Marie Prikler  writes:
> 
> > Does anyone have an idea how we should handle propagations for the
> > sake of pkg-config?  Perhaps we could add "linked-inputs", which
> > are added when building packages and environments when not using --
> > ad-hoc, but not when union-building profiles.  WDYT?
> 
> I know nothing about pkg-config, but such an input would help
> simplify things for Go (and I think for Rust) since many inputs need
> to be propagated only at build-time.
To be fair, I wasn't not thinking about Go and Rust, which at least on
the surface appear to have similar propagation semantics.  I do however
not know whether all currently propagated inputs from those two could
be reclassified as linked-inputs.  FWIW I don't think (most) Emacs,
Python or Guile packages work that way, but I do know of at least one
that would profit from having linked-inputs.

> What do you think of "build-propagated-inputs"?
We don't call things build-inputs here in Guix land, that's a no-no :P

> (A quick search of the ML turned up one previous discussion [0]; does
> anyone know of others?)
> 
> [0] 
> https://lists.gnu.org/archive/html/guix-devel/2017-02/msg00362.html
W.r.t. native-inputs, I think native-inputs should propagate
propagated-inputs, but not linked-inputs.  Makes sense, doesn't it?