Re: [PATCHv2] lint: add 'source' checker.
Cyril Roelandt skribis: > * guix/scripts/lint.scm (validate-uri?): New procedure. > (%checkers): Add 'home-page' checker ^ Typo. > +(define (check-source package) > + "Emit a warning if PACKAGE has an invalid 'source' field, or if that > +'source' is not reachable." > + (let ((origin (package-source package))) > +(when (and origin > + (eqv? (origin-method origin) url-fetch)) > + (let* ((strings (origin-uri origin)) > + (uris (if (list? strings) > + (map string->uri strings) > + (list (string->uri strings) > + (for-each > + (match-lambda > + ((? uri? uri) > + (validate-uri uri package 'source)) > + (_ (error "internal linter error"))) Just: (for-each (cut validate-uri <> package 'source) ...) > + (concatenate (map (lambda (uri) > + (maybe-expand-mirrors uri %mirrors)) > + uris))) Here: (append-map (cut maybe-expand-mirrors <> %mirrors) uris) OK to push with these changes, thank you! The next step is to improve ‘probe-uri’ to handle FTP. Ludo’.
Re: gobject-introspection typelibs and shared libraries
Federico Beffa skribis: > A different look at aesthetics: Back in the mid '90, when Linux was > still an underground curiosity, many UNIX admins were starting to > install GNU user-land applications. To avoid name clashes with the > vendor versions of programs they were prefixing all GNU applications > with a 'g'. So, the GNU version of 'ls' was named 'gls', 'awk' -> > 'gawk', ... Now on GNU/Linux systems there's no need for such > prefixing and, for consistency and to send a message, you may just > name the C compiler with the traditional name 'cc' which means: Hey, > this is the official system C compiler and of course, it's the GNU > one. Yeah, and I see that GCC installs ‘c++’. If there’s consensus to install the symlink, that’s fine with me (if we take that route, I would also suggest submitting a patch upstream so GCC installs the symlink.) It’s a rebuild-the-world change, though, so it would be for the next ‘core-updates’ cycle. In the meantime, it’s ‘gcc’. WDYT? Thanks, Ludo’.
Re: [PATCH] gnu: Add IPython
Federico Beffa skribis: > From 9e2cf5788e613e28086c4c5430d5820e912ab840 Mon Sep 17 00:00:00 2001 > From: Federico Beffa > Date: Fri, 19 Dec 2014 17:29:39 +0100 > Subject: [PATCH] gnu: Add IPython. > > * gnu/packages/python.scm (python-ipython, python2-ipython): New variable. LGTM, thanks! Ludo’.
Re: [PATCH]: Add CUPS.
Ricardo Wurmus skribis: > From a78114013bdbbff310014815cb47abd38bb0c59c Mon Sep 17 00:00:00 2001 > From: Ricardo Wurmus > Date: Wed, 14 Jan 2015 14:47:37 +0100 > Subject: [PATCH 1/2] gnu: Add IJS > > * gnu/packages/ghostscript.scm (ijs): New variable. [...] > +(define-public ijs > + (package > + (name "ijs") > + (version "9.14.0") > + (source (origin > +(method url-fetch) > +(uri (string-append "mirror://gnu/ghostscript/gnu-ghostscript-" > +version ".tar.xz")) > +(sha256 (base32 > + > "0q4jj41p0qbr4mgcc9q78f5zs8cm1g57wgryhsm2yq4lfslm3ib1" > + (build-system gnu-build-system) > + (native-inputs > +`(("libtool",libtool "bin") > + ("libtool",libtool "out") > + ("automake" ,automake) > + ("autoconf" ,autoconf))) I’m surprised ,(autoconf-wrapper) isn’t needed rather than ,autoconf (the former has shebangs of generated files patched appropriately.) But if it works this way, OK to push. > From 72a50808f1b2d3f391b5da688bfe0b841d95af30 Mon Sep 17 00:00:00 2001 > From: Ricardo Wurmus > Date: Mon, 5 Jan 2015 13:56:51 +0100 > Subject: [PATCH 2/2] gnu: Add CUPS. > > * gnu/packages/cups.scm: New file. > * gnu-system.am (GNU_SYSTEM_MODULES): Add it. LGTM. Thank you! Ludo’.
[PATCH] gnu: Add IPython
Please find attached a patch for ipython. Regards, Fede From 9e2cf5788e613e28086c4c5430d5820e912ab840 Mon Sep 17 00:00:00 2001 From: Federico Beffa Date: Fri, 19 Dec 2014 17:29:39 +0100 Subject: [PATCH] gnu: Add IPython. * gnu/packages/python.scm (python-ipython, python2-ipython): New variable. --- gnu/packages/python.scm | 85 + 1 file changed, 85 insertions(+) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index f81ab69..ad41973 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -2688,3 +2688,88 @@ PNG, PostScript, PDF, and SVG file output.") (define-public python2-cairocffi (package-with-python2 python-cairocffi)) +(define-public python-ipython + (package +(name "python-ipython") +(version "2.3.1") +(source + (origin + (method url-fetch) + (uri (string-append "https://pypi.python.org/packages/source/i/"; + "ipython/ipython-" version ".tar.gz")) + (sha256 + (base32 "1764gi5m3ff481rjk336cw6i2h4zlc0nxam9rc5m8m7yl9m4d61y" +(build-system python-build-system) +(outputs '("out" "doc")) +;; FIXME: add optional dependencies when available: pyzmq, tornado, ... +(inputs + `(("readline" ,readline) + ("python-matplotlib" ,python-matplotlib) + ("python-numpy" ,python-numpy-bootstrap) + ("python-numpydoc" ,python-numpydoc) + ("python-nose" ,python-nose))) +(native-inputs + `(("pkg-config" ,pkg-config) + ("python-sphinx" ,python-sphinx) + ("texlive" ,texlive) + ("texinfo" ,texinfo) + ("python-setuptools" ,python-setuptools))) +(arguments + `(#:phases + (alist-cons-after +'install 'install-doc +(lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((data (string-append (assoc-ref outputs "doc") "/share")) + (doc (string-append data "/doc/" ,name "-" ,version)) + (html (string-append doc "/html")) + (man1 (string-append data "/man/man1")) + (info (string-append data "/info")) + (examples (string-append doc "/examples"))) +(setenv "LANG" "en_US.UTF-8") +(with-directory-excursion "docs" + ;; FIXME: html and pdf fail to build without optional pyzmq + ;(system* "make" "html") + ;(system* "make" "pdf" "PAPER=a4") + (system* "make" "info")) +(copy-recursively "docs/man" man1) +(copy-recursively "examples" examples) +;; (copy-recursively "docs/build/html" html) +;; (copy-file "docs/build/latex/ipython.pdf" +;;(string-append doc "/ipython.pdf")) +(mkdir-p info) +(copy-file "docs/build/texinfo/ipython.info" + (string-append info "/ipython.info")) +(copy-file "COPYING.rst" (string-append doc "/COPYING.rst" +;; Tests can only be run after the library has been installed and not +;; within the source directory. +(alist-cons-after + 'install 'check + (lambda* (#:key outputs #:allow-other-keys) + ;; The test procedure appears to miss the fact that some optional + ;; dependencies are missing. + ;; (with-directory-excursion "/tmp" + ;; (zero? (system* (string-append (assoc-ref outputs "out") + ;; "/bin/iptest" + #t) + (alist-delete + 'check + %standard-phases) +(home-page "http://ipython.org";) +(synopsis "IPython is a tool for interactive computing in Python") +(description + "IPython provides a rich architecture for interactive computing with: +Powerful interactive shells, a browser-based notebook, support for interactive +data visualization, embeddable interpreters and tools for parallel +computing.") +(license bsd-3))) + +(define-public python2-ipython + (let ((ipython (package-with-python2 python-ipython))) +(package (inherit ipython) + ;; Make sure we use custom python2-NAME packages. + (inputs + `(("python2-numpydoc" ,python2-numpydoc) + ("python2-matplotlib" ,python2-matplotlib) + ,@(alist-delete "python-numpydoc" + (alist-delete "python-matplotlib" + (package-inputs ipython -- 1.8.4
Re: Invalid nar signature
On Thu, Jan 15, 2015 at 11:22 AM, Ludovic Courtès wrote: > "Thompson, David" skribis: > >> On Thu, Jan 15, 2015 at 4:51 AM, Ludovic Courtès wrote: >>> (web server http) does not use threads so it should be OK. But we’ll >>> see that afterwards. :-) >> >> Ah, okay. Even so, requiring a single-threaded application in order >> to use compressed/decompressed ports makes hacking on 'guix publish' >> inconvenient, as it eliminates use of the REPL. > > Agreed. We’ll probably need libbz2 bindings at some point. I was about to go down that road last night. ;) - Dave
Re: [PATCH]: Add CUPS.
> It might be clearer and also easier (because all of %standard-phases > would be readily usable) to make ijs a separate package, similar to the > libtool/libltdl split. WDYT? Agreed. I made it a separate package. >> From 8e671fdd888bf9548bf52acf8789500c90d4b072 Mon Sep 17 00:00:00 2001 >> From: Ricardo Wurmus >> Date: Wed, 7 Jan 2015 17:49:00 +0100 >> Subject: [PATCH 1/3] gnu: Add QPDF. >> >> * gnu/packages/pdf.scm (qpdf): New variable. > > LGTM. Thanks, I applied this patch in master. >> From d42e6a3233b7c5142d1c91d8c2b1c751b74bd444 Mon Sep 17 00:00:00 2001 >> From: Ricardo Wurmus >> Date: Mon, 5 Jan 2015 13:56:51 +0100 >> Subject: [PATCH 3/3] gnu: Add CUPS. >> >> * gnu/packages/cups.scm: New file. >> * gnu-system.am (GNU_SYSTEM_MODULES): Add it. > > [...] > >> + "--with-gnu-ld" > > I suspect this is not needed; ./configure should be able to determine it > automatically. > >> + "--disable-static" > > Why? By default we let packages provide both .so and .a files. Okay, removed those two. >> + #:phases >> + (alist-cons-before >> +'configure >> +'patch-target-dirs >> +(lambda _ >> + (let ((out (assoc-ref %outputs "out"))) >> +;; install backends, banners and filters to cups-filters output >> +;; directory, not the cups server directory >> +(substitute* "Makefile.in" >> + (("CUPS_DATADIR = @CUPS_DATADIR@") >> + (string-append "CUPS_DATADIR = " out "/share/cups")) >> + (("pkgcupsserverrootdir = \\$\\(CUPS_SERVERROOT\\)") >> + (string-append "pkgcupsserverrootdir = " out)) >> + (("pkgbackenddir = \\$\\(CUPS_SERVERBIN\\)/backend") >> + (string-append "pkgbackenddir = " >> + out >> + "/backend")) >> + (("pkgfilterdir = \\$\\(CUPS_SERVERBIN\\)/filter") >> + (string-append "pkgfilterdir = " >> + out >> + "/filter") > > Could you make this phase a ‘snippet’, by using a literal “$(prefix)” or > “@prefix” instead of ‘out’? This is now a snippet using $(PREFIX). >> +;; see COPYING for details >> +(license (list license:gpl2 >> + license:gpl2+ >> + license:gpl3 >> + license:gpl3+ >> + license:lgpl2.0+ >> + license:expat > > Could you augment the comment to mention what this license list means? > Each filter has its own license, or something like that? Done. The exact license mapping is a bit complicated, so the comment still isn't quite as helpful as it probably could be. >> +(define-public cups-minimal >> + (package >> +(name "cups-minimal") > > Could you add a comment with the explanation that you gave in this > message as to why it is needed? Done. >> +(define-public cups >> + (package >> +(name "cups") > > I think this should inherit from ‘cups-minimal’, and just change the > ‘name’ and ‘arguments’ fields. WDYT? "cups" now inherits from "cups-minimal". >> +(synopsis "CUPS printing system") > > What about “The Common Unix Printing System”? > >> +(description >> + "CUPS printing system provides a portable printing layer for UNIX® >> +operating systems. It has been developed by Apple Inc. to promote a >> standard >> +printing solution for all UNIX vendors and users. CUPS provides the System >> V >> +and Berkeley command-line interfaces.") > > What about this (based on README.txt): > > CUPS is a printing system that uses the Internet Printing Protocol > (IPP). It provides System V and BSD command-line interfaces, as well > as a Web interface and a C programming interface to manage printers > and print jobs. It supports printing to both local (parallel, serial, > USB) and networked printers, and printers can be shared from one > computer to another. Internally, CUPS uses PostScript Printer > Description (PPD) files to describe printer capabilities and features > and a wide variety of generic and device-specific programs to convert > and print many types of files. I updated both synopsis and description. Attached are the two remaining patches. -- Ricardo >From a78114013bdbbff310014815cb47abd38bb0c59c Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 14 Jan 2015 14:47:37 +0100 Subject: [PATCH 1/2] gnu: Add IJS * gnu/packages/ghostscript.scm (ijs): New variable. --- gnu/packages/ghostscript.scm | 46 1 file changed, 46 insertions(+) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 405b4e7..3100f8a 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2014 Mark H Weaver +;;; Copyright © 2015 Ricardo Wu
Re: Invalid nar signature
"Thompson, David" skribis: > On Thu, Jan 15, 2015 at 4:51 AM, Ludovic Courtès wrote: >> David Thompson skribis: >> >>> Despite that, I tried to compress the nar with bzip2 just for fun, but I >>> ran into another problem: >>> >>> warning: call to primitive-fork while multiple threads are running; >>>further behavior unspecified. See "Processes" in the >>>manual, for more information. >>> >>> I'm running a REPL server in addition to the web server, but I imagine >>> the web server also spawns additional threads to handle requests, so >>> either way 'filtered-output-port' won't work here. >> >> (web server http) does not use threads so it should be OK. But we’ll >> see that afterwards. :-) > > Ah, okay. Even so, requiring a single-threaded application in order > to use compressed/decompressed ports makes hacking on 'guix publish' > inconvenient, as it eliminates use of the REPL. Agreed. We’ll probably need libbz2 bindings at some point. Ludo’.
Re: Invalid nar signature
On Thu, Jan 15, 2015 at 4:51 AM, Ludovic Courtès wrote: > David Thompson skribis: > >> Despite that, I tried to compress the nar with bzip2 just for fun, but I >> ran into another problem: >> >> warning: call to primitive-fork while multiple threads are running; >>further behavior unspecified. See "Processes" in the >>manual, for more information. >> >> I'm running a REPL server in addition to the web server, but I imagine >> the web server also spawns additional threads to handle requests, so >> either way 'filtered-output-port' won't work here. > > (web server http) does not use threads so it should be OK. But we’ll > see that afterwards. :-) Ah, okay. Even so, requiring a single-threaded application in order to use compressed/decompressed ports makes hacking on 'guix publish' inconvenient, as it eliminates use of the REPL. But sure, we'll deal with this afterwards. - Dave
Re: [PATCH] gnu: Add ninja.
Mark H Weaver writes: > l...@gnu.org (Ludovic Courtès) writes: > >> 宋文武 skribis: >> >>> * gnu/packages/ninja.scm: New file. >>> * gnu-system.am (GNU_SYSTEM_MODULES): Add it. >> >> [...] >> >>> + 'check >>> + (lambda _ >>> +(and (zero? (system "./configure.py")) >>> + (zero? (system "./ninja ninja_test")) >>> + ;; SubprocessTest.InterruptChild fail when using >>> 'system*'. >>> + ;; SubprocessTest.SetWithLots was skipped. >>> + ;; XXX: Raise [ulimit -n] well above 1025 to make this >>> test go. >> >> Does it mean that the test is currently failing? > > This test failed during the core-updates x86_64 build on Hydra. We get: > > [166/183] SubprocessTest.InterruptChild > *** Failure in src/subprocess_test.cc:83 > ExitInterrupted == subproc->Finish() > > In the hopes that it might be a transient failure, I restarted the > build, but the second time it failed in the same place. See: > > http://hydra.gnu.org/build/201077/nixlog/1/raw > http://hydra.gnu.org/build/201077/nixlog/2/raw > > It seems that using 'system' instead of 'system*' wasn't enough to make > it work reliably. Can you take another look? OK, I pushed a patch to disable the test. > > Thanks for your contributions! > > Mark
Re: Invalid nar signature
David Thompson skribis: > Ludovic Courtès writes: [...] >> 2. strace the substituter and/or ‘guix publish’ to see exactly what >> happens on the wire. Is the end-of-file marker string sent? Is it >> received? etc. > > Here's a snippet of the strace output: > > > http://192.168.1.157/.../iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0 > 94.1% of 127.5 KiB) = 104 > read(10, "vector tox-max-status-message-le"..., 7728) = 117 > read(10, ""..., 7611) = 1448 > read(10, "t-last-online (unwrap-tox tox) f"..., 6163) = 1448 > read(10, "tox tox) nospam))\n\n(define/unwra"..., 4715) = 1448 > read(10, " friend-number group-number)))\n\n"..., 3267) = 1448 > read(10, ")))\n(if (negative? result)\n "..., 1819) = 1819 > > http://192.168.1.157/.../iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0 > 100.0% of 127.5 KiB) = 104 > > http://192.168.1.157/.../iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0 > 100.0% of 127.5 KiB) = 104 > brk(0x41875000) = 0x41875000 > mmap(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) > = 0x7f3d2aaaf000 > mremap(0x7f3d2aaaf000, 135168, 266240, MREMAP_MAYMOVE) = 0x7f3d2aa6e000 > mremap(0x7f3d2aa6e000, 266240, 528384, MREMAP_MAYMOVE) = 0x7f3d2a9ed000 > mremap(0x7f3d2a9ed000, 528384, 430080, MREMAP_MAYMOVE) = 0x7f3d2a9ed000 > munmap(0x7f3d2a9ed000, 430080) = 0 > > http://192.168.1.157/.../iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0 > 100.0% of 127.5 KiB) = 104 > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en_US.UTF-8/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en_US.utf8/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en_US/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en.UTF-8/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en.utf8/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > > open("/gnu/store/72qm7kc9phvsiw6j7xgn1ii0f6s9mx8i-guix-0.8.3b09332/share/locale/en/LC_MESSAGES/guix.mo", > O_RDONLY) = -1 ENOENT (No such file or directory) > write(2, "guix substitute-binary: error: i"..., 62guix substitute-binary: > error: invalid nar end-of-file marker > ) = 62 > exit_group(1) = ? > +++ exited with 1 +++ Normally, when the error happens, the substituter has already created at least one file in the target directory, /gnu/store/iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0. Could you apply the patch below, and then run: rm -rf foo ./pre-inst-env guix substitute-binary --substitute \ /gnu/store/iw3jn6a1avv78pp5v2cv42vyh0d8zi0g-guile-toxcore-0.1-6a9fbe0 \ $PWD/foo > stdout ls -lRa foo > ls-R and then send ‘stdout’ and ‘ls-R’? Could you also check if the files in ‘foo’ look corrupt or anything? diff --git a/guix/serialization.scm b/guix/serialization.scm index 64eacf9..d3bdea3 100644 --- a/guix/serialization.scm +++ b/guix/serialization.scm @@ -292,19 +292,21 @@ Restore it as FILE." (define (read-eof-marker) (match (read-string port) (")" #t) -(x (raise +(x + (pk 'bad-eof x) + (raise (condition (&message (message "invalid nar end-of-file marker")) (&nar-read-error (port port) (file file) (token x))) (match (list (read-string port) (read-string port) (read-string port)) (("(" "type" "regular") - (call-with-output-file file (cut read-contents port <>)) + (call-with-output-file (pk 'reg file) (cut read-contents port <>)) (read-eof-marker)) (("(" "type" "symlink") (match (list (read-string port) (read-string port)) (("target" target) - (symlink target file) + (symlink target (pk 'symlink file)) (read-eof-marker)) (x (raise (condition @@ -312,7 +314,7 @@ Restore it as FILE." (&nar-read-error (port port) (file file) (token x))) (("(" "type" "directory") (let ((dir file)) - (mkdir dir) + (mkdir (pk 'dir dir)) (let loop ((prefix (read-string port))) (match prefix ("entry" > Despite that, I tried to compress the nar with bzip2 just for fun, but I > ran into another problem: > > warning: call to primitive-fork while multiple threads are running; >further behavior unspecified. See "Processes" in the >manual, fo
Re: gobject-introspection typelibs and shared libraries
On Wed, Jan 14, 2015 at 9:43 PM, Ludovic Courtès wrote: >>> So far we’ve resisted the temptation, and it’s rarely been an issue. >>> :-) >> >> Could you elaborate on the down sides? (I'm not trying to insist, but to >> learn.) > > Basically it’s good to stick to what GCC does, and GCC does not install > ‘cc’. There’s a subjective aesthetic downside: it’s good to spread the > ‘g’. And also, it turns out to work for 99% of the packages. OK, I thought you were referring to technical reasons... A different look at aesthetics: Back in the mid '90, when Linux was still an underground curiosity, many UNIX admins were starting to install GNU user-land applications. To avoid name clashes with the vendor versions of programs they were prefixing all GNU applications with a 'g'. So, the GNU version of 'ls' was named 'gls', 'awk' -> 'gawk', ... Now on GNU/Linux systems there's no need for such prefixing and, for consistency and to send a message, you may just name the C compiler with the traditional name 'cc' which means: Hey, this is the official system C compiler and of course, it's the GNU one. Regards, Fede
Re: wip-gobject-introspection
On Wed, Jan 14, 2015 at 9:51 PM, Ludovic Courtès wrote: > Given that core-updates will soon be fully built (hopefully within 24h) > and ready to be merged, I would prefer to wait until that is done, and > then rebase wip-gobject-introspection on it and get it built. > > How does that sound? Sounds good to me. Just be warned that there may be other packages to update/adjust. Regards, Fede