[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Parameterized packages
From: |
zimoun |
Subject: |
Re: Parameterized packages |
Date: |
Tue, 21 Jan 2020 13:15:03 +0100 |
Hi,
Thank you for the explanations.
On Mon, 20 Jan 2020 at 19:57, Pierre Neidhardt <address@hidden> 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
- Re: Build systems and implicit inputs, (continued)
- Re: Parameterized packages, Ludovic Courtès, 2020/01/19
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/20
- Re: Parameterized packages, zimoun, 2020/01/20
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/20
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/20
- Re: Parameterized packages, ison, 2020/01/20
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/21
- Re: Parameterized packages, Ludovic Courtès, 2020/01/21
- Re: Parameterized packages,
zimoun <=
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/21
- Re: Parameterized packages, zimoun, 2020/01/21
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/22
- Re: Parameterized packages, zimoun, 2020/01/22
- Re: Parameterized packages, ison, 2020/01/24
- Re: Parameterized packages, zimoun, 2020/01/26
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/27
- Re: Parameterized packages, zimoun, 2020/01/27
- Re: Parameterized packages, Pierre Neidhardt, 2020/01/27
- Re: Parameterized packages, zimoun, 2020/01/27