guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

HELP needed with CA certificates! [PATCH] gnu: Add tup, Add pbpst.


From: ng0
Subject: HELP needed with CA certificates! [PATCH] gnu: Add tup, Add pbpst.
Date: Thu, 25 Aug 2016 20:12:40 +0000

First things first: Corrections will happen, this is not what I ask
for. I need help with getting pbpst (which just uses curl for this) to
learn about the certificates on the system.
I can not continue this, all the greping and no advance. I can not solve
this, I need help.

>From 9556d469f3be74a0ea0ada9e4879c25a32858a3e Mon Sep 17 00:00:00 2001
From: ng0 <address@hidden>
Date: Mon, 15 Aug 2016 00:26:40 +0000
Subject: [PATCH 1/2] gnu: Add tup.

* gnu/packages/tup.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk         |  2 ++
 gnu/packages/tup.scm | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 85 insertions(+)
 create mode 100644 gnu/packages/tup.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index b8c5378..bc4b968 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -5,6 +5,7 @@
 # Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <address@hidden>
 # Copyright © 2016 Chris Marusich <address@hidden>
 # Copyright © 2016 Kei Kebreau <address@hidden>
+# Coypright © 2016 ng0 <address@hidden>
 #
 # This file is part of GNU Guix.
 #
@@ -343,6 +344,7 @@ GNU_SYSTEM_MODULES =                                \
   %D%/packages/tmux.scm                                \
   %D%/packages/tor.scm                         \
   %D%/packages/tre.scm                         \
+  %D%/packages/tup.scm                         \
   %D%/packages/tv.scm                          \
   %D%/packages/unrtf.scm                       \
   %D%/packages/upnp.scm                                \
diff --git a/gnu/packages/tup.scm b/gnu/packages/tup.scm
new file mode 100644
index 0000000..66ce099
--- /dev/null
+++ b/gnu/packages/tup.scm
@@ -0,0 +1,83 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 ng0 <address@hidden>
+;;;
+;;; 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 tup)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages linux)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages perl)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu))
+
+(define-public tup
+  (package
+    (name "tup")
+    (version "0.7.4")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/gittup/";
+                                  name "/archive/v" version ".tar.gz"))
+              (file-name (string-append name "-" version ".tar.gz"))
+              (sha256
+               (base32
+                "044h9kbcg1sfwpn13j1grw79kwysqhyn3w3g6yy8ap4j32v10gz2"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; tup requires fusermount to have suid, which we cannot provide in build 
env,
+     ;; we bootstrap it and use tup generate.  This also means that no tests 
are run.
+     `(#:tests? #f
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (zero? (system* "./build.sh"))
+             (zero? (system* "./build/tup" "generate" "script.sh"))))
+         (replace 'build
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "script.sh"
+               (("`git describe`") (string-append "v" ,version)))
+             (zero? (system* "./script.sh"))
+             #t))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (man (string-append out "/share/man/man1")))
+               (install-file "tup" bin)
+               (install-file "tup.1" man))
+             #t)))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("perl" ,perl)))
+    (inputs
+     `(("fuse" ,fuse)))
+    (synopsis "A file-based build system")
+    (description
+     "Tup is a file-based build system for Linux, OSX, and Windows. It inputs 
a list
+of file changes and a directed acyclic graph (DAG), then processes the DAG to
+execute the appropriate commands required to update dependent files.  Updates 
are
+performed with very little overhead since tup implements powerful build
+algorithms to avoid doing unnecessary work.  This means you can stay focused on
+your project rather than on your build system.")
+    (home-page "http://gittup.org/tup/";)
+    (license license:gpl2)))
-- 
2.9.3

>From 50008c80803517cb3be0ddf435ee47095b4bf622 Mon Sep 17 00:00:00 2001
From: ng0 <address@hidden>
Date: Tue, 16 Aug 2016 00:59:33 +0000
Subject: [PATCH 2/2] gnu: Add pbpst.

* gnu/packages/pastebin.scm: New file.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk              |   1 +
 gnu/packages/pastebin.scm | 163 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 164 insertions(+)
 create mode 100644 gnu/packages/pastebin.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index bc4b968..ff5e1a1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -272,6 +272,7 @@ GNU_SYSTEM_MODULES =                                \
   %D%/packages/package-management.scm          \
   %D%/packages/parallel.scm                    \
   %D%/packages/password-utils.scm              \
+  %D%/packages/pastebin.scm                    \
   %D%/packages/patchutils.scm                  \
   %D%/packages/pciutils.scm                    \
   %D%/packages/pcre.scm                                \
