unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Dormant WIP (please take over): Add Tahoe-LAFS and various packages
@ 2016-12-25 13:43 Adonay Felipe Nogueira
  2016-12-26 18:00 ` ng0
  0 siblings, 1 reply; 2+ messages in thread
From: Adonay Felipe Nogueira @ 2016-12-25 13:43 UTC (permalink / raw)
  To: guix-devel

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

This is one of my dormant works in progress.

It wasn't touched since around October 3rd. Feel free to insert any
copyright notices that are missing.

I'm unable to continue it due to:

* My lack in programming skills.
* Important phases failing.
* And a possible license issue with libbase32 (or zbase32, I don't know
  the exact name). I tried sending a patch, but the repository owner
  says the project is no longer maintained.


Respectfully, Adonay.
-- 
* pt-BR: Brasileiro | en: Brazilian
* pt-BR: Ativista do software livre | en: Free/libre software activist
* https://libreplanet.org/wiki/User:Adfeno
* pt-BR: Palestrante, consultor e avaliador | en: Speaker, consultant and evaluator

[-- Attachment #2: tahoe-lafs.scm --]
[-- Type: application/octet-stream, Size: 20674 bytes --]

;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.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 (tahoe-lafs)
  #:use-module (gnu packages base)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages python)
  #:use-module (gnu packages version-control)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module ((guix licenses)
    #:select (boost1.0 expat gpl2+))
  #:use-module (guix packages)
  #:use-module (ice-9 regex))

(define-public cryptopp
  ;; TODO: Test reproducibility.
  (package
    (name "cryptopp")
    (version "5.6.4")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/weidai11/cryptopp.git")
            (commit
              (string-append
                "CRYPTOPP_"
                (regexp-substitute/global #f
                  "\\." version 'pre "_" 'post)))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "0gl3xagr76sqx5lr3ndvwrdj4vbw5lcs76vp942m3qky04j92112"))
        (snippet
          '(begin
             (delete-file "bds10.zip")
             (delete-file "vc60.zip")
             (delete-file "vs2005.zip")))))
    (build-system gnu-build-system)
    (inputs
      `(("which" ,which)))
    (arguments
      '(#:make-flags
          `("dynamic"
            ,(string-append
               "CXXFLAGS=\"-mtune="
               (utsname:machine (uname))
               "\"")
            "LDCONF=echo"
            ,(string-append
               "PREFIX="
               (assoc-ref %outputs "out")))
        #:phases (modify-phases %standard-phases
          (delete 'configure))))
    (home-page "http://www.cryptopp.com/")
    (synopsis "C++ class library of cryptographic schemes")
    (description
      "C++ class library of cryptographic schemes.")
    (license boost1.0)))

(define-public python2-attrs
  ;; TODO: Test reproducibility.
  (package
    (name "python2-attrs")
    (version "16.2.0")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/hynek/attrs.git")
            (commit version)))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "1wmcs7i77pswvm04phqcd4f3gn2zb4avlr51yixkqrdqy7qisxaw"))))
    (build-system python-build-system)
    (inputs
      `(;; TODO: Make "docs".
        ("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:python ,python-2 ; TODO: Test with Python 3.
        #:tests? #f)) ; FIXME? Tests require pytest.
    (home-page "https://github.com/hynek/attrs")
    (synopsis "Python attributes without boilerplate")
    (description
      "Eases writing classes by not needing to implement object protocols,
tuples or namedtuples.")
    (license expat)))

(define-public python2-characteristic
  ;; NOTE: Predecessor of attrs.
  ;; TODO: Test reproducibility.
  (package
    (name "python2-characteristic")
    (version "14.3.0")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/hynek/characteristic.git")
            (commit version)))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "031marr7ks3cn6mxnh3gmmszfa282w21hhwwlvcqnl9q6l421ff4"))))
    (build-system python-build-system)
    (inputs
      `(;; TODO: Make "docs".
        ("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:python ,python-2 ; TODO: Test with Python 3.
        #:tests? #f)) ; FIXME? Tests require pytest.
    (home-page "https://github.com/hynek/characteristic")
    (synopsis "Python attributes without boilerplate")
    (description
      "Provides class decorators that ease the chores of implementing the most
common attribute-related object protocols.  Predecessor of attrs.")
    (license expat)))

(define-public python2-foolscap
  ;; TODO: Test reproducibility.
  (package
    (name "python2-foolscap")
    (version "0.12.3")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/warner/foolscap.git")
            (commit
              (string-append "foolscap-" version))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "16yjm24sxih2na3jfazjq9fcbfyc13451v6qnki26s7avxg070fk"))))
    (build-system python-build-system)
    (inputs
      `(;; TODO: Make "docs".
        ;; TODO: Make "dev" "socks" "tor" "i2p" extras.
        ("python2-pyopenssl" ,python2-pyopenssl)
        ("python2-service-identity" ,python2-service-identity)
        ("python2-setuptools" ,python2-setuptools)
        ("python2-twisted-tls" ,python2-twisted-tls)))
    (arguments
      `(#:python ,python-2 ; TODO: Test with Python 3.
        ;; FIXME: Disable tests, otherwise "check" phase fails with:
        ;; twisted.python.reflect.ObjectNotFound: 'foolscap.test' does
        ;; not name an object
        #:tests? #f))
    (home-page "https://foolscap.lothar.com/")
    (synopsis "Remote object-messaging for Python+Twisted")
    (description
      "RPC/RMI (Remote Procedure Call / Remote Method Invocation) protocol for
use with Twisted, derived/inspired by Twisted's built-in Perspective
Broker package.")
    (license expat)))

(define-public python2-nevow
  ;; TODO: Test reproducibility.
  (package
    (name "python2-nevow")
    (version "0.14.2")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/twisted/nevow.git")
            (commit
              (string-append "nevow-" version))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "04rf6r90fzw7knp26z8ssnb0wxwd3mvrr0a5cnjn50nb78pyyh8l"))
        (modules
          '((guix build utils)))
        (snippet
          '(begin
             (delete-file-recursively "win32")
             (substitute* "MANIFEST.in"
               (("include win32/\\*")
                  ""))))))
    (build-system python-build-system)
    (inputs
      `(;; FIXME: Needs:
        ;; * "/etc/mime.types".
        ;; * "/share/dict/words".
        ;; * "/share/icons/gnome/48x48/stock/net/stock_channel.png".
        ;; TODO: Make "docs".
        ("python2-setuptools" ,python2-setuptools)
        ("python2-twisted" ,python2-twisted)))
    (arguments
      `(#:python ,python-2)) ; TODO: Test with Python 3.
    (home-page "https://github.com/twisted/nevow")
    (synopsis "Web application construction kit")
    (description
      "Designed to allow the programmer to express view logic as desired
in Python.  Includes a Python XML expression syntax named stan.
Provides support for designer-edited templates, using a XML attribute
language for bi-directional template manipulation.")
    (license expat)))

(define-public python2-pycryptopp
  ;; FIXME: "validate-runpath" phase fails with:
  ;; validating RUNPATH of 2 binaries in
  ;; "/gnu/store/...-python2-pycryptopp-0.7.1/lib"...
  ;; [Path above, see NOTE]/python2.7/site-packages/pycryptopp/_pycryptopp.so:
  ;; error: depends on 'libcryptopp.so.5.6', which cannot
  ;; be found in RUNPATH ("/gnu/store/...-python-2.7.11/lib"
  ;; "/gnu/store/...-glibc-2.23/lib" "/gnu/store/...-gcc-4.9.3-lib/lib"
  ;; "/gnu/store/...-cryptopp-5.6.4/lib"
  ;; "/gnu/store/...-gcc-4.9.3-lib/lib[Returns here, see NOTE]")
  ;; NOTE:
  ;; * "Path above": "/gnu/store/...-python2-pycryptopp-0.7.1/lib".
  ;; * "Returns here": "gcc/i686-unknown-linux-gnu/4.9.3/../../..".
  (package
    (name "python2-pycryptopp")
    (version "0.7.1")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/tahoe-lafs/pycryptopp.git")
            (commit
              (string-append "pycryptopp-" version))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "0idgm5rynd2jg6lmgh9vn9s6i6hxxz6v56q2zcdqhc4b9pbpgpg2"))
        (modules
          '((guix build utils)))
        (snippet
          `(begin
             (delete-file-recursively "src-cryptopp")
             ;; FIXME? About "src-ed25519", do one of the following:
             ;; a) Remove it.
             ;; b) Talk to upstream to use original one.
             ;; Seems to be custom made, see commit
             ;; 959851743ed0a5fb1dc77d6925031a03367c8949.
             ;; FIXME: Force version, otherwise "build" phase fails with:
             ;; Exception: problem: couldn't get version information from
             ;; revision control history, and there is no version information
             ;; in 'src/pycryptopp/_version.py'. Stopping.
             (substitute* "setup.py"
               (("version = UpdateVersion\\(\\)\\.run\\(\\)")
                  (string-append "version = \"" ,version "\"")))))))
    (build-system python-build-system)
    (inputs
      `(("cryptopp" ,cryptopp)
        ("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:configure-flags
          '("--single-version-externally-managed"
            "--record=pycryptopp.txt")
        #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'setenv-and-fix-paths
              (lambda*
                  (#:key inputs #:allow-other-keys)
                (and
                  (setenv "PYCRYPTOPP_DISABLE_EMBEDDED_CRYPTOPP" "1") 
                  (let
                      ((cryptopp
                         (assoc-ref inputs "cryptopp")))
                    (substitute* "setup.py"
                      (("for inclpath in \\[.*\\]:")
                         (string-append
                           "for inclpath in [\""
                           cryptopp
                           "/include\"]:"))))))))
        #:python ,python-2 ; TODO: Test with Python 3.
        ;; FIXME: Disable tests, otherwise "check" phase fails with:
        ;; ImportError: libcryptopp.so.5.6: cannot open shared object file:
        ;; No such file or directory
        #:tests? #f))
    (home-page "https://tahoe-lafs.org/trac/pycryptopp")
    (synopsis "Python bindings to the Crypto++ library")
    (description
      "Python interfaces to some cryptographic algorithms.")
    (license gpl2+)))

(define-public python2-pyutil
  ;; TODO: Test reproducibility.
  (package
    (name "python2-pyutil")
    (version "2.0.0")
    (source
      (origin
        (method url-fetch)
        (uri
          (pypi-uri "pyutil" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "1fsg9yz5mi2sb0h6c1vvcqchx56i89nbvdb5gfgv1ia3b2w5ra8c"))))
    (build-system python-build-system)
    (inputs
      `(;; FIXME: Needs "/etc/lsb-release".
        ;; TODO: Make "jsonutil" extras.
        ("net-tools" ,net-tools)
        ("python2-setuptools" ,python2-setuptools)
        ("python2-simplejson" ,python2-simplejson)
        ("python2-twisted" ,python2-twisted)
        ("python2-zbase32" ,python2-zbase32)))
    (arguments
      `(#:configure-flags
          '("--single-version-externally-managed"
            "--record=pyutil.txt")
        #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'fix-paths
              (lambda*
                  (#:key inputs #:allow-other-keys)
                (let
                    ((net-tools
                       (assoc-ref inputs "net-tools")))
                  (and
                    (substitute* "pyutil/iputil.py"
                      (("'/sbin/ifconfig'")
                         (string-append "'" net-tools "/sbin/ifconfig'"))))))))
        #:python ,python-2)) ; TODO: Test with Python 3.
    (home-page "https://github.com/zooko/pyutil")
    (synopsis "Collection of utilities for Python programmers")
    (description
      "Collection of utilities for Python programmers.")
    (license gpl2+)))

(define-public python2-service-identity
  ;; TODO: Test reproducibility.
  (package
    (name "python2-service-identity")
    (version "16.0.0")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/pyca/service_identity.git")
            (commit version)))
        (file-name (string-append name "-" version))
        (sha256
          (base32
            "1f6g5r6jgkwj0kjnz481cwj2fyk6w064wh8r1122x6aj55185505"))))
    (build-system python-build-system)
    (inputs
      `(;; TODO: Make "docs".
        ;; TODO: Make "idna" extras.
        ("python2-attrs",python2-attrs)
        ("python2-pyasn1" ,python2-pyasn1)
        ("python2-pyasn1-modules" ,python2-pyasn1-modules)
        ("python2-pyopenssl" ,python2-pyopenssl)
        ("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:python ,python-2 ; TODO: Test with Python 3.
        #:tests? #f)) ; FIXME? Tests require pytest.
    (home-page "https://github.com/pyca/service_identity")
    (synopsis "Service identity verification for pyOpenSSL")
    (description
      "Use this package if you use pyOpenSSL and don’t want to be MITMed or
if you want to verify that a PyCA cryptography certificate is valid for
a certain hostname.

service_identity aspires to give you all the tools you need for verifying
whether a certificate is valid for the intended purposes.

In the simplest case, this means host name verification.  However,
service_identity implements RFC 6125 fully and plans to add other relevant
RFCs too.")
    (license expat)))

(define-public python2-twisted-tls
  ;; TODO: Test with Python 3.
  ;; TODO: Test reproducibility.
  (package
    (inherit python2-twisted)
    (name "python2-twisted-tls")
    (inputs
      `(,@(package-inputs python2-twisted)
        ("python2-idna" ,python2-idna)
        ("python2-pyopenssl" ,python2-pyopenssl)
        ("python2-service-identity" ,python2-service-identity)))
    (description
      (string-append
        (package-description python2-twisted) "\n\n"
        "This package provides Twisted and its \"tls\" extra."))))

(define-public python2-zbase32
  ;; TODO: Test reproducibility.
  (package
    (name "python2-zbase32")
    (version "1.1.5")
    (source
      (origin
        (method url-fetch)
        (uri
          (pypi-uri "zbase32" version))
        (file-name
          (string-append name "-" version ".tar.gz"))
        (sha256
          (base32
            "0bs2wr8k0psshnblf3snzhw6z6jr4gkidxbsa7abmjw6lm5w69cv"))))
    (build-system python-build-system)
    (inputs
      `(("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:configure-flags
          '("--single-version-externally-managed"
            "--record=zbase32.txt")
        #:python ,python-2 ; TODO: Test with Python 3.
        #:tests? #f)) ; FIXME? Circular dependency of pyutil.
    (home-page "https://github.com/zooko/libbase32")
    (synopsis "Alternate base32 encoder (not RFC 3548 compliant)")
    (description
      "Alternate base32 encoder (not RFC 3548 compliant).")
    ;; FIXME: Source files say its under "BSD license".
    ;; Upstream repository says its under CC0 1.0.
    ;; **Can** affect GPL 2+ compliance of pyutil, zfec and Tahoe-LAFS.
    ;; Upstream repository is "libbase32". Pyutil expects "zbase32".
    (license #f)))

(define-public python2-zfec
  ;; TODO: Test reproducibility.
  (package
    (name "python2-zfec")
    (version "1.4.24")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/tahoe-lafs/zfec.git")
            (commit
              (string-append "zfec-" version))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "0315i2gyvw1l9r0glxa1pr3ivgckhri9xfxw3amkz63kpqgl9ybb"))))
    (build-system python-build-system)
    ;; TODO: About "setuptools-0.6c16dev3.egg", do one of the following:
    ;; a) Define as "zetuptoolz" output.
    ;; b) Provide "zetuptoolz" as another recipe.
    ;; c) Talk to upstream to use original setuptools.
    (inputs
      `(("coreutils" ,coreutils)
        ("python2-pyutil" ,python2-pyutil)
        ("python2-setuptools" ,python2-setuptools)))
    (arguments
      `(#:configure-flags
          '("--single-version-externally-managed"
            "--record=zfec.txt")
        #:python ,python-2)) ; TODO: Test with Python 3.
    (home-page "https://tahoe-lafs.org/trac/zfec")
    (synopsis "Efficient, portable erasure coding tool")
    (description
      "Generate redundant blocks of information such that if some of the blocks
are lost then the original data can be recovered from the remaining
blocks.  This package includes command-line tools, C API, Python API,
and Haskell API.")
    (license gpl2+)))

(define-public tahoe-lafs
  ;; TODO: Test reproducibility.
  (package
    (name "tahoe-lafs")
    (version "1.11.0")
    (source
      (origin
        (method git-fetch)
        (uri
          (git-reference
            (url "https://github.com/tahoe-lafs/tahoe-lafs.git")
            (commit
              (string-append "tahoe-lafs-" version))))
        (file-name
          (string-append name "-" version))
        (sha256
          (base32
            "1frzf146sdqm6nwqqy5p7ksp09qrkxysk98jwn7lvbn115z4i68q"))))
    (build-system python-build-system)
    (inputs
      `(;; FIXME: Needs "/etc/ssh/moduli".
        ;; FIXME: Needs "/etc/mime.types".
        ;; TODO: Make "docs".
        ("net-tools" ,net-tools)
        ("python2-characteristic" ,python2-characteristic)
        ("python2-foolscap" ,python2-foolscap)
        ("python2-nevow" ,python2-nevow)
        ("python2-pyasn1" ,python2-pyasn1)
        ("python2-pyasn1-modules" ,python2-pyasn1-modules)
        ("python2-pycrypto" ,python2-pycrypto)
        ("python2-pycryptopp" ,python2-pycryptopp)
        ("python2-pyopenssl" ,python2-pyopenssl)
        ("python2-service-identity" ,python2-service-identity)
        ("python2-setuptools" ,python2-setuptools)
        ("python2-simplejson" ,python2-simplejson)
        ("python2-twisted-tls" ,python2-twisted-tls)
        ("python2-zfec" ,python2-zfec)
        ("python2-zope-interface" ,python2-zope-interface)))
    (arguments
      `(#:configure-flags
          '("--single-version-externally-managed"
            "--record=tahoe-lafs.txt")
        #:phases
          (modify-phases %standard-phases
            (add-after 'unpack 'fix-paths
              (lambda*
                  (#:key inputs #:allow-other-keys)
                (let
                    ((net-tools
                       (assoc-ref inputs "net-tools")))
                  ;; FIXME: "src/allmydata/util/iputil.py" seems to be older
                  ;; and more updated than pyutil's.
                  (and
                    (substitute* "src/allmydata/util/iputil.py"
                      (("'/sbin/ifconfig'")
                         (string-append "'" net-tools "/sbin/ifconfig'"))
                      (("('/bin/ip', ('addr',), _addr_re),\\n[[:blank:]]*")
                         "")
                      (("('/usr/sbin/ifconfig', ('-a',), _addr_re),\\n[[:blank:]]*")
                         "")
                      (("('/usr/etc/ifconfig', ('-a',), _addr_re),\\n[[:blank:]]*")
                         "")))))))
        #:python ,python-2)) ; TODO: Test with Python 3.
    (home-page "https://tahoe-lafs.org/")
    (synopsis "Decentralized storage system with provider-independent security")
    (description
      "Distributes your filesystem across multiple servers, and even if some of
the servers fail or are taken over by an attacker, the entire filesystem
continues to work correctly and to preserve your privacy and security.")
    (license gpl2+)))

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

end of thread, other threads:[~2016-12-26 18:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-25 13:43 Dormant WIP (please take over): Add Tahoe-LAFS and various packages Adonay Felipe Nogueira
2016-12-26 18:00 ` ng0

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).