[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Packaging "single file"
From: |
Jack Hill |
Subject: |
Re: Packaging "single file" |
Date: |
Mon, 4 Nov 2019 17:37:23 -0500 (EST) |
User-agent: |
Alpine 2.20 (DEB 67 2015-01-07) |
On Mon, 4 Nov 2019, Tanguy Le Carrour wrote:
Hi Guix!
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? Where are you getting stuck?
Best,
Jack
(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
(package
(name "duo-scp")
(version "0")
(source
(origin
(method url-fetch)
(uri "https://gitlab.oit.duke.edu/snippets/82/raw")
(sha256
(base32 "1mrf5451cj8010iq76866dli1hxa31rk8i993arf9dfyzws26v2b"))
(file-name name)))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder
(begin
(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"))))))
(inputs
`(("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
Yubikey
to avoid getting a Duo push or phone call when talking to an ssh server that
uses
the login_duo script for multifactor.")
(license license:cc0)))