guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#41294] [PATCH] gnu: Add libfreenect.


From: 宋文武
Subject: [bug#41294] [PATCH] gnu: Add libfreenect.
Date: Sun, 17 May 2020 09:56:43 +0800
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux)

Ekaitz Zarraga <address@hidden> writes:

> Hi,
>
> On Saturday, May 16, 2020 5:48 AM, <address@hidden> wrote:
>
>> We generally try to enable all optional features when adding a package,
>> I'd go with:
>>
>> 1.  Build the python bindings by default.
>> 2.  Try seperate the python bindings into another output. (eg: newt)
>> 3.  If 1 and 2 seems difficult, try add a seperate package for the
>>     python bindings, and it better only contains the bindings, reuse the
>>     original package as input. (eg: python-libxml2)
>>
>> 4.  If not feel lucky, just leave a TODO comment for it...
>>
>
> I don't really like the first because it forces you to add a python 
> interpreter that is not needed otherwise.
> 2 and 3 sound good to me.
Sure, to me both are acceptable.

> It can handle both python2 and 3. What would you do with that?
> Maybe make option 3 and add two outputs to that with python2 and python3? Or 
> two different packages?
> (or just forget the python2?)

Unless there is a need for the python2 bindings, we should forget it, as
Python 2 is end-of-life.

>
>>
>> > - The package is 300 megs checking `guix size` that's because it
>> > has some testing binaries that have extra dependencies. If only
>> > the library is compiled it doesn't depend on GLUT and that reduces
>> > the size a lot. I tried to separate the package's outputs but I
>> > don't know how to do it correctly (I checked the docs but it
>> > doesn't go in detail). I'd like to do it but I need some help.
>>
>> To define a packages with multiple outputs:
>>
>> -   Decide what ‘outputs’ can be made, eg: ‘doc’, ‘bin’, ‘examples’,
>>     etc. In this case, I’d add an ‘examples’ output, to put those
>>     ‘freenect-*’ binaries, built from the “examples” directory.
>>
>> -   Add an ‘outputs’ field, it default to ‘(list "out")’, We’d use
>>     ‘(outputs '("out" "examples")’.
>>
>> -   Modify the install flags or phases to get files into their output
>>     directory. Sometimes we can configure the target directory by flags,
>>     but usually we have to move the files around after the install phase…
>>
>>     You can see ‘newt’ in ‘gnu/packages/slang.scm’ for a example.
>
> Great! Thank you. That's more or less what I understood from some code
> examples I checked but they were complex and I tried to make the same
> thing and didn't work for me. I'll give it a new try with this
> example.
>
> Inputs can also be defined with an extra argument for different outputs, 
> right? It should be something like:
>
> `(inputs `("freeglut" ,freeglut "examples"))
>
> Am I right?

Inputs are used (not defined) here, the code you wrote:

- Need a freeglut package, which should contain a "examples" output.

- In the build environment of this package, a "freeglut" input is
  available, and its path is store path of the "examples" output of that
  freeglut package.  freeglut's "out" output is not available here.

> Nope!

> I've been digging and I got this wrong. The third part in the tuple is the 
> output of the dependency.
> So there's no way to indicate which dependencies are needed for each output.
Yes, the dependencies of outputs are scanned after the build results,
not before.  This works by searching  '/gnu/store' paths in all files
from the output's store path.


> I also found a flag to compile OpenCV wrappers, which depends on OpenCV. 
> OpenCV is huge and it's going to be downloaded regardless if its output is 
> used or not. Best choice here seems to be to separate the package in multiple 
> sub-packages.
If in the same package (multiple outputs), all inputs are needed when
build a package, but not all dependencies are needed when install a
output by binary substitutes.


> I made this with the examples (see below), how does it look?
> [...]
Will reply to in that email...





reply via email to

[Prev in Thread] Current Thread [Next in Thread]