aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/synergy.scm
blob: 41f8855a13770b20abc886d008c9cc4a3213e5fc (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;;
;;; 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 synergy)
  #:use-module (guix packages)
  #:use-module (guix licenses)
  #:use-module (guix download)
  #:use-module (guix build-system cmake)
  #:use-module (gnu packages)
  #:use-module (gnu packages curl)
  #:use-module (gnu packages python)
  #:use-module (gnu packages xorg)
  #:use-module (gnu packages zip)
  #:use-module (srfi srfi-26))

(define-public synergy
  (package
    (name "synergy")
    (version "1.5.1-r2398")
    (source
     (origin
      (method url-fetch)
      (uri (string-append "http://www.synergy-project.org/files/packages/"
                          "synergy-" version "-Source.tar.gz"))
      (sha256
       (base32
        "19q8ck15f0jgpbzlm34dzp046wf3iiwa21s1qfyj5sj7xjxwa367"))))
    (build-system cmake-build-system)
    (native-inputs `(("unzip" ,unzip)))
    (inputs
     `(("python"  ,python-wrapper)
       ("curl"    ,curl)
       ("libxi"   ,libxi)
       ("libx11"  ,libx11)
       ("libxtst" ,libxtst)
       ("xinput"  ,xinput)))
    (arguments
     `(#:phases
       (let ((srcdir (string-append
                      "../synergy-"
                      (car (string-split ,version #\-))
                      "-Source")))
         (alist-cons-before
          'configure 'unpack-aux-src
          ;; TODO: package and use from system
          (lambda* (#:key inputs #:allow-other-keys)
            (let ((unzip (string-append
                          (assoc-ref inputs "unzip")
                          "/bin/unzip")))
              (with-directory-excursion "ext"
                (for-each
                 (lambda (f)
                   (system* unzip "-d" f (string-append f ".zip")))
                 '("cryptopp562" "gmock-1.6.0" "gtest-1.6.0")))))
          (alist-replace
           'check
           ;; Don't run "integtests" as it requires network and X an display.
           (lambda _
             (zero? (system* (string-append srcdir "/bin/unittests"))))
           (alist-replace
            'install
            ;; There currently is no installation process, see:
            ;; http://synergy-project.org/spit/issues/details/3317/
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (begin
                  (mkdir-p (string-append out "/bin"))
                  (for-each
                   (lambda (f)
                     (copy-file (string-append srcdir "/bin/" f)
                                (string-append out    "/bin/" f)))
                   '("synergyc" "synergys" "synergyd"
                     "usynergy" "syntool")))))
            %standard-phases))))))
    (home-page "http://www.synergy-project.org")
    (synopsis "Mouse and keyboard sharing utility")
    (description
     "Synergy brings your computers together in one cohesive experience; its
software for sharing one mouse and keyboard between multiple computers on your
desk.")
    (license gpl2)))
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 zig) #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system cmake) #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages llvm)) (define-public zig-0.10 (package (name "zig") (version "0.10.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ziglang/zig.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "1sh5xjsksl52i4cfv1qj36sz5h0ln7cq4pdhgs3960mk8a90im7b")) (patches (search-patches "zig-do-not-link-against-librt.patch")))) (build-system cmake-build-system) (inputs (list clang-15 ; Clang propagates llvm. lld-15 zlib (list zstd "lib"))) ;; Zig compiles fine with GCC, but also needs native LLVM libraries. (native-inputs (list llvm-15)) (arguments `(#:configure-flags (list ,@(if (%current-target-system) '(string-append "-DZIG_TARGET_TRIPLE=" (%current-target-system)) '()) (string-append "-DZIG_TARGET_MCPU=baseline") "-DZIG_SHARED_LLVM=ON" (string-append "-DZIG_LIB_DIR=" (assoc-ref %outputs "out") "/lib/zig")) #:validate-runpath? #f ; TODO: zig binary can't find ld-linux. #:out-of-source? #f ; for tests #:phases (modify-phases %standard-phases (add-after 'unpack 'set-env-variables (lambda* (#:key inputs native-inputs #:allow-other-keys) ;; Set CC, since the stage 2 zig relies on it to find the libc ;; installation, and otherwise silently links against its own. (setenv "CC" ,(cc-for-target)) ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'. (setenv "ZIG_GLOBAL_CACHE_DIR" (string-append (getcwd) "/zig-cache")))) (add-after 'patch-source-shebangs 'patch-more-shebangs (lambda* (#:key inputs #:allow-other-keys) ;; Zig uses information about /usr/bin/env to determine the ;; version of glibc and other data. (substitute* "lib/std/zig/system/NativeTargetInfo.zig" (("/usr/bin/env") (search-input-file inputs "/bin/env"))))) (delete 'check) (add-after 'install 'check (lambda* (#:key outputs tests? #:allow-other-keys) (when tests? (invoke (string-append (assoc-ref outputs "out") "/bin/zig") "build" "test" ;; We're not testing the compiler bootstrap chain. "-Dskip-stage1" "-Dskip-stage2-tests" ;; Non-native tests try to link and execute non-native ;; binaries. "-Dskip-non-native"))))))) (native-search-paths (list (search-path-specification (variable "C_INCLUDE_PATH") (files '("include"))) (search-path-specification (variable "CPLUS_INCLUDE_PATH") (files '("include/c++" "include"))) (search-path-specification (variable "LIBRARY_PATH") (files '("lib" "lib64"))))) (synopsis "General purpose programming language and toolchain") (description "Zig is a general-purpose programming language and toolchain. Among other features it provides @itemize @item an Optional type instead of null pointers, @item manual memory management, @item generic data structures and functions, @item compile-time reflection and compile-time code execution, @item integration with C using zig as a C compiler, and @item concurrency via async functions. @end itemize") (home-page "https://github.com/ziglang/zig") ;; Currently building zig can take up to 10GB of RAM for linking stage1: ;; https://github.com/ziglang/zig/issues/6485 (supported-systems %64bit-supported-systems) ;; Stage3 can take a lot of time and isn't verbose. (properties `((max-silent-time . 9600))) (license license:expat))) (define-public zig-0.9 (package (inherit zig-0.10) (name "zig") (version "0.9.1") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/ziglang/zig.git") (commit version))) (file-name (git-file-name name version)) (sha256 (base32 "0nfvgg23sw50ksy0z0ml6lkdsvmd0278mq29m23dbb2jsirkhry7")) (patches (search-patches "zig-0.9-riscv-support.patch" "zig-use-system-paths.patch" "zig-do-not-link-against-librt.patch")))) (inputs (list clang-13 ; Clang propagates llvm. lld-13)) ;; Zig compiles fine with GCC, but also needs native LLVM libraries. (native-inputs (list llvm-13)) (arguments `(#:configure-flags (list ,@(if (%current-target-system) (string-append "-DZIG_TARGET_TRIPLE=" (%current-target-system)) '())) #:out-of-source? #f ; for tests ;; There are too many unclear test failures. #:tests? ,(not (or (target-riscv64?) (%current-target-system))) #:phases (modify-phases %standard-phases (add-after 'configure 'set-cache-dir (lambda _ ;; Set cache dir, otherwise Zig looks for `$HOME/.cache'. (setenv "ZIG_GLOBAL_CACHE_DIR" (string-append (getcwd) "/zig-cache")))) ,@(if (target-riscv64?) ;; It is unclear why all these tests fail to build. `((add-after 'unpack 'adjust-tests (lambda _ (substitute* "build.zig" ((".*addRuntimeSafetyTests.*") "") ((".*addRunTranslatedCTests.*") "")) (substitute* "test/standalone.zig" ;; These tests fail to build on riscv64-linux. ;; They both contain 'exe.linkSystemLibrary("c");' ((".*shared_library.*") "") ((".*mix_o_files.*") "") ;; ld.lld: error: undefined symbol: __tls_get_addr ;; Is this symbol x86 only in glibc? ((".*link_static_lib_as_system_lib.*") ""))))) '()) (delete 'check) (add-after 'install 'check (lambda* (#:key outputs tests? #:allow-other-keys) (when tests? (invoke (string-append (assoc-ref outputs "out") "/bin/zig") ;; Testing the standard library takes >7.5GB RAM, and ;; will fail if it is OOM-killed. The 'test-toolchain' ;; target skips standard library and doc tests. "build" "test-toolchain" ;; Stage 2 is experimental, not what we run with `zig', ;; and stage 2 tests require a lot of RAM. "-Dskip-stage2-tests" ;; Non-native tests try to link and execute non-native ;; binaries. "-Dskip-non-native"))))))))) (define-public zig zig-0.10)