[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Packaging "single file"
Tanguy Le Carrour
Re: Packaging "single file"
Tue, 5 Nov 2019 14:04:21 +0100
Le 11/04, Jack Hill a écrit :
> On Mon, 4 Nov 2019, Tanguy Le Carrour wrote:
> > I intended to ask this question later, but now that ungoogled-chromium
> > has been superseded by icecat, I find myself stuck!
> > Is it possible to package a single file? The "file" being a bash script or
> > a binary. Is there a package definition I can look into for an example?
> I've had a need to package a bash wrapper around scp, and the module with it
> is below. It it, I use the trivial-build-system, and replaced occurrences of
> commands the script calls with full store paths.
> Does this help?
It's a perfect example! Thanks! I'll do the same for rofi-pass!
> Where are you getting stuck?
I'm stuck with my UI tests! :-(
I was relying on `chromedriver` (packaged with ungoogled-chromium), but now
that it's been deprecated… I'm stuck! ^_^'
`geckodriver` is not packaged with icecat. This is why I wanted to a)
download it or b) package it.
The problem is that a) the version I download does not work (a problem
specific to Guix System, I guess, that would be solved by packaging…
another wild guess) and b) it's a bit of work to package.
But, all of sudden, I wonder if `geckodriver` could not be part of
icecat, like `chromedriver` was part of ungoogled-chromium?!
> (define-module (guix-at-duke packages utils)
> #:use-module (gnu packages bash)
> #:use-module (gnu packages ssh)
> #:use-module (guix build-system trivial)
> #:use-module (guix download)
> #:use-module ((guix licenses) #:prefix license:)
> #:use-module (guix packages))
> (define-public duo-scp
> (name "duo-scp")
> (version "0")
> (method url-fetch)
> (uri "https://gitlab.oit.duke.edu/snippets/82/raw")
> (base32 "1mrf5451cj8010iq76866dli1hxa31rk8i993arf9dfyzws26v2b"))
> (file-name name)))
> (build-system trivial-build-system)
> `(#:modules ((guix build utils))
> (use-modules (guix build utils))
> (let ((source (assoc-ref %build-inputs "source"))
> (ssh (assoc-ref %build-inputs "openssh"))
> (bash (assoc-ref %build-inputs "bash"))
> (script "duo-scp")
> (out (assoc-ref %outputs "out")))
> (copy-file source script)
> (substitute* script
> (("/bin/bash") (string-append bash "/bin/bash"))
> (("scp") (string-append ssh "/bin/scp")))
> (chmod script #o555)
> (install-file script (string-append out "/bin"))))))
> `(("bash" ,bash)
> ("openssh" ,openssh)))
> (home-page "https://gitlab.oit.duke.edu/snippets/82/raw")
> (synopsis "User Duo Passcode with scp and login_duo")
> (description "Wrapper script for scp that prompts for a passcode
> before calling scp. This allows the user to supply a passcode from e.g. a
> to avoid getting a Duo push or phone call when talking to an ssh server that
> the login_duo script for multifactor.")
> (license license:cc0)))
Thanks again for the snippet!