unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: iyzsong@member.fsf.org (宋文武)
To: Ekaitz Zarraga <ekaitz@elenq.tech>
Cc: "41294@debbugs.gnu.org" <41294@debbugs.gnu.org>
Subject: [bug#41294] [PATCH] gnu: Add libfreenect.
Date: Sun, 17 May 2020 09:56:43 +0800	[thread overview]
Message-ID: <87wo5b1fz8.fsf@member.fsf.org> (raw)
In-Reply-To: <anygGLcrTLR-L_lbGpsSCRwfeCxVv7GdmryjPmzGc1M7AxdMInuEmimpAI_u3lst7LBl-xg4LHJBqOi1gYLiRyUJX8_kw0F9RcI723VUjQU=@elenq.tech> (Ekaitz Zarraga's message of "Sat, 16 May 2020 10:18:26 +0000")

Ekaitz Zarraga <ekaitz@elenq.tech> writes:

> Hi,
>
> On Saturday, May 16, 2020 5:48 AM, <iyzsong@member.fsf.org> 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...




      parent reply	other threads:[~2020-05-17  1:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-15 21:47 [bug#41294] [PATCH] gnu: Add libfreenect Ekaitz Zarraga
2020-05-15 23:09 ` [bug#41294] [PATCH] gnu: libfreenect: Correct native-inputs vs inputs Ekaitz Zarraga
2020-05-16  3:48 ` [bug#41294] [PATCH] gnu: Add libfreenect 宋文武
2020-05-16 10:18   ` Ekaitz Zarraga
2020-05-16 13:06     ` Ekaitz Zarraga
2020-05-16 13:28       ` Ekaitz Zarraga
2020-05-17  2:15       ` 宋文武
2020-05-17  9:37         ` Ekaitz Zarraga
2020-05-17 12:15           ` Ekaitz Zarraga
2020-05-19 13:26             ` 宋文武
2020-05-19 13:42               ` Ekaitz Zarraga
2020-05-19 13:52                 ` Ekaitz Zarraga
2020-05-20 13:33                   ` 宋文武
2020-05-20 16:37                     ` Ekaitz Zarraga
2020-05-21 11:38                       ` bug#41294: " 宋文武
2020-05-21 11:40                         ` [bug#41294] " Ekaitz Zarraga
2020-05-17  1:56     ` 宋文武 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87wo5b1fz8.fsf@member.fsf.org \
    --to=iyzsong@member.fsf.org \
    --cc=41294@debbugs.gnu.org \
    --cc=ekaitz@elenq.tech \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).