From 2b57dd33e349cb065ac3fcae4a0fdde23950aefe Mon Sep 17 00:00:00 2001 From: Samuel Dionne-Riel Date: Fri, 23 Oct 2020 21:26:04 -0400 Subject: [PATCH] mrbgems: Add mruby-zmq --- overlay/mruby-builder/mrbgems/default.nix | 48 ++++++++++++++++++- ...ss-build-is-not-special-with-Nixpkgs.patch | 39 +++++++++++++++ .../0001-Work-around-missing-pthread.patch | 24 ++++++++++ 3 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 overlay/mruby-builder/mrbgems/mruby-zmq/0001-HACK-cross-build-is-not-special-with-Nixpkgs.patch create mode 100644 overlay/mruby-builder/mrbgems/mruby-zmq/0001-Work-around-missing-pthread.patch diff --git a/overlay/mruby-builder/mrbgems/default.nix b/overlay/mruby-builder/mrbgems/default.nix index c2ed45a5..caabdc8f 100644 --- a/overlay/mruby-builder/mrbgems/default.nix +++ b/overlay/mruby-builder/mrbgems/default.nix @@ -1,4 +1,12 @@ -{ stdenvNoCC, lib, fetchFromGitHub, fetchpatch, libffi }: +{ stdenvNoCC +, lib +, fetchFromGitHub +, fetchpatch + +, libffi +, pkg-config +, zeromq +}: let inherit (lib) licenses; @@ -343,4 +351,42 @@ rec { meta.licenses = licenses.mit; }; + + mruby-zmq = mkGem { + src = fetchFromGitHub { + repo = "mruby-zmq"; + owner = "zeromq"; + rev = "39b6dab7cb944595064ca3e9376637024d3bf483"; + sha256 = "03n9890wx18v7pwnk5w8s10l7yij6hyj8y5q4jf296k56dr4g01m"; + }; + + patches = [ + (fetchpatch { + url = "https://github.com/zeromq/mruby-zmq/pull/16.patch"; + sha256 = "1m63yl84hg80whqpr3yznk06yalaasiszwm3pjvsr2di8gyi0bm5"; + }) + ./mruby-zmq/0001-Work-around-missing-pthread.patch + ./mruby-zmq/0001-HACK-cross-build-is-not-special-with-Nixpkgs.patch + ]; + + gemBuildInputs = [ + (zeromq.override { + enableDrafts = true; + }) + ]; + + gemNativeBuildInputs = [ + pkg-config + ]; + + requiredGems = [ + mruby-errno + mruby-proc-irep-ext + mruby-simplemsgpack + mruby-pack + mruby-env + ]; + + meta.licenses = licenses.mpl20; + }; } diff --git a/overlay/mruby-builder/mrbgems/mruby-zmq/0001-HACK-cross-build-is-not-special-with-Nixpkgs.patch b/overlay/mruby-builder/mrbgems/mruby-zmq/0001-HACK-cross-build-is-not-special-with-Nixpkgs.patch new file mode 100644 index 00000000..7edf3e51 --- /dev/null +++ b/overlay/mruby-builder/mrbgems/mruby-zmq/0001-HACK-cross-build-is-not-special-with-Nixpkgs.patch @@ -0,0 +1,39 @@ +From c959a7e964c2f203e6a46405feb3bd036d460f5f Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Tue, 27 Oct 2020 00:26:16 -0400 +Subject: [PATCH] =?UTF-8?q?[HACK]=C2=A0cross-build=20is=20not=20special=20?= + =?UTF-8?q?with=20Nixpkgs?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +--- + mrbgem.rake | 12 ------------ + 1 file changed, 12 deletions(-) + +diff --git a/mrbgem.rake b/mrbgem.rake +index ff42825..30fd90d 100644 +--- a/mrbgem.rake ++++ b/mrbgem.rake +@@ -31,18 +31,6 @@ MRuby::Gem::Specification.new('mruby-zmq') do |spec| + end + if spec.build.toolchains.include? 'visualcpp' + spec.linker.libraries << 'libzmq' +- elsif build.is_a?(MRuby::CrossBuild) +- unless File.exists?("#{spec.build_dir}/lib/libzmq.a") +- sh "cd #{spec.dir}/libzmq && ./autogen.sh && mkdir -p #{spec.build_dir}/build && cd #{spec.build_dir}/build && #{spec.dir}/libzmq/configure CC=\"#{spec.cc.command}\" CFLAGS=\"#{spec.cc.flags.join(' ')}\" LDFLAGS=\"#{spec.linker.flags.join(' ')}\" CXX=\"#{spec.cxx.command}\" CXXFLAGS=\"#{spec.cxx.flags.join(' ')}\" --host=#{build.host_target} --build=#{build.build_target} --disable-shared --enable-static --without-docs --prefix=#{spec.build_dir} && make -j4 && make install" +- end +- spec.linker.flags_before_libraries << "\"#{spec.build_dir}/lib/libzmq.a\" -pthread" +- spec.linker.libraries << 'stdc++' +- spec.cc.include_paths << "#{spec.build_dir}/include" +- spec.cxx.include_paths << "#{spec.build_dir}/include" +- build.cc.include_paths << "#{spec.build_dir}/include" +- build.cxx.include_paths << "#{spec.build_dir}/include" +- spec.cxx.defines << 'ZMQ_BUILD_DRAFT_API=1' +- spec.cc.defines << 'ZMQ_BUILD_DRAFT_API=1' + else + `pkg-config --cflags libzmq 2>/dev/null`.split("\s").each do |cflag| + spec.cxx.flags << cflag +-- +2.28.0 + diff --git a/overlay/mruby-builder/mrbgems/mruby-zmq/0001-Work-around-missing-pthread.patch b/overlay/mruby-builder/mrbgems/mruby-zmq/0001-Work-around-missing-pthread.patch new file mode 100644 index 00000000..fdb211ca --- /dev/null +++ b/overlay/mruby-builder/mrbgems/mruby-zmq/0001-Work-around-missing-pthread.patch @@ -0,0 +1,24 @@ +From 772fade0232b98460ba9557eba703593226ce804 Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Fri, 23 Oct 2020 20:59:10 -0400 +Subject: [PATCH] Work around missing -pthread + +It is unknown why `pkg-config` does not return `-pthread` for zeromq. + +--- + mrbgem.rake | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/mrbgem.rake b/mrbgem.rake +index ff42825..3b7ebdc 100644 +--- a/mrbgem.rake ++++ b/mrbgem.rake +@@ -75,4 +75,5 @@ MRuby::Gem::Specification.new('mruby-zmq') do |spec| + spec.cc.defines << 'ZMQ_BUILD_DRAFT_API=1' + end + end ++ spec.linker.flags_before_libraries << "-pthread" + end +-- +2.28.0 +