On 29 June 2017 at 17:44, Ludovic Courtès <l...@gnu.org> wrote: > Hi Dmitry, > > Dmitry Nikolaev <camelthe...@gmail.com> skribis: > > > I want to apply Reiser4 patch for my Linux > > > > https://reiser4.wiki.kernel.org/index.php/Main_Page > > https://sourceforge.net/projects/reiser4/files/ > reiser4-for-linux-4.x/reiser4-for-4.11.0.patch.gz > > > > But all code examples in guix repository use code like this > > > > (patches (search-patches "somepackage-CVE-fix.patch")) > > > > which uses patches from /gnu/packages/aux-files > > > > What code should I write in package definition to download file, unzip it > > and apply patch? > > You can do: > > (patches (list (origin > (method url-fetch) > (uri …) > (sha256 …)))) > > There are a few instances of this pattern I think. > > I think it won’t handle gzip though. So perhaps you need something like > this (untested): > > (patches (list (computed-file "reiser4.patch" > (let ((compressed (origin …))) > #~(system > (string-append #+(file-append gzip > "/bin/gunzip") > " < " #$compressed > " > " #$output)))))) > > Note that you need the (guix gexp) module for this to work. >
Thanks Ludo. It helps. Here is final code. (patches (list (computed-file "reiser4-for-4.11.0.patch" (let ((compressed (origin (method url-fetch) (uri " https://downloads.sourceforge.net/project/reiser4/reiser4-for-linux-4.x/reiser4-for-4.11.0.patch.gz ") (sha256 (base32 "1qc421bqassrxv7z5pzsnwsf9d5pz0azm96rykxh02xlrf8ig3hc"))))) #~(system (string-append #+(file-append gzip "/bin/gunzip") " < " #$compressed " > " #$output)))))))) I know I should reuse "reiser4-for-4.11.0.patch" as variable, but I still lack Lisp knowledge. Camel