Patchwork gnu: Add libdispatch.

login
register
mail settings
Submitter non such
Date Sept. 16, 2016, 10:50 a.m.
Message ID <87poo4m84e.fsf@we.make.ritual.n0.is>
Download mbox | patch
Permalink /patch/15687/
State New
Headers show

Comments

non such - Sept. 16, 2016, 10:50 a.m.
Hi,

this adds libdispatch and its dependencies, needed for the newer version
of nvidia-texture-tools, a dependency I want to unbundle from the source
of 0ad.
Leo Famulari - Oct. 2, 2016, 12:39 a.m.
On Fri, Sep 16, 2016 at 10:50:09AM +0000, ng0 wrote:
> Subject: [PATCH 1/4] gnu: Add libkqueue.
> 
> * gnu/local.mk: Include gnu/packages/libdispatch.scm .
> * gnu/packages/libdispatch.scm: Add new file.
> * gnu/packages/libdispatch.scm (libkqueue): New variable.

LGTM

> Subject: [PATCH 2/4] gnu: Add libpthread_workqueue.
> 
> * gnu/packages/libdispatch.scm (libpthread_workqueue): New variable.

> +    (version "0.9.1")

0.9.2 is available upstream:
https://github.com/mheily/libpwq/releases

Can you try using that?

> Subject: [PATCH 3/4] gnu: Add libblocks-runtime.
> 
> * gnu/packages/libdispatch.scm (libblocks-runtime): New variable.

> +         (add-after 'unpack 'autogen
> +           (lambda _
> +             (zero? (system* "autoreconf" "--install" "--symlink" "--verbose")))))))

Why use --symlink?

> Subject: [PATCH 4/4] gnu: Add libdispatch.
> 
> * gnu/packages/libdispatch.scm (libdispatch): New variable.

> +    (arguments
> +     `(#:tests? #f))

The tests can be run with `ctest` [0].

The test suite can be built by setting "-DDISPATCH_ENABLE_TEST_SUITE=1"
in #:configure-flags. However, when I tried that, the build log included
"No compiler support for Blocks; test suite will not be built.", and the
tests were indeed not built.

Does that mean that libblocks-runtime is not working?

Also, the libdispatch tarball bundles Click [0] at 'thirdparty/click'. We
should remove that and use our Click package.

[0]
https://github.com/nickhutchinson/libdispatch#testing-with-ctest

[1]
http://click.pocoo.org/5/
ng0 - Oct. 3, 2016, 11:57 a.m.
Hi,

Thanks for reviewing.

Leo Famulari <leo@famulari.name> writes:

> [ Unknown signature status ]
> On Fri, Sep 16, 2016 at 10:50:09AM +0000, ng0 wrote:
>> Subject: [PATCH 1/4] gnu: Add libkqueue.
>> 
>> * gnu/local.mk: Include gnu/packages/libdispatch.scm .
>> * gnu/packages/libdispatch.scm: Add new file.
>> * gnu/packages/libdispatch.scm (libkqueue): New variable.
>
> LGTM
>
>> Subject: [PATCH 2/4] gnu: Add libpthread_workqueue.
>> 
>> * gnu/packages/libdispatch.scm (libpthread_workqueue): New variable.
>
>> +    (version "0.9.1")
>
> 0.9.2 is available upstream:
> https://github.com/mheily/libpwq/releases
>
> Can you try using that?

Okay, will try it in the couple of next weeks.

>> Subject: [PATCH 3/4] gnu: Add libblocks-runtime.
>> 
>> * gnu/packages/libdispatch.scm (libblocks-runtime): New variable.
>
>> +         (add-after 'unpack 'autogen
>> +           (lambda _
>> +             (zero? (system* "autoreconf" "--install" "--symlink" "--verbose")))))))
>
> Why use --symlink?

I think, though I'm not sure currently as I can't keep all the
unimportant details of packages in memory all the time, that if you
don't provide --symlink they are statically linked.

>> Subject: [PATCH 4/4] gnu: Add libdispatch.
>> 
>> * gnu/packages/libdispatch.scm (libdispatch): New variable.
>
>> +    (arguments
>> +     `(#:tests? #f))
>
> The tests can be run with `ctest` [0].
>
> The test suite can be built by setting "-DDISPATCH_ENABLE_TEST_SUITE=1"
> in #:configure-flags. However, when I tried that, the build log included
> "No compiler support for Blocks; test suite will not be built.", and the
> tests were indeed not built.
>
> Does that mean that libblocks-runtime is not working?

I think either Debian or Gentoo (if not portage, then gpo.zugaina.org)
had more on this. It should work.

> Also, the libdispatch tarball bundles Click [0] at 'thirdparty/click'. We
> should remove that and use our Click package.
>
> [0]
> https://github.com/nickhutchinson/libdispatch#testing-with-ctest
>
> [1]
> http://click.pocoo.org/5/

I will focus on gnunet-service and psyced-service this month.
Thanks for pointing out what you found. I can't address this
immediately, could be that there'll be a delay until I'm finished with
both services.
non such - Oct. 28, 2016, 11:23 a.m.
Leo Famulari <leo@famulari.name> writes:

> On Fri, Sep 16, 2016 at 10:50:09AM +0000, ng0 wrote:
>> Subject: [PATCH 1/4] gnu: Add libkqueue.
>> 
>> * gnu/local.mk: Include gnu/packages/libdispatch.scm .
>> * gnu/packages/libdispatch.scm: Add new file.
>> * gnu/packages/libdispatch.scm (libkqueue): New variable.
>
> LGTM
>
>> Subject: [PATCH 2/4] gnu: Add libpthread_workqueue.
>> 
>> * gnu/packages/libdispatch.scm (libpthread_workqueue): New variable.
>
>> +    (version "0.9.1")
>
> 0.9.2 is available upstream:
> https://github.com/mheily/libpwq/releases
>
> Can you try using that?

Ok

>> Subject: [PATCH 3/4] gnu: Add libblocks-runtime.
>> 
>> * gnu/packages/libdispatch.scm (libblocks-runtime): New variable.
>
>> +         (add-after 'unpack 'autogen
>> +           (lambda _
>> +             (zero? (system* "autoreconf" "--install" "--symlink" "--verbose")))))))
>
> Why use --symlink?

I have no idea why I did this. I'll remove it in the new version
of the patches.

>> Subject: [PATCH 4/4] gnu: Add libdispatch.
>> 
>> * gnu/packages/libdispatch.scm (libdispatch): New variable.
>
>> +    (arguments
>> +     `(#:tests? #f))
>
> The tests can be run with `ctest` [0].
>
> The test suite can be built by setting "-DDISPATCH_ENABLE_TEST_SUITE=1"
> in #:configure-flags. However, when I tried that, the build log included
> "No compiler support for Blocks; test suite will not be built.", and the
> tests were indeed not built.
>
> Does that mean that libblocks-runtime is not working?

An ebuild for this package contains this:

src_install() {
         multilib_foreach_abi ustr_install install-multilib-linux
         #TODO this is redundant and stupid, why does libdispatch need this file
         cp "${S}/BlocksRuntime/Block_private.h" "${ED}/usr/include" || die
#        dodoc ChangeLog README README-DEVELOPERS AUTHORS NEWS TODO
}

( source: https://data.gpo.zugaina.org/netcrave/dev-libs/libblocksruntime/libblocksruntime-9999.ebuild )

Maybe Blocks_private.h is expected in that location but not
copied by upstream. I will take a look once the test suite runs.
This is libblocksruntime, not libdispatch but I think I packaged
that as dependency for libdispatch.

> Also, the libdispatch tarball bundles Click [0] at 'thirdparty/click'. We
> should remove that and use our Click package.

Ok

> [0]
> https://github.com/nickhutchinson/libdispatch#testing-with-ctest
>
> [1]
> http://click.pocoo.org/5/
>

Patch

From 26970808912e08a65915dc17e037247c6ccfbd6c Mon Sep 17 00:00:00 2001
From: ng0 <ng0@we.make.ritual.n0.is>
Date: Fri, 16 Sep 2016 10:42:26 +0000
Subject: [PATCH 4/4] gnu: Add libdispatch.

* gnu/packages/libdispatch.scm (libdispatch): New variable.
---
 gnu/packages/libdispatch.scm | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/gnu/packages/libdispatch.scm b/gnu/packages/libdispatch.scm
index dae3857..1bfa440 100644
--- a/gnu/packages/libdispatch.scm
+++ b/gnu/packages/libdispatch.scm
@@ -22,10 +22,12 @@ 
   #:use-module (guix packages)
   #:use-module (guix download)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system cmake)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages llvm)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages ruby))
 
 (define-public libkqueue
@@ -126,3 +128,35 @@  languages developed by Apple to support the Grand Central Dispatch
 concurrency engine.")
     (synopsis "Blocks Runtime")
     (license (list license:ncsa license:expat))))
+
+(define-public libdispatch
+  (package
+    (name "libdispatch")
+    (version "0.1.3.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/nickhutchinson/"
+                                  "libdispatch/archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "17iwnfs68spg9nv6lgnglgjx11id8amy2a5ajjvqfm0mm95agnma"))))
+    (native-inputs
+     `(("python-2" ,python-2)))
+    (inputs
+     `(("libpthread_workqueue" ,libpthread_workqueue)
+       ("libkqueue" ,libkqueue)
+       ("libblocks-runtime" ,libblocks-runtime)))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f))
+    (home-page "http://nickhutchinson.me/libdispatch/")
+    (synopsis "GNU-linux port of Apple's concurrency library")
+    (description
+     "libdispatch, aka Grand Central Dispatch (GCD) is Apple's
+high-performance event-handling library.  It provides asynchronous
+task queues, monitoring of file descriptor read and write-ability,
+asynchronous I/O (for sockets and regular files), readers-writer locks,
+parallel for-loops, sane signal handling, periodic timers, semaphores
+and more.")
+    (license license:asl2.0)))
-- 
2.10.0