From 3f90b2b1c0e2a1f5266522bdee393a91dba902ac Mon Sep 17 00:00:00 2001 From: Evan Straw Date: Sun, 31 Jan 2021 17:07:44 -0800 Subject: [PATCH 1/2] gnu: Add pystring. * gnu/packages/cpp.scm (pystring): New variable. --- gnu/packages/cpp.scm | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index ae47490755..9c5269d354 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2020 Alexandros Theodotou ;;; Copyright © 2020, 2021 Greg Hogan ;;; Copyright © 2020 Brett Gilio +;;; Copyright © 2021 Evan Straw ;;; ;;; This file is part of GNU Guix. ;;; @@ -899,3 +900,57 @@ provides a number of utilities to make coding with expected cleaner.") (description "Magic Enum offers static reflection of enums, with conversions to and from strings, iteration and related functionality.") (license license:expat))) + +(define-public pystring + (package + (name "pystring") + (version "1.1.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/imageworks/pystring") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1w31pjiyshqgk6zd6m3ab3xfgb0ribi77r6fwrry2aw8w1adjknf")))) + (build-system gnu-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + ;; pystring does not have a configure script + (delete 'configure) + ;; Makefile attempts to install to /usr/lib; change this to the + ;; proper output path + (add-before 'install 'fix-install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (substitute* "Makefile" + (("LIBDIR = /usr/lib") + (string-append "LIBDIR = " lib))) + (mkdir-p lib) + #t))) + ;; Makefile does not install the header files for the library; + ;; install them to an "include" directory under the proper output + ;; path + (add-after 'install 'install-header + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (inc (string-append out "/include/pystring"))) + (mkdir-p inc) + (copy-file "pystring.h" + (string-append inc "/pystring.h")) + #t)))))) + (native-inputs `(("libtool" ,libtool))) + (home-page "https://github.com/imageworks/pystring") + (synopsis "C++ functions matching the interface and behavior of Python +string methods") + (description "Pystring is a collection of C++ functions which match the +interface and behavior of python's string class methods using std::string. +Implemented in C++, it does not require or make use of a python interpreter. +It provides convenience and familiarity for common string operations not +included in the standard C++ library. It's also useful in environments where +both C++ and python are used.") + (license license:bsd-3))) -- 2.25.1