all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* No such file: LLVMgold.so while packaging ponyc
@ 2017-02-17 14:44 ng0
  2017-02-19 11:56 ` Ricardo Wurmus
  0 siblings, 1 reply; 2+ messages in thread
From: ng0 @ 2017-02-17 14:44 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]

A while ago I started packaging ponylang's compiler "ponyc", which can
be found here (https://pagure.io/guix-dev/branch/package/langs/ponyc).
For your convinience this is also attached as a .patch file.

It seems as if it requires the LLVMgold.so file, at least [0]
and my own errors are telling me this.

We do not provide the LLVMgold.so file. This could be similar to the
package definition rust has.

  Linking libponyc
  ar: /gnu/store/cdi08kw7r6r684w8mk0xq0dkgpjhfpmd-gcc-4.9.4-lib/lib/LLVMgold.so: cannot open shared object file: No such file or directory
  ... (lots of similar errors)
  ar: build/release/obj/libgtest/gtest_main.o: plugin needed to handle lto object
  ar: build/release/obj/libgtest/gtest-all.o: plugin needed to handle lto object
  main.c
  Linking ponyc
  collect2: fatal error: cannot find 'ld'
  compilation terminated.
  make: *** [Makefile:591: build/release/ponyc] Error 1
  phase `build' failed after 55.4 seconds

I'm open for new ideas.

0: https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/compilers/ponyc/default.nix



-- 
ng0 -- https://www.inventati.org/patternsinthechaos/