diff --git a/gnu/packages/pastebin.scm b/gnu/packages/pastebin.scm
new file mode 100644
index 0000000..95bb781
--- /dev/null
+++ b/gnu/packages/pastebin.scm
@@ -0,0 +1,163 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2016 ng0 <address@hidden>
+;;;
+;;; 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 pastebin)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages certs)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages libidn)
+  #:use-module (gnu packages llvm)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages tup)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages zsh)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages))
+
+;; We use this git checkout because it applies fixes needed to build
+;; pbpst on Guix, essential additions to the used build system.
+(define-public pbpst
+  (let ((revision "2")
+        (commit "4aeb782cdd05251a902af427ce942f3b8a866188"))
+    (package
+      (name "pbpst")
+      (version (string-append "1.2.0-" revision "." (string-take commit 7)))
+      (source (origin
+                ;; (method url-fetch)
+                ;; (uri (string-append "https://github.com/HalosGhost/";
+                ;;                    name "/archive/v" version ".tar.gz"))
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/HalosGhost/pbpst";)
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1w0js3z5xk4l1inxvh49w6ydahz33r7vn2mziziihn9h5qfadlhs"))))
+      (build-system gnu-build-system)
+      ;; XXX: "make simple" runs "make gen dist @./make.sh". make.sh is 
generated
+      ;; by the primary build system, which is tup based. we can not use the
+      ;; full tup build system as it requires to load FUSE. "make gen" runs
+      ;; `tup generate make.sh' which is a new file, we need to apply some
+      ;; Guix specific patching before we can continue. We therefore remove
+      ;; "@./make.sh" from the "make simple" and run it manually, this way we 
can
+      ;; patch make.sh before running it.
+      (arguments
+       `(#:make-flags (list
+                       (string-append "PREFIX=" (assoc-ref %outputs "out"))
+                       "simple")
+         #:tests? #f
+         #:phases
+         (modify-phases %standard-phases
+           (replace 'configure
+             (lambda _
+               (substitute* "Makefile"
+                 (("@./make.sh") "")
+                 ;; XXX: Because this is a drop-in replacement build system, 
there are
+                 ;; some unexplainable special behaviors introduced. One of 
them is that
+                 ;; building pbpst binary out to ../dist/pbpst fails, but 
inside cwd
+                 ;; "src/" succeeds. I blame dark matter. Fix this if you feel 
the
+                 ;; desire for a headache.
+                 (("dist/\\$\\(PROGNM\\)") "src/$(PROGNM)")
+                 (("src/\\$\\(PROGNM\\)\\.1") "dist/$(PROGNM).1"))
+               (substitute* "Tuprules.tup"
+                 (("`git describe --long --tags`") ,version))))
+               ;;(setenv "SSL_CERT_FILE" "/dev/null"))) ; I have no idea.
+               ;;(setenv "SSL_CERT_DIR" "/etc/ssl/certs")
+               ;;(setenv "SSL_CERT_FILE" 
"/etc/ssl/certs/ca-certificates.crt")))
+           (add-after 'build 'make-it
+             (lambda _
+               (patch-shebang "make.sh")
+               (substitute* "make.sh"
+                 (("clang -g -O3 -fPIE -pie -Weverything -Werror -std=c11 
-ggdb -D_FORTIFY_SOURCE=2 -fstack-protector-strong -march=native 
--param=ssp-buffer-size=1 -Wl,-z,relro,-z,now -fsanitize=undefined 
-fsanitize-trap=undefined `pkg-config --libs-only-l libcurl jansson` callback.c 
main.c pb.c pbpst_db.c -o ../dist/pbpst")
+                  "clang -v -g -O3 -fPIE -pie -Weverything -Werror -std=c11 
-ggdb -D_FORTIFY_SOURCE=2 -fstack-protector-strong -march=native 
--param=ssp-buffer-size=1 -Wl,-z,relro,-z,now -fsanitize=undefined 
-fsanitize-trap=undefined `pkg-config --libs-only-l libcurl jansson` callback.c 
main.c pb.c pbpst_db.c -o pbpst"))
+                 ;; (("gcc -g -O3 -fPIE -pie -Weverything -Werror -std=c11 
-ggdb -D_FORTIFY_SOURCE=2 -fstack-protector-strong -march=native 
--param=ssp-buffer-size=1 -Wl,-z,relro,-z,now -fsanitize=undefined 
-fsanitize-trap=undefined `pkg-config --libs-only-l libcurl jansson` callback.c 
main.c pb.c pbpst_db.c -o ../dist/pbpst")
+                 ;;  "gcc -v -g -O3 -fPIE -pie -Werror -std=c11 -ggdb 
-D_FORTIFY_SOURCE=2 -fstack-protector-strong -march=native 
--param=ssp-buffer-size=1 -Wl,-z,relro,-z,now -fsanitize=undefined `pkg-config 
--libs-only-l libcurl jansson` callback.c main.c pb.c pbpst_db.c -o pbpst"))
+;;                 (("cp bash ../dist/bash")
+;;                  "cp bash ../dist/bash
+               ;;cd '..'"))
+               (zero? (system* "bash" "make.sh")))))))
+      ;; the above fails, the one below was used with the 2.1.0 release ball:
+      ;; (replace 'build
+      ;;   (lambda _
+      ;;     (zero? (system* "make" "simple"))
+      ;;     (patch-shebang "make.sh")
+      ;;     (substitute* "make.sh"
+      ;;       (("`git describe --tags`") ,version))
+      ;;     (zero? (system* "bash" "make.sh"))))
+      ;; ;; (mkdir-p (string-append out "/dist"))
+      ;; (mkdir-p "dist")
+      ;; (chdir "src")
+      ;; (zero? (system* "clang" "-g" "-O3" "-fPIE" "-pie" "-Weverything"
+      ;;                 "-Werror" "-std=c11" "-ggdb" "-D_FORTIFY_SOURCE=2"
+      ;;                 "-fstack-protector-strong" "-march=native"
+      ;;                 "--param=ssp-buffer-size=1" "-Wl,-z,relro,-z,now"
+      ;;                 "-fsanitize=undefined" "-fsanitize-trap=undefined"
+      ;;                 "pkg-config" "--libs-only-l" "libcurl" "jansson"
+      ;;                 "callback.c" "main.c" "pb.c" "pbpst_db.c"
+      ;;                 "-o ../dist/pbpst"))
+      ;; (chdir "../cmp")
+      ;; (copy-file "zsh" "../dist/zsh")
+      ;; (copy-file "bash" "../dist/bash")
+      ;; (chdir "../doc")
+      ;; (system* "sphinx-build" "-b man" "-Dversion=`git describe --tags`"
+      ;;          "-d doctree" "-E . ../dist pbpst.rst pbpst_db.rst")
+      ;; (delete-file-recursively "doctree"))))
+      (inputs
+       `(("curl" ,curl)
+         ("jansson" ,jansson)
+         ("openssl" ,openssl)
+         ("libidn" ,libidn)
+         ;;("gnutls" ,gnutls)
+         ;;("nss-certs" ,nss-certs)
+         ("zsh" ,zsh) ; zsh completions
+         ("bash" ,bash))) ; bash completions
+      (native-inputs
+       `(("clang" ,clang)
+         ("clang-runtime" ,clang-runtime)
+         ("tup" ,tup)
+         ("pkg-config" ,pkg-config)
+         ("python" ,python)
+         ("python-sphinx" ,python-sphinx)))
+      (outputs '("out" "debug"))
+      ;; (native-search-paths
+      ;;  ;; FIXME: These two variables must designate a single file or 
directory
+      ;;  ;; and are not actually "search paths."  In practice it works OK in
+      ;;  ;; user profiles because there's always just one item that matches 
the
+      ;;  ;; specification.
+      ;;  (list (search-path-specification
+      ;;         (variable "SSL_CERT_DIR")
+      ;;         (files '("etc/ssl/certs")))
+      ;;        (search-path-specification
+      ;;         (variable "SSL_CERT_FILE")
+      ;;         (files '("etc/ssl/certs/ca-certificates.crt")))))
+      (synopsis "Command-line libcurl C client for pb deployments")
+      (description
+       "pbpst is a small tool to make interacting with pb instances as simple 
as
+possible.  pb is a versatile, free and open source pastebin which has more
+ features, is more robust, and is faster than any other pastebin with which I
+ am familiar.  You can find the reference instance (which tracks pb's master
+ branch) at ptpb. Ideally, pbpst will support as many features of pb as
+ possible (hopefully, nearly all) in a simple, unassuming CLI.")
+      (home-page "https://github.com/HalosGhost/pbpst/";)
+      (license license:gpl2))))
-- 
2.9.3

-- 
ng0
For non-prism friendly talk find me on http://www.psyced.org

reply via email to

[Prev in Thread] Current Thread [Next in Thread]