From: zimoun <zimon.toutoune@gmail.com>
To: Pierre Neidhardt <mail@ambrevar.xyz>
Cc: Guix Devel <guix-devel@gnu.org>
Subject: Re: Parameterized packages
Date: Tue, 21 Jan 2020 13:15:03 +0100 [thread overview]
Message-ID: <CAJ3okZ1VsYDaBj_Uqwe28VPR1npjZpRech990Q+LKaGE+6xmXw@mail.gmail.com> (raw)
In-Reply-To: <875zh6rm5h.fsf@ambrevar.xyz>
Hi,
Thank you for the explanations.
On Mon, 20 Jan 2020 at 19:57, Pierre Neidhardt <mail@ambrevar.xyz> wrote:
> > The solution of 2. and 3. seems to write, as Ludo mentioned:
> >
> > --8<---------------cut here---------------start------------->8---
> > (define (make-me-a-package option1 option2)
> > (package
> > …))
> > --8<---------------cut here---------------end--------------->8---
>
> The ellipsis is a bit vague here. What is this trying to do?
What you wrote below. :-)
> --8<---------------cut here---------------start------------->8---
> (define-public you-get
> (package
> (name "you-get")
> (version "0.4.1355")
> (PARAMETERS VIDEO-PLAYER PYTHON-VERSION WITH-FFMPEG)
> (source (origin
> (method git-fetch)
> (uri (git-reference
> (url "https://github.com/soimort/you-get.git")
> (commit (string-append "v" version))))
> (file-name (git-file-name name version))
> (sha256
> (base32
> "0xq7z04hvw3b3npiahlpzhbxsjvam9n9dynplyrkn84dx6k9ajbj"))))
> (build-system python-build-system)
> (inputs
> `(("PLAYER" ,(DEREF-PARAM VIDEO-PLAYER))
> ,@(IF (DEREF-PARAM WITH-FFMPEG)
> ;; FOR MULTI-PART AND >=1080P VIDEOS
> `("FFMPEG" ,FFMPEG)
> '())))
> (arguments
> `(#:PYTHON ,(DEREF-PARAM PYTHON-VERSION)
> #:phases
> (modify-phases %standard-phases
> ,(WHEN (DEREF-PARAM WITH-FFMPEG)
> (add-after 'unpack 'qualify-input-references
> ;; Explicitly invoke the input ffmpeg, instead of whichever one
> ;; happens to be in the user's $PATH at run time.
> (lambda* (#:key inputs #:allow-other-keys)
> (let ((ffmpeg (string-append (assoc-ref inputs "ffmpeg")
> "/bin/ffmpeg")))
> (substitute* "src/you_get/processor/ffmpeg.py"
> ;; Don't blindly replace all occurrences of ‘'ffmpeg'’: the
> ;; same string is also used when sniffing ffmpeg's output.
> (("(FFMPEG == |\\()'ffmpeg'" _ prefix)
> (string-append prefix "'" ffmpeg "'")))
> #t))))
> (ADD-AFTER 'UNPACK 'TWEAK-PLAYER-SETTINGS
> (LAMBDA* (#:KEY INPUTS #:ALLOW-OTHER-KEYS)
> (MATCH ,(DEREF-PARAM VIDEO-PLAYER)
> (VLC
> ;; DO SOMETHING WITH VLC.
> )
> (MPV
> ;; DO SOMETHING WITH MPV.
> )
> (_
> ;; ERROR OUT?
> )))))
> #:tests? #f)) ; XXX some tests need Internet access
> (synopsis "Download videos, audio, or images from Web sites")
> (description
> "You-Get is a command-line utility to download media contents (videos,
> audio, images) from the Web. It can use either mpv or vlc for playback.")
> (home-page "https://you-get.org/")
> (license license:expat)))
> --8<---------------cut here---------------end--------------->8---
>
> In the above I've highlighted the changes in uppercase.
Welcome in a big and unmaintainable mess! :-)
And my opinion is that you described is already possible (more or
less) using 'inherit'. Except the modification of the compiling
options (build-system).
> On line (PARAMETERS ...) I've declared which parameters I'm going to use
> in my package declaration. Those parameters must be defined globally
> somewhere in Guix.
This will end up with a big and unmaintainable mess, IMHO.
> The point of declaring the parameters in advance is that it allows the
> user to list all parameters used by a given package.
I bet that the number of broken packages will increase.
> - To let the user choose which video player to use. This is a popular
> USE flag on Gentoo (maybe with a different name).
What I do not understand is: people who used Gentoo and especially USE
flag are saying that it ends with a big mess with broken packages.
Therefore, why does Guix want to reproduce the mess?
All the best,
simon
next prev parent reply other threads:[~2020-01-21 12:15 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-14 11:54 Parameterized packages Ludovic Courtès
2019-05-14 15:17 ` Tobias Geerinckx-Rice
2019-05-17 14:23 ` Pierre Neidhardt
2019-05-17 18:15 ` Mark H Weaver
2019-07-19 5:41 ` Chris Marusich
2019-07-19 20:29 ` ison
2020-01-02 19:23 ` Pierre Neidhardt
2020-01-09 11:10 ` Pierre Neidhardt
2020-01-09 23:13 ` Marius Bakke
2020-01-10 12:29 ` Pierre Neidhardt
2020-01-10 16:19 ` Ludovic Courtès
2020-01-11 11:31 ` Pierre Neidhardt
2020-01-14 15:05 ` zimoun
2020-01-15 9:40 ` Pierre Neidhardt
2020-01-15 11:30 ` zimoun
2020-01-15 11:51 ` Pierre Neidhardt
2020-01-15 13:54 ` zimoun
2020-01-16 19:06 ` ison
2020-01-16 20:55 ` Ricardo Wurmus
2020-01-17 16:34 ` Pierre Neidhardt
2020-01-17 9:15 ` L p R n d n
2020-01-17 16:46 ` Pierre Neidhardt
2020-01-17 15:53 ` zimoun
2020-01-17 16:56 ` Pierre Neidhardt
2020-01-20 14:34 ` zimoun
2020-01-21 10:56 ` Build systems and implicit inputs Ludovic Courtès
2020-01-21 12:24 ` zimoun
2020-01-21 13:07 ` Pierre Neidhardt
2020-01-21 18:02 ` zimoun
2020-01-19 20:34 ` Parameterized packages Ludovic Courtès
2020-01-20 9:08 ` Pierre Neidhardt
2020-01-20 14:50 ` zimoun
2020-01-20 18:57 ` Pierre Neidhardt
2020-01-20 19:07 ` Pierre Neidhardt
2020-01-20 22:57 ` ison
2020-01-21 10:09 ` Pierre Neidhardt
2020-01-21 10:49 ` Ludovic Courtès
2020-01-21 12:15 ` zimoun [this message]
2020-01-21 13:13 ` Pierre Neidhardt
2020-01-21 19:04 ` zimoun
2020-01-22 9:54 ` Pierre Neidhardt
2020-01-22 12:23 ` zimoun
2020-01-24 21:56 ` ison
2020-01-26 19:35 ` zimoun
2020-01-27 10:13 ` Pierre Neidhardt
2020-01-27 11:23 ` zimoun
2020-01-27 11:50 ` Pierre Neidhardt
2020-01-27 12:34 ` zimoun
2020-01-27 10:04 ` Pierre Neidhardt
2020-01-25 18:52 ` John Soo
2020-01-27 10:17 ` Pierre Neidhardt
2020-01-20 14:12 ` zimoun
2020-01-17 16:31 ` Pierre Neidhardt
[not found] ` <875zhbvzfz.fsf@guixSD.i-did-not-set--mail-host-address--so-tickle-me>
2020-01-17 16:41 ` Pierre Neidhardt
2020-01-19 20:30 ` Ludovic Courtès
2020-01-15 11:43 ` Pierre Neidhardt
2020-01-15 11:44 ` Pierre Neidhardt
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAJ3okZ1VsYDaBj_Uqwe28VPR1npjZpRech990Q+LKaGE+6xmXw@mail.gmail.com \
--to=zimon.toutoune@gmail.com \
--cc=guix-devel@gnu.org \
--cc=mail@ambrevar.xyz \
/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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.