[-- Attachment #2: 0001-gnu-Add-ponyc.patch --]
[-- Type: text/plain, Size: 7420 bytes --]

From 0aebfd7dd33d429a7a5bb68cff1eeee9e95f3d0d Mon Sep 17 00:00:00 2001
From: ng0 <ng0@libertad.pw>
Date: Fri, 20 Jan 2017 13:16:10 +0000
Subject: [PATCH] gnu: Add ponyc.

* gnu/packages/pony.scm: New file.
* gnu/packages/patches/ponyc-disable-tests.patch: New file.
* gnu/local.mk
---
 gnu/local.mk                                   |   2 +
 gnu/packages/patches/ponyc-disable-tests.patch |  19 ++++
 gnu/packages/pony.scm                          | 117 +++++++++++++++++++++++++
 3 files changed, 138 insertions(+)
 create mode 100644 gnu/packages/patches/ponyc-disable-tests.patch
 create mode 100644 gnu/packages/pony.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 060de2535..7713fd2e6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -303,6 +303,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/pkg-config.scm			\
   %D%/packages/plotutils.scm			\
   %D%/packages/polkit.scm			\
+  %D%/packages/pony.scm                         \
   %D%/packages/popt.scm				\
   %D%/packages/pth.scm				\
   %D%/packages/pulseaudio.scm			\
@@ -837,6 +838,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/plotutils-libpng-jmpbuf.patch		\
   %D%/packages/patches/polkit-drop-test.patch			\
   %D%/packages/patches/portaudio-audacity-compat.patch		\
+  %D%/packages/patches/ponyc-disable-tests.patch                \
   %D%/packages/patches/portmidi-modular-build.patch		\
   %D%/packages/patches/procmail-ambiguous-getline-debian.patch  \
   %D%/packages/patches/procmail-CVE-2014-3618.patch		\
diff --git a/gnu/packages/patches/ponyc-disable-tests.patch b/gnu/packages/patches/ponyc-disable-tests.patch
new file mode 100644
index 000000000..38740cf96
--- /dev/null
+++ b/gnu/packages/patches/ponyc-disable-tests.patch
@@ -0,0 +1,19 @@
+diff -Naur a/packages/net/_test.pony b/packages/net/_test.pony
+--- a/packages/net/_test.pony	1970-01-01 01:00:01.000000000 +0100
++++ b/packages/net/_test.pony	2016-12-01 22:25:59.102433053 +0100
+@@ -5,14 +5,7 @@
+   new make() => None
+ 
+   fun tag tests(test: PonyTest) =>
+-    test(_TestBroadcast)
+-    test(_TestTCPWritev)
+-    test(_TestTCPExpect)
+-    test(_TestTCPMute)
+-    test(_TestTCPUnmute)
+-    ifdef not windows then
+-      test(_TestTCPThrottle)
+-    end
++    None
+ 
+ class _TestPing is UDPNotify
+   let _h: TestHelper
diff --git a/gnu/packages/pony.scm b/gnu/packages/pony.scm
new file mode 100644
index 000000000..025cd6a7a
--- /dev/null
+++ b/gnu/packages/pony.scm
@@ -0,0 +1,117 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages pony)
+  #:use-module (ice-9 match)
+  #:use-module (srfi srfi-1)
+  #:use-module (srfi srfi-26)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gcc)
+  #:use-module (gnu packages pcre)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages tls))
+
+(define-public ponyc
+  (package
+    (name "ponyc")
+    (version "0.10.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/ponylang/ponyc/archive/"
+                           version ".tar.gz"))
+       (patches (search-patches "ponyc-disable-tests.patch"))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32
+         "0j87f7jk7ly96wm67smf4hia2cb4ivv4vrlp2297h2f3smifhjk9"))))
+    ;; Only x86 and arm are supported with 32 and 64 bit variants.
+    (supported-systems
+     (fold delete %supported-systems
+           '("mips64el-linux")))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:test-target "test-ci"
+       #:strip-binaries? #f
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (add-before 'build 'fix-tests
+           (lambda _
+             (substitute* "packages/process/_test.pony"
+               (("/bin/") "")) ; cat,date,echo
+             (substitute* "Makefile"
+               (("llvm-ar-3.8") "llvm-ar"))
+             (substitute* "src/libponyc/pkg/package.c"
+               (("/usr/local/lib") "")
+               (("/opt/local/lib") ""))
+             (substitute* '("packages/crypto/hash_fn.pony"
+                            "packages/crypto/digest.pony"
+                            "packages/net/ssl/_ssl_init.pony")
+               (("/usr/local/opt/libressl/lib")
+                (string-append (assoc-ref %build-inputs "libressl")
+                               "/lib")))
+             (substitute* "Makefile"
+               (("PONYPATH=.") "PONYPATH=.:$(PONYPATH)"))
+             (setenv "LLVM_CONFIG"
+                     (string-append (assoc-ref %build-inputs "llvm")
+                                    "/bin/llvm-config"))
+             (setenv "LTO_PLUGIN"
+                     (string-append (assoc-ref %build-inputs "gcc:lib")
+                                    "/lib/LLVMgold.so"))
+             (setenv "CC" "gcc")))
+         (replace 'build
+           (lambda _
+             (zero? (system* "make" "config=release"))))
+         (replace 'install
+           (lambda _
+             (zero? (system* "make" "config=release"
+                             (string-append "prefix="
+                                            (assoc-ref %outputs "out"))
+                             "install"))))
+         (add-before 'check 'set-pony-path
+           (lambda _
+             (setenv "PONYPATH"
+                     (string-append (assoc-ref %outputs "out")
+                                    "/lib" ":"
+                                    (assoc-ref %build-inputs "pcre2")
+                                    "/lib" ":"
+                                    (assoc-ref %build-inputs "libressl")
+                                    "/lib" ":"
+                                    (which "ld"))))))))
+    (inputs
+     `(("pcre2" ,pcre2)))
+    (native-inputs
+     `(("llvm" ,llvm)
+       ("gcc:lib" ,(canonical-package gcc) "lib")
+       ("gcc" ,(canonical-package gcc))
+       ("ncurses" ,ncurses)
+       ("libressl" ,libressl)
+       ("bash" ,bash)))
+    (synopsis "Actor model, capabilities-secure, high performance programming language")
+    (description
+     "What.")
+    (home-page "http://www.ponylang.org/")
+    (license license:bsd-2)))
-- 
2.11.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: No such file: LLVMgold.so while packaging ponyc
  2017-02-17 14:44 No such file: LLVMgold.so while packaging ponyc ng0
@ 2017-02-19 11:56 ` Ricardo Wurmus
  0 siblings, 0 replies; 2+ messages in thread
From: Ricardo Wurmus @ 2017-02-19 11:56 UTC (permalink / raw)
  To: ng0; +Cc: guix-devel


ng0 <contact.ng0@cryptolab.net> writes:

> A while ago I started packaging ponylang's compiler "ponyc", which can
> be found here (https://pagure.io/guix-dev/branch/package/langs/ponyc).
> For your convinience this is also attached as a .patch file.
>
> It seems as if it requires the LLVMgold.so file, at least [0]
> and my own errors are telling me this.
>
> We do not provide the LLVMgold.so file. This could be similar to the
> package definition rust has.
>
>   Linking libponyc
>   ar: /gnu/store/cdi08kw7r6r684w8mk0xq0dkgpjhfpmd-gcc-4.9.4-lib/lib/LLVMgold.so: cannot open shared object file: No such file or directory
>   ... (lots of similar errors)

It’s not clear to me why it wants to use the LLVM linker, but looking at
the patch you override a lot of variables that might lead to behaviour
like this.

It looks for LLVMgold in GCC’s lib directory, which is clearly wrong.
Maybe you can convince it to use the GCC toolchain’s linker.

-- 
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-02-19 11:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-17 14:44 No such file: LLVMgold.so while packaging ponyc ng0
2017-02-19 11:56 ` Ricardo Wurmus

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.