unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: Add nss.
@ 2015-01-07 11:29 宋文武
  2015-01-07 16:50 ` Mark H Weaver
  0 siblings, 1 reply; 11+ messages in thread
From: 宋文武 @ 2015-01-07 11:29 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/patches/nss.patch: New file.
* gnu-system.scm (dist_patch_DATA): Add it.
* gnu/packages/polkit.scm (nss): New variable.
---
 gnu-system.am                  |   1 +
 gnu/packages/patches/nss.patch | 241 +++++++++++++++++++++++++++++++++++++++++
 gnu/packages/polkit.scm        |  84 ++++++++++++++
 3 files changed, 326 insertions(+)
 create mode 100644 gnu/packages/patches/nss.patch

diff --git a/gnu-system.am b/gnu-system.am
index 4086067..046ded5 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -422,6 +422,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/mupdf-buildsystem-fix.patch		\
   gnu/packages/patches/mutt-CVE-2014-9116.patch			\
   gnu/packages/patches/net-tools-bitrot.patch			\
+  gnu/packages/patches/nss.patch				\
   gnu/packages/patches/nvi-assume-preserve-path.patch           \
   gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
   gnu/packages/patches/ots-no-include-missing-file.patch	\
diff --git a/gnu/packages/patches/nss.patch b/gnu/packages/patches/nss.patch
new file mode 100644
index 0000000..356ff0d
--- /dev/null
+++ b/gnu/packages/patches/nss.patch
@@ -0,0 +1,241 @@
+--- nss-3.17.1/nss/config/Makefile
++++ nss-3.17.1/nss/config/Makefile
+@@ -0,0 +1,40 @@
++CORE_DEPTH = ..
++DEPTH      = ..
++
++include $(CORE_DEPTH)/coreconf/config.mk
++
++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
++PREFIX = /usr
++
++all: export libs
++
++export:
++	# Create the nss.pc file
++	mkdir -p $(DIST)/lib/pkgconfig
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@exec_prefix@,\$${prefix}," \
++	    -e "s,@libdir@,\$${prefix}/lib," \
++	    -e "s,@includedir@,\$${prefix}/include/nss," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss.pc.in > nss.pc
++	chmod 0644 nss.pc
++	cp nss.pc $(DIST)/lib/pkgconfig
++
++	# Create the nss-config script
++	mkdir -p $(DIST)/bin
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss-config.in > nss-config
++	chmod 0755 nss-config
++	cp nss-config $(DIST)/bin
++
++libs:
++
++dummy: all export libs
++
+--- nss-3.17.1/nss/config/nss-config.in
++++ nss-3.17.1/nss/config/nss-config.in
+@@ -0,0 +1,145 @@
++#!/bin/sh
++
++prefix=@prefix@
++
++major_version=@NSS_MAJOR_VERSION@
++minor_version=@NSS_MINOR_VERSION@
++patch_version=@NSS_PATCH_VERSION@
++
++usage()
++{
++	cat <<EOF
++Usage: nss-config [OPTIONS] [LIBRARIES]
++Options:
++	[--prefix[=DIR]]
++	[--exec-prefix[=DIR]]
++	[--includedir[=DIR]]
++	[--libdir[=DIR]]
++	[--version]
++	[--libs]
++	[--cflags]
++Dynamic Libraries:
++	nss
++	ssl
++	smime
++	nssutil
++EOF
++	exit $1
++}
++
++if test $# -eq 0; then
++	usage 1 1>&2
++fi
++
++lib_ssl=yes
++lib_smime=yes
++lib_nss=yes
++lib_nssutil=yes
++
++while test $# -gt 0; do
++  case "$1" in
++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++  *) optarg= ;;
++  esac
++
++  case $1 in
++    --prefix=*)
++      prefix=$optarg
++      ;;
++    --prefix)
++      echo_prefix=yes
++      ;;
++    --exec-prefix=*)
++      exec_prefix=$optarg
++      ;;
++    --exec-prefix)
++      echo_exec_prefix=yes
++      ;;
++    --includedir=*)
++      includedir=$optarg
++      ;;
++    --includedir)
++      echo_includedir=yes
++      ;;
++    --libdir=*)
++      libdir=$optarg
++      ;;
++    --libdir)
++      echo_libdir=yes
++      ;;
++    --version)
++      echo ${major_version}.${minor_version}.${patch_version}
++      ;;
++    --cflags)
++      echo_cflags=yes
++      ;;
++    --libs)
++      echo_libs=yes
++      ;;
++    ssl)
++      lib_ssl=yes
++      ;;
++    smime)
++      lib_smime=yes
++      ;;
++    nss)
++      lib_nss=yes
++      ;;
++    nssutil)
++      lib_nssutil=yes
++      ;;
++    *)
++      usage 1 1>&2
++      ;;
++  esac
++  shift
++done
++
++# Set variables that may be dependent upon other variables
++if test -z "$exec_prefix"; then
++    exec_prefix=`pkg-config --variable=exec_prefix nss`
++fi
++if test -z "$includedir"; then
++    includedir=`pkg-config --variable=includedir nss`
++fi
++if test -z "$libdir"; then
++    libdir=`pkg-config --variable=libdir nss`
++fi
++
++if test "$echo_prefix" = "yes"; then
++    echo $prefix
++fi
++
++if test "$echo_exec_prefix" = "yes"; then
++    echo $exec_prefix
++fi
++
++if test "$echo_includedir" = "yes"; then
++    echo $includedir
++fi
++
++if test "$echo_libdir" = "yes"; then
++    echo $libdir
++fi
++
++if test "$echo_cflags" = "yes"; then
++    echo -I$includedir
++fi
++
++if test "$echo_libs" = "yes"; then
++      libdirs=""
++      if test -n "$lib_ssl"; then
++	libdirs="$libdirs -lssl${major_version}"
++      fi
++      if test -n "$lib_smime"; then
++	libdirs="$libdirs -lsmime${major_version}"
++      fi
++      if test -n "$lib_nss"; then
++	libdirs="$libdirs -lnss${major_version}"
++      fi
++      if test -n "$lib_nssutil"; then
++       libdirs="$libdirs -lnssutil${major_version}"
++      fi
++      echo $libdirs
++fi
++
+--- nss-3.17.1/nss/config/nss.pc.in
++++ nss-3.17.1/nss/config/nss.pc.in
+@@ -0,0 +1,12 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: NSS
++Description: Network Security Services
++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
++Requires: nspr >= 4.8
++Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
++Cflags: -I${includedir}
++
+--- nss-3.17.1/nss/Makefile
++++ nss-3.17.1/nss/Makefile
+@@ -44,7 +44,7 @@
+ # (7) Execute "local" rules. (OPTIONAL).                              #
+ #######################################################################
+ 
+-nss_build_all: build_nspr all
++nss_build_all: all
+ 
+ nss_clean_all: clobber_nspr clobber
+ 
+@@ -109,12 +109,6 @@
+ 	--with-dist-prefix='$(NSPR_PREFIX)' \
+ 	--with-dist-includedir='$(NSPR_PREFIX)/include'
+ 
+-build_nspr: $(NSPR_CONFIG_STATUS)
+-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
+-
+-clobber_nspr: $(NSPR_CONFIG_STATUS)
+-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) clobber
+-
+ build_docs:
+ 	$(MAKE) -C $(CORE_DEPTH)/doc
+ 
+--- nss-3.17.1/nss/manifest.mn
++++ nss-3.17.1/nss/manifest.mn
+@@ -10,7 +10,7 @@
+ 
+ RELEASE = nss
+ 
+-DIRS = coreconf lib cmd
++DIRS = coreconf lib cmd config
+ 
+ ifdef NSS_BUILD_GTESTS
+ DIRS += external_tests
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index 2be1d0b..8a6fa7c 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,8 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
@@ -103,6 +106,87 @@ platform-neutral API for system level and libc-like functions.  It is used
 in the Mozilla clients.")
     (license mpl2.0)))
 
+(define-public nss
+  (package
+    (name "nss")
+    (version "3.17.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+                    "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz"))
+              (sha256
+               (base32
+                "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl"))
+              (patches (list (search-patch "nss.patch")))))
+    (build-system gnu-build-system)
+    (outputs '("out" "bin"))
+    (arguments
+     '(#:parallel-build? #f ; failed
+       #:make-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (nspr (string-append (assoc-ref %build-inputs "nspr")))
+              (rpath (string-append "-Wl,-rpath=" out "/lib")))
+         (list "-C" "nss" (string-append "PREFIX=" out)
+               "NSDISTMODE=copy"
+               "NSS_USE_SYSTEM_SQLITE=1"
+               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
+               ;; Add $out/lib to RPATH.
+               (string-append "RPATH=" rpath)
+               (string-append "LDFLAGS=" rpath)))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (srfi srfi-26))
+       #:imported-modules ((guix build gnu-build-system)
+                           (guix build utils))
+       #:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key system inputs #:allow-other-keys)
+          (when (string-prefix? "x86_64" system)
+            (setenv "USE_64" "1")))
+        (alist-replace
+         'check
+         (lambda _
+           (setenv "DOMSUF" "(none)")
+           (setenv "USE_IP" "TRUE")
+           (setenv "IP_ADDRESS" "127.0.0.1")
+           (system "./nss/tests/all.sh"))
+         (alist-replace
+          'install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
+                   (inc (string-append out "/include/nss"))
+                   (lib (string-append out "/lib"))
+                   (obj (car (scandir "dist" (cut string-suffix? "OBJ" <>))))
+                   (nss-config (string-append "dist/" obj "/bin/nss-config")))
+              ;; Install nss-config to $out/bin.
+              (mkdir-p (string-append out "/bin"))
+              (copy-file nss-config (string-append out "/bin/nss-config"))
+              (delete-file nss-config)
+              ;; Install other files.
+              (copy-recursively "dist/public/nss" inc)
+              (copy-recursively (string-append "dist/" obj "/bin") bin)
+              (copy-recursively (string-append "dist/" obj "/lib") lib)))
+          %standard-phases)))))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
+    (native-inputs `(("perl" ,perl)))
+    (home-page
+     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
+    (synopsis "Network Security Services")
+    (description
+     "Network Security Services (NSS) is a set of libraries designed to support
+cross-platform development of security-enabled client and server applications.
+Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,
+PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security
+standards.")
+    (license mpl2.0)))
+
 (define-public polkit
   (package
     (name "polkit")
-- 
2.1.2

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

* Re: [PATCH] gnu: Add nss.
  2015-01-07 11:29 [PATCH] gnu: Add nss 宋文武
@ 2015-01-07 16:50 ` Mark H Weaver
  2015-01-08 13:00   ` 宋文武
  0 siblings, 1 reply; 11+ messages in thread
From: Mark H Weaver @ 2015-01-07 16:50 UTC (permalink / raw)
  To: 宋文武; +Cc: guix-devel

宋文武 <iyzsong@gmail.com> writes:

> * gnu/packages/patches/nss.patch: New file.
> * gnu-system.scm (dist_patch_DATA): Add it.
> * gnu/packages/polkit.scm (nss): New variable.

polkit.scm seems like the wrong place for 'nss', although admittedly
it's not obvious where it should go.

> ---
>  gnu-system.am                  |   1 +
>  gnu/packages/patches/nss.patch | 241 +++++++++++++++++++++++++++++++++++++++++
>  gnu/packages/polkit.scm        |  84 ++++++++++++++
>  3 files changed, 326 insertions(+)
>  create mode 100644 gnu/packages/patches/nss.patch
>
> diff --git a/gnu-system.am b/gnu-system.am
> index 4086067..046ded5 100644
> --- a/gnu-system.am
> +++ b/gnu-system.am
> @@ -422,6 +422,7 @@ dist_patch_DATA =						\
>    gnu/packages/patches/mupdf-buildsystem-fix.patch		\
>    gnu/packages/patches/mutt-CVE-2014-9116.patch			\
>    gnu/packages/patches/net-tools-bitrot.patch			\
> +  gnu/packages/patches/nss.patch				\
>    gnu/packages/patches/nvi-assume-preserve-path.patch           \
>    gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
>    gnu/packages/patches/ots-no-include-missing-file.patch	\
> diff --git a/gnu/packages/patches/nss.patch b/gnu/packages/patches/nss.patch
> new file mode 100644
> index 0000000..356ff0d
> --- /dev/null
> +++ b/gnu/packages/patches/nss.patch
> @@ -0,0 +1,241 @@
> +--- nss-3.17.1/nss/config/Makefile
> ++++ nss-3.17.1/nss/config/Makefile
> +@@ -0,0 +1,40 @@
> ++CORE_DEPTH = ..
> ++DEPTH      = ..
> ++
> ++include $(CORE_DEPTH)/coreconf/config.mk
> ++
> ++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
> ++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
> ++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
> ++PREFIX = /usr
> ++
> ++all: export libs
> ++
> ++export:
> ++	# Create the nss.pc file
> ++	mkdir -p $(DIST)/lib/pkgconfig
> ++	sed -e "s,@prefix@,$(PREFIX)," \
> ++	    -e "s,@exec_prefix@,\$${prefix}," \
> ++	    -e "s,@libdir@,\$${prefix}/lib," \
> ++	    -e "s,@includedir@,\$${prefix}/include/nss," \
> ++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
> ++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
> ++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
> ++	    nss.pc.in > nss.pc
> ++	chmod 0644 nss.pc
> ++	cp nss.pc $(DIST)/lib/pkgconfig
> ++
> ++	# Create the nss-config script
> ++	mkdir -p $(DIST)/bin
> ++	sed -e "s,@prefix@,$(PREFIX)," \
> ++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
> ++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
> ++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
> ++	    nss-config.in > nss-config
> ++	chmod 0755 nss-config
> ++	cp nss-config $(DIST)/bin
> ++
> ++libs:
> ++
> ++dummy: all export libs
> ++
> +--- nss-3.17.1/nss/config/nss-config.in
> ++++ nss-3.17.1/nss/config/nss-config.in
> +@@ -0,0 +1,145 @@
> ++#!/bin/sh
> ++
> ++prefix=@prefix@
> ++
> ++major_version=@NSS_MAJOR_VERSION@
> ++minor_version=@NSS_MINOR_VERSION@
> ++patch_version=@NSS_PATCH_VERSION@
> ++
> ++usage()
> ++{
> ++	cat <<EOF
> ++Usage: nss-config [OPTIONS] [LIBRARIES]
> ++Options:
> ++	[--prefix[=DIR]]
> ++	[--exec-prefix[=DIR]]
> ++	[--includedir[=DIR]]
> ++	[--libdir[=DIR]]
> ++	[--version]
> ++	[--libs]
> ++	[--cflags]
> ++Dynamic Libraries:
> ++	nss
> ++	ssl
> ++	smime
> ++	nssutil
> ++EOF
> ++	exit $1
> ++}
> ++
> ++if test $# -eq 0; then
> ++	usage 1 1>&2
> ++fi
> ++
> ++lib_ssl=yes
> ++lib_smime=yes
> ++lib_nss=yes
> ++lib_nssutil=yes
> ++
> ++while test $# -gt 0; do
> ++  case "$1" in
> ++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
> ++  *) optarg= ;;
> ++  esac
> ++
> ++  case $1 in
> ++    --prefix=*)
> ++      prefix=$optarg
> ++      ;;
> ++    --prefix)
> ++      echo_prefix=yes
> ++      ;;
> ++    --exec-prefix=*)
> ++      exec_prefix=$optarg
> ++      ;;
> ++    --exec-prefix)
> ++      echo_exec_prefix=yes
> ++      ;;
> ++    --includedir=*)
> ++      includedir=$optarg
> ++      ;;
> ++    --includedir)
> ++      echo_includedir=yes
> ++      ;;
> ++    --libdir=*)
> ++      libdir=$optarg
> ++      ;;
> ++    --libdir)
> ++      echo_libdir=yes
> ++      ;;
> ++    --version)
> ++      echo ${major_version}.${minor_version}.${patch_version}
> ++      ;;
> ++    --cflags)
> ++      echo_cflags=yes
> ++      ;;
> ++    --libs)
> ++      echo_libs=yes
> ++      ;;
> ++    ssl)
> ++      lib_ssl=yes
> ++      ;;
> ++    smime)
> ++      lib_smime=yes
> ++      ;;
> ++    nss)
> ++      lib_nss=yes
> ++      ;;
> ++    nssutil)
> ++      lib_nssutil=yes
> ++      ;;
> ++    *)
> ++      usage 1 1>&2
> ++      ;;
> ++  esac
> ++  shift
> ++done
> ++
> ++# Set variables that may be dependent upon other variables
> ++if test -z "$exec_prefix"; then
> ++    exec_prefix=`pkg-config --variable=exec_prefix nss`
> ++fi
> ++if test -z "$includedir"; then
> ++    includedir=`pkg-config --variable=includedir nss`
> ++fi
> ++if test -z "$libdir"; then
> ++    libdir=`pkg-config --variable=libdir nss`
> ++fi
> ++
> ++if test "$echo_prefix" = "yes"; then
> ++    echo $prefix
> ++fi
> ++
> ++if test "$echo_exec_prefix" = "yes"; then
> ++    echo $exec_prefix
> ++fi
> ++
> ++if test "$echo_includedir" = "yes"; then
> ++    echo $includedir
> ++fi
> ++
> ++if test "$echo_libdir" = "yes"; then
> ++    echo $libdir
> ++fi
> ++
> ++if test "$echo_cflags" = "yes"; then
> ++    echo -I$includedir
> ++fi
> ++
> ++if test "$echo_libs" = "yes"; then
> ++      libdirs=""
> ++      if test -n "$lib_ssl"; then
> ++	libdirs="$libdirs -lssl${major_version}"
> ++      fi
> ++      if test -n "$lib_smime"; then
> ++	libdirs="$libdirs -lsmime${major_version}"
> ++      fi
> ++      if test -n "$lib_nss"; then
> ++	libdirs="$libdirs -lnss${major_version}"
> ++      fi
> ++      if test -n "$lib_nssutil"; then
> ++       libdirs="$libdirs -lnssutil${major_version}"
> ++      fi
> ++      echo $libdirs
> ++fi
> ++
> +--- nss-3.17.1/nss/config/nss.pc.in
> ++++ nss-3.17.1/nss/config/nss.pc.in
> +@@ -0,0 +1,12 @@
> ++prefix=@prefix@
> ++exec_prefix=@exec_prefix@
> ++libdir=@libdir@
> ++includedir=@includedir@
> ++
> ++Name: NSS
> ++Description: Network Security Services
> ++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
> ++Requires: nspr >= 4.8
> ++Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
> ++Cflags: -I${includedir}
> ++
> +--- nss-3.17.1/nss/Makefile
> ++++ nss-3.17.1/nss/Makefile
> +@@ -44,7 +44,7 @@
> + # (7) Execute "local" rules. (OPTIONAL).                              #
> + #######################################################################
> + 
> +-nss_build_all: build_nspr all
> ++nss_build_all: all
> + 
> + nss_clean_all: clobber_nspr clobber
> + 
> +@@ -109,12 +109,6 @@
> + 	--with-dist-prefix='$(NSPR_PREFIX)' \
> + 	--with-dist-includedir='$(NSPR_PREFIX)/include'
> + 
> +-build_nspr: $(NSPR_CONFIG_STATUS)
> +-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
> +-
> +-clobber_nspr: $(NSPR_CONFIG_STATUS)
> +-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) clobber
> +-
> + build_docs:
> + 	$(MAKE) -C $(CORE_DEPTH)/doc
> + 
> +--- nss-3.17.1/nss/manifest.mn
> ++++ nss-3.17.1/nss/manifest.mn
> +@@ -10,7 +10,7 @@
> + 
> + RELEASE = nss
> + 
> +-DIRS = coreconf lib cmd
> ++DIRS = coreconf lib cmd config
> + 
> + ifdef NSS_BUILD_GTESTS
> + DIRS += external_tests

Why is this patch needed?  I find it surprising how much stuff you had
to add in order to get this to build.  Where did it all come from?

Some explanation will be needed at the top of the patch, and also the
patch should have a more descriptive name than "nss.patch".

> diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
> index 2be1d0b..8a6fa7c 100644
> --- a/gnu/packages/polkit.scm
> +++ b/gnu/packages/polkit.scm
> @@ -1,5 +1,6 @@
>  ;;; GNU Guix --- Functional package management for GNU
>  ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
> +;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -23,6 +24,8 @@
>    #:use-module (guix build-system cmake)
>    #:use-module (guix build-system gnu)
>    #:use-module (gnu packages)
> +  #:use-module (gnu packages compression)
> +  #:use-module (gnu packages databases)
>    #:use-module (gnu packages glib)
>    #:use-module (gnu packages linux)
>    #:use-module (gnu packages perl)
> @@ -103,6 +106,87 @@ platform-neutral API for system level and libc-like functions.  It is used
>  in the Mozilla clients.")
>      (license mpl2.0)))
>  
> +(define-public nss
> +  (package
> +    (name "nss")
> +    (version "3.17.3")
> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append
> +                    "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
> +                    "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz"))
> +              (sha256
> +               (base32
> +                "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl"))
> +              (patches (list (search-patch "nss.patch")))))
> +    (build-system gnu-build-system)
> +    (outputs '("out" "bin"))
> +    (arguments
> +     '(#:parallel-build? #f ; failed
> +       #:make-flags
> +       (let* ((out (assoc-ref %outputs "out"))
> +              (nspr (string-append (assoc-ref %build-inputs "nspr")))
> +              (rpath (string-append "-Wl,-rpath=" out "/lib")))
> +         (list "-C" "nss" (string-append "PREFIX=" out)
> +               "NSDISTMODE=copy"
> +               "NSS_USE_SYSTEM_SQLITE=1"
> +               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
> +               ;; Add $out/lib to RPATH.
> +               (string-append "RPATH=" rpath)
> +               (string-append "LDFLAGS=" rpath)))
> +       #:modules ((guix build gnu-build-system)
> +                  (guix build utils)
> +                  (ice-9 ftw)
> +                  (srfi srfi-26))
> +       #:imported-modules ((guix build gnu-build-system)
> +                           (guix build utils))
> +       #:phases
> +       (alist-replace
> +        'configure
> +        (lambda* (#:key system inputs #:allow-other-keys)
> +          (when (string-prefix? "x86_64" system)
> +            (setenv "USE_64" "1")))
> +        (alist-replace
> +         'check
> +         (lambda _
> +           (setenv "DOMSUF" "(none)")
> +           (setenv "USE_IP" "TRUE")
> +           (setenv "IP_ADDRESS" "127.0.0.1")
> +           (system "./nss/tests/all.sh"))

This last expression should be (zero? (system "./nss/tests/all.sh")), to
signal an error if ./nss/tests/all.sh returns a non-zero status code.

> +         (alist-replace
> +          'install
> +          (lambda* (#:key outputs #:allow-other-keys)
> +            (let* ((out (assoc-ref outputs "out"))
> +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
> +                   (inc (string-append out "/include/nss"))
> +                   (lib (string-append out "/lib"))
> +                   (obj (car (scandir "dist" (cut string-suffix? "OBJ" <>))))

This looks potentially non-deterministic, if that 'scandir' call might
return more than one element.  If you expect only one, how about this
instead:

  (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
         ((obj) obj)))

That way, if there's more than one, an error will be reported.  You'll
need to add (ice-9 match) to #:modules.

      Mark

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

* Re: [PATCH] gnu: Add nss.
  2015-01-07 16:50 ` Mark H Weaver
@ 2015-01-08 13:00   ` 宋文武
  2015-01-10 21:06     ` Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: 宋文武 @ 2015-01-08 13:00 UTC (permalink / raw)
  To: Mark H Weaver; +Cc: guix-devel

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

Mark H Weaver <mhw@netris.org> writes:

> 宋文武 <iyzsong@gmail.com> writes:
>
>> * gnu/packages/patches/nss.patch: New file.
>> * gnu-system.scm (dist_patch_DATA): Add it.
>> * gnu/packages/polkit.scm (nss): New variable.
>
> polkit.scm seems like the wrong place for 'nss', although admittedly
> it's not obvious where it should go.
Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.
>
>> ---
>>  gnu-system.am                  |   1 +
>>  gnu/packages/patches/nss.patch | 241 +++++++++++++++++++++++++++++++++++++++++
>>  gnu/packages/polkit.scm        |  84 ++++++++++++++
>>  3 files changed, 326 insertions(+)
>>  create mode 100644 gnu/packages/patches/nss.patch
>>
>> diff --git a/gnu-system.am b/gnu-system.am
>> index 4086067..046ded5 100644
>> --- a/gnu-system.am
>> +++ b/gnu-system.am
>> @@ -422,6 +422,7 @@ dist_patch_DATA =						\
>>    gnu/packages/patches/mupdf-buildsystem-fix.patch		\
>>    gnu/packages/patches/mutt-CVE-2014-9116.patch			\
>>    gnu/packages/patches/net-tools-bitrot.patch			\
>> +  gnu/packages/patches/nss.patch				\
>>    gnu/packages/patches/nvi-assume-preserve-path.patch           \
>>    gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
>>    gnu/packages/patches/ots-no-include-missing-file.patch	\
>> diff --git a/gnu/packages/patches/nss.patch b/gnu/packages/patches/nss.patch
>> new file mode 100644
>> index 0000000..356ff0d
>> --- /dev/null
>> +++ b/gnu/packages/patches/nss.patch
>> @@ -0,0 +1,241 @@
>> +--- nss-3.17.1/nss/config/Makefile
>> ++++ nss-3.17.1/nss/config/Makefile
>> +@@ -0,0 +1,40 @@
>> ++CORE_DEPTH = ..
>> ++DEPTH      = ..
>> ++
>> ++include $(CORE_DEPTH)/coreconf/config.mk
>> ++
>> ++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
>> ++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
>> ++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
>> ++PREFIX = /usr
>> ++
>> ++all: export libs
>> ++
>> ++export:
>> ++	# Create the nss.pc file
>> ++	mkdir -p $(DIST)/lib/pkgconfig
>> ++	sed -e "s,@prefix@,$(PREFIX)," \
>> ++	    -e "s,@exec_prefix@,\$${prefix}," \
>> ++	    -e "s,@libdir@,\$${prefix}/lib," \
>> ++	    -e "s,@includedir@,\$${prefix}/include/nss," \
>> ++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
>> ++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
>> ++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
>> ++	    nss.pc.in > nss.pc
>> ++	chmod 0644 nss.pc
>> ++	cp nss.pc $(DIST)/lib/pkgconfig
>> ++
>> ++	# Create the nss-config script
>> ++	mkdir -p $(DIST)/bin
>> ++	sed -e "s,@prefix@,$(PREFIX)," \
>> ++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
>> ++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
>> ++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
>> ++	    nss-config.in > nss-config
>> ++	chmod 0755 nss-config
>> ++	cp nss-config $(DIST)/bin
>> ++
>> ++libs:
>> ++
>> ++dummy: all export libs
>> ++
>> +--- nss-3.17.1/nss/config/nss-config.in
>> ++++ nss-3.17.1/nss/config/nss-config.in
>> +@@ -0,0 +1,145 @@
>> ++#!/bin/sh
>> ++
>> ++prefix=@prefix@
>> ++
>> ++major_version=@NSS_MAJOR_VERSION@
>> ++minor_version=@NSS_MINOR_VERSION@
>> ++patch_version=@NSS_PATCH_VERSION@
>> ++
>> ++usage()
>> ++{
>> ++	cat <<EOF
>> ++Usage: nss-config [OPTIONS] [LIBRARIES]
>> ++Options:
>> ++	[--prefix[=DIR]]
>> ++	[--exec-prefix[=DIR]]
>> ++	[--includedir[=DIR]]
>> ++	[--libdir[=DIR]]
>> ++	[--version]
>> ++	[--libs]
>> ++	[--cflags]
>> ++Dynamic Libraries:
>> ++	nss
>> ++	ssl
>> ++	smime
>> ++	nssutil
>> ++EOF
>> ++	exit $1
>> ++}
>> ++
>> ++if test $# -eq 0; then
>> ++	usage 1 1>&2
>> ++fi
>> ++
>> ++lib_ssl=yes
>> ++lib_smime=yes
>> ++lib_nss=yes
>> ++lib_nssutil=yes
>> ++
>> ++while test $# -gt 0; do
>> ++  case "$1" in
>> ++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
>> ++  *) optarg= ;;
>> ++  esac
>> ++
>> ++  case $1 in
>> ++    --prefix=*)
>> ++      prefix=$optarg
>> ++      ;;
>> ++    --prefix)
>> ++      echo_prefix=yes
>> ++      ;;
>> ++    --exec-prefix=*)
>> ++      exec_prefix=$optarg
>> ++      ;;
>> ++    --exec-prefix)
>> ++      echo_exec_prefix=yes
>> ++      ;;
>> ++    --includedir=*)
>> ++      includedir=$optarg
>> ++      ;;
>> ++    --includedir)
>> ++      echo_includedir=yes
>> ++      ;;
>> ++    --libdir=*)
>> ++      libdir=$optarg
>> ++      ;;
>> ++    --libdir)
>> ++      echo_libdir=yes
>> ++      ;;
>> ++    --version)
>> ++      echo ${major_version}.${minor_version}.${patch_version}
>> ++      ;;
>> ++    --cflags)
>> ++      echo_cflags=yes
>> ++      ;;
>> ++    --libs)
>> ++      echo_libs=yes
>> ++      ;;
>> ++    ssl)
>> ++      lib_ssl=yes
>> ++      ;;
>> ++    smime)
>> ++      lib_smime=yes
>> ++      ;;
>> ++    nss)
>> ++      lib_nss=yes
>> ++      ;;
>> ++    nssutil)
>> ++      lib_nssutil=yes
>> ++      ;;
>> ++    *)
>> ++      usage 1 1>&2
>> ++      ;;
>> ++  esac
>> ++  shift
>> ++done
>> ++
>> ++# Set variables that may be dependent upon other variables
>> ++if test -z "$exec_prefix"; then
>> ++    exec_prefix=`pkg-config --variable=exec_prefix nss`
>> ++fi
>> ++if test -z "$includedir"; then
>> ++    includedir=`pkg-config --variable=includedir nss`
>> ++fi
>> ++if test -z "$libdir"; then
>> ++    libdir=`pkg-config --variable=libdir nss`
>> ++fi
>> ++
>> ++if test "$echo_prefix" = "yes"; then
>> ++    echo $prefix
>> ++fi
>> ++
>> ++if test "$echo_exec_prefix" = "yes"; then
>> ++    echo $exec_prefix
>> ++fi
>> ++
>> ++if test "$echo_includedir" = "yes"; then
>> ++    echo $includedir
>> ++fi
>> ++
>> ++if test "$echo_libdir" = "yes"; then
>> ++    echo $libdir
>> ++fi
>> ++
>> ++if test "$echo_cflags" = "yes"; then
>> ++    echo -I$includedir
>> ++fi
>> ++
>> ++if test "$echo_libs" = "yes"; then
>> ++      libdirs=""
>> ++      if test -n "$lib_ssl"; then
>> ++	libdirs="$libdirs -lssl${major_version}"
>> ++      fi
>> ++      if test -n "$lib_smime"; then
>> ++	libdirs="$libdirs -lsmime${major_version}"
>> ++      fi
>> ++      if test -n "$lib_nss"; then
>> ++	libdirs="$libdirs -lnss${major_version}"
>> ++      fi
>> ++      if test -n "$lib_nssutil"; then
>> ++       libdirs="$libdirs -lnssutil${major_version}"
>> ++      fi
>> ++      echo $libdirs
>> ++fi
>> ++
>> +--- nss-3.17.1/nss/config/nss.pc.in
>> ++++ nss-3.17.1/nss/config/nss.pc.in
>> +@@ -0,0 +1,12 @@
>> ++prefix=@prefix@
>> ++exec_prefix=@exec_prefix@
>> ++libdir=@libdir@
>> ++includedir=@includedir@
>> ++
>> ++Name: NSS
>> ++Description: Network Security Services
>> ++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
>> ++Requires: nspr >= 4.8
>> ++Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3
>> ++Cflags: -I${includedir}
>> ++
>> +--- nss-3.17.1/nss/Makefile
>> ++++ nss-3.17.1/nss/Makefile
>> +@@ -44,7 +44,7 @@
>> + # (7) Execute "local" rules. (OPTIONAL).                              #
>> + #######################################################################
>> + 
>> +-nss_build_all: build_nspr all
>> ++nss_build_all: all
>> + 
>> + nss_clean_all: clobber_nspr clobber
>> + 
>> +@@ -109,12 +109,6 @@
>> + 	--with-dist-prefix='$(NSPR_PREFIX)' \
>> + 	--with-dist-includedir='$(NSPR_PREFIX)/include'
>> + 
>> +-build_nspr: $(NSPR_CONFIG_STATUS)
>> +-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME)
>> +-
>> +-clobber_nspr: $(NSPR_CONFIG_STATUS)
>> +-	$(MAKE) -C $(CORE_DEPTH)/../nspr/$(OBJDIR_NAME) clobber
>> +-
>> + build_docs:
>> + 	$(MAKE) -C $(CORE_DEPTH)/doc
>> + 
>> +--- nss-3.17.1/nss/manifest.mn
>> ++++ nss-3.17.1/nss/manifest.mn
>> +@@ -10,7 +10,7 @@
>> + 
>> + RELEASE = nss
>> + 
>> +-DIRS = coreconf lib cmd
>> ++DIRS = coreconf lib cmd config
>> + 
>> + ifdef NSS_BUILD_GTESTS
>> + DIRS += external_tests
>
> Why is this patch needed?  I find it surprising how much stuff you had
> to add in order to get this to build.  Where did it all come from?
It's to install nss.pc and nss-config, from nixpkgs (from gentoo).
>
> Some explanation will be needed at the top of the patch, and also the
> patch should have a more descriptive name than "nss.patch".
OK.
>
>> diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
>> index 2be1d0b..8a6fa7c 100644
>> --- a/gnu/packages/polkit.scm
>> +++ b/gnu/packages/polkit.scm
>> @@ -1,5 +1,6 @@
>>  ;;; GNU Guix --- Functional package management for GNU
>>  ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
>> +;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
>>  ;;;
>>  ;;; This file is part of GNU Guix.
>>  ;;;
>> @@ -23,6 +24,8 @@
>>    #:use-module (guix build-system cmake)
>>    #:use-module (guix build-system gnu)
>>    #:use-module (gnu packages)
>> +  #:use-module (gnu packages compression)
>> +  #:use-module (gnu packages databases)
>>    #:use-module (gnu packages glib)
>>    #:use-module (gnu packages linux)
>>    #:use-module (gnu packages perl)
>> @@ -103,6 +106,87 @@ platform-neutral API for system level and libc-like functions.  It is used
>>  in the Mozilla clients.")
>>      (license mpl2.0)))
>>  
>> +(define-public nss
>> +  (package
>> +    (name "nss")
>> +    (version "3.17.3")
>> +    (source (origin
>> +              (method url-fetch)
>> +              (uri (string-append
>> +                    "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
>> +                    "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz"))
>> +              (sha256
>> +               (base32
>> +                "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl"))
>> +              (patches (list (search-patch "nss.patch")))))
>> +    (build-system gnu-build-system)
>> +    (outputs '("out" "bin"))
>> +    (arguments
>> +     '(#:parallel-build? #f ; failed
>> +       #:make-flags
>> +       (let* ((out (assoc-ref %outputs "out"))
>> +              (nspr (string-append (assoc-ref %build-inputs "nspr")))
>> +              (rpath (string-append "-Wl,-rpath=" out "/lib")))
>> +         (list "-C" "nss" (string-append "PREFIX=" out)
>> +               "NSDISTMODE=copy"
>> +               "NSS_USE_SYSTEM_SQLITE=1"
>> +               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
>> +               ;; Add $out/lib to RPATH.
>> +               (string-append "RPATH=" rpath)
>> +               (string-append "LDFLAGS=" rpath)))
>> +       #:modules ((guix build gnu-build-system)
>> +                  (guix build utils)
>> +                  (ice-9 ftw)
>> +                  (srfi srfi-26))
>> +       #:imported-modules ((guix build gnu-build-system)
>> +                           (guix build utils))
>> +       #:phases
>> +       (alist-replace
>> +        'configure
>> +        (lambda* (#:key system inputs #:allow-other-keys)
>> +          (when (string-prefix? "x86_64" system)
>> +            (setenv "USE_64" "1")))
>> +        (alist-replace
>> +         'check
>> +         (lambda _
>> +           (setenv "DOMSUF" "(none)")
>> +           (setenv "USE_IP" "TRUE")
>> +           (setenv "IP_ADDRESS" "127.0.0.1")
>> +           (system "./nss/tests/all.sh"))
>
> This last expression should be (zero? (system "./nss/tests/all.sh")), to
> signal an error if ./nss/tests/all.sh returns a non-zero status code.
OK.
>
>> +         (alist-replace
>> +          'install
>> +          (lambda* (#:key outputs #:allow-other-keys)
>> +            (let* ((out (assoc-ref outputs "out"))
>> +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
>> +                   (inc (string-append out "/include/nss"))
>> +                   (lib (string-append out "/lib"))
>> +                   (obj (car (scandir "dist" (cut string-suffix?
>> "OBJ" <>))))
NSS contains many static libraries which I think will not mostly used
by other. How about split them to a 'static-lib' (or a better name).
>
> This looks potentially non-deterministic, if that 'scandir' call might
> return more than one element.  If you expect only one, how about this
> instead:
>
>   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
>          ((obj) obj)))
>
> That way, if there's more than one, an error will be reported.  You'll
> need to add (ice-9 match) to #:modules.
Adjusted.
>
>       Mark

Updated patch:

[-- Attachment #2: 0001-gnu-Add-nss.patch --]
[-- Type: text/x-patch, Size: 11714 bytes --]

From f56c7ef06f8eb697e9b0e0eac2e6c8117520d5d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
Date: Tue, 6 Jan 2015 23:57:31 +0800
Subject: [PATCH] gnu: Add nss.

* gnu/packages/patches/nss-pkgconfig.patch: New file.
* gnu-system.scm (dist_patch_DATA): Add it.
* gnu/packages/polkit.scm (nss): New variable.
---
 gnu-system.am                            |   1 +
 gnu/packages/patches/nss-pkgconfig.patch | 220 +++++++++++++++++++++++++++++++
 gnu/packages/polkit.scm                  |  93 +++++++++++++
 3 files changed, 314 insertions(+)
 create mode 100644 gnu/packages/patches/nss-pkgconfig.patch

diff --git a/gnu-system.am b/gnu-system.am
index dc881bb..33d870c 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -422,6 +422,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/mupdf-buildsystem-fix.patch		\
   gnu/packages/patches/mutt-CVE-2014-9116.patch			\
   gnu/packages/patches/net-tools-bitrot.patch			\
+  gnu/packages/patches/nss-pkgconfig.patch			\
   gnu/packages/patches/nvi-assume-preserve-path.patch           \
   gnu/packages/patches/orpheus-cast-errors-and-includes.patch	\
   gnu/packages/patches/ots-no-include-missing-file.patch	\
diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
new file mode 100644
index 0000000..3832dc3
--- /dev/null
+++ b/gnu/packages/patches/nss-pkgconfig.patch
@@ -0,0 +1,220 @@
+Install nss.pc and nss-config.
+Based on nss-3.17-gentoo-fixups.patch from nixpkgs.
+
+--- nss-3.17.1/nss/config/Makefile
++++ nss-3.17.1/nss/config/Makefile
+@@ -0,0 +1,40 @@
++CORE_DEPTH = ..
++DEPTH      = ..
++
++include $(CORE_DEPTH)/coreconf/config.mk
++
++NSS_MAJOR_VERSION = `grep "NSS_VMAJOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_MINOR_VERSION = `grep "NSS_VMINOR" ../lib/nss/nss.h | awk '{print $$3}'`
++NSS_PATCH_VERSION = `grep "NSS_VPATCH" ../lib/nss/nss.h | awk '{print $$3}'`
++PREFIX = /usr
++
++all: export libs
++
++export:
++	# Create the nss.pc file
++	mkdir -p $(DIST)/lib/pkgconfig
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@exec_prefix@,\$${prefix}," \
++	    -e "s,@libdir@,\$${prefix}/lib/nss," \
++	    -e "s,@includedir@,\$${prefix}/include/nss," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION),g" \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss.pc.in > nss.pc
++	chmod 0644 nss.pc
++	cp nss.pc $(DIST)/lib/pkgconfig
++
++	# Create the nss-config script
++	mkdir -p $(DIST)/bin
++	sed -e "s,@prefix@,$(PREFIX)," \
++	    -e "s,@NSS_MAJOR_VERSION@,$(NSS_MAJOR_VERSION)," \
++	    -e "s,@NSS_MINOR_VERSION@,$(NSS_MINOR_VERSION)," \
++	    -e "s,@NSS_PATCH_VERSION@,$(NSS_PATCH_VERSION)," \
++	    nss-config.in > nss-config
++	chmod 0755 nss-config
++	cp nss-config $(DIST)/bin
++
++libs:
++
++dummy: all export libs
++
+--- nss-3.17.1/nss/config/nss-config.in
++++ nss-3.17.1/nss/config/nss-config.in
+@@ -0,0 +1,145 @@
++#!/bin/sh
++
++prefix=@prefix@
++
++major_version=@NSS_MAJOR_VERSION@
++minor_version=@NSS_MINOR_VERSION@
++patch_version=@NSS_PATCH_VERSION@
++
++usage()
++{
++	cat <<EOF
++Usage: nss-config [OPTIONS] [LIBRARIES]
++Options:
++	[--prefix[=DIR]]
++	[--exec-prefix[=DIR]]
++	[--includedir[=DIR]]
++	[--libdir[=DIR]]
++	[--version]
++	[--libs]
++	[--cflags]
++Dynamic Libraries:
++	nss
++	ssl
++	smime
++	nssutil
++EOF
++	exit $1
++}
++
++if test $# -eq 0; then
++	usage 1 1>&2
++fi
++
++lib_ssl=yes
++lib_smime=yes
++lib_nss=yes
++lib_nssutil=yes
++
++while test $# -gt 0; do
++  case "$1" in
++  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
++  *) optarg= ;;
++  esac
++
++  case $1 in
++    --prefix=*)
++      prefix=$optarg
++      ;;
++    --prefix)
++      echo_prefix=yes
++      ;;
++    --exec-prefix=*)
++      exec_prefix=$optarg
++      ;;
++    --exec-prefix)
++      echo_exec_prefix=yes
++      ;;
++    --includedir=*)
++      includedir=$optarg
++      ;;
++    --includedir)
++      echo_includedir=yes
++      ;;
++    --libdir=*)
++      libdir=$optarg
++      ;;
++    --libdir)
++      echo_libdir=yes
++      ;;
++    --version)
++      echo ${major_version}.${minor_version}.${patch_version}
++      ;;
++    --cflags)
++      echo_cflags=yes
++      ;;
++    --libs)
++      echo_libs=yes
++      ;;
++    ssl)
++      lib_ssl=yes
++      ;;
++    smime)
++      lib_smime=yes
++      ;;
++    nss)
++      lib_nss=yes
++      ;;
++    nssutil)
++      lib_nssutil=yes
++      ;;
++    *)
++      usage 1 1>&2
++      ;;
++  esac
++  shift
++done
++
++# Set variables that may be dependent upon other variables
++if test -z "$exec_prefix"; then
++    exec_prefix=`pkg-config --variable=exec_prefix nss`
++fi
++if test -z "$includedir"; then
++    includedir=`pkg-config --variable=includedir nss`
++fi
++if test -z "$libdir"; then
++    libdir=`pkg-config --variable=libdir nss`
++fi
++
++if test "$echo_prefix" = "yes"; then
++    echo $prefix
++fi
++
++if test "$echo_exec_prefix" = "yes"; then
++    echo $exec_prefix
++fi
++
++if test "$echo_includedir" = "yes"; then
++    echo $includedir
++fi
++
++if test "$echo_libdir" = "yes"; then
++    echo $libdir
++fi
++
++if test "$echo_cflags" = "yes"; then
++    echo -I$includedir
++fi
++
++if test "$echo_libs" = "yes"; then
++      libdirs=""
++      if test -n "$lib_ssl"; then
++	libdirs="$libdirs -lssl${major_version}"
++      fi
++      if test -n "$lib_smime"; then
++	libdirs="$libdirs -lsmime${major_version}"
++      fi
++      if test -n "$lib_nss"; then
++	libdirs="$libdirs -lnss${major_version}"
++      fi
++      if test -n "$lib_nssutil"; then
++       libdirs="$libdirs -lnssutil${major_version}"
++      fi
++      echo $libdirs
++fi
++
+--- nss-3.17.1/nss/config/nss.pc.in
++++ nss-3.17.1/nss/config/nss.pc.in
+@@ -0,0 +1,12 @@
++prefix=@prefix@
++exec_prefix=@exec_prefix@
++libdir=@libdir@
++includedir=@includedir@
++
++Name: NSS
++Description: Network Security Services
++Version: @NSS_MAJOR_VERSION@.@NSS_MINOR_VERSION@.@NSS_PATCH_VERSION@
++Requires: nspr >= 4.8
++Libs: -L${libdir} -lssl3 -lsmime3 -lnss3 -lnssutil3
++Cflags: -I${includedir}
++
+--- nss-3.17.1/nss/manifest.mn
++++ nss-3.17.1/nss/manifest.mn
+@@ -10,7 +10,7 @@
+ 
+ RELEASE = nss
+ 
+-DIRS = coreconf lib cmd
++DIRS = coreconf lib cmd config
+ 
+ ifdef NSS_BUILD_GTESTS
+ DIRS += external_tests
diff --git a/gnu/packages/polkit.scm b/gnu/packages/polkit.scm
index 2be1d0b..f54c0a3 100644
--- a/gnu/packages/polkit.scm
+++ b/gnu/packages/polkit.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2014 Andreas Enge <andreas@enge.fr>
+;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,8 @@
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages databases)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages perl)
@@ -103,6 +106,96 @@ platform-neutral API for system level and libc-like functions.  It is used
 in the Mozilla clients.")
     (license mpl2.0)))
 
+(define-public nss
+  (package
+    (name "nss")
+    (version "3.17.3")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append
+                    "ftp://ftp.mozilla.org/pub/mozilla.org/security/nss/"
+                    "releases/NSS_3_17_3_RTM/src/nss-3.17.3.tar.gz"))
+              (sha256
+               (base32
+                "1m91z80x4zh1mxgf53bl33lp43gn1wxxx0y26mgz511gb81ykmgl"))
+              ;; Install nss.pc and nss-config.
+              (patches (list (search-patch "nss-pkgconfig.patch")))))
+    (build-system gnu-build-system)
+    (outputs '("out" "bin"))
+    (arguments
+     '(#:parallel-build? #f ; failed
+       #:make-flags
+       (let* ((out (assoc-ref %outputs "out"))
+              (nspr (string-append (assoc-ref %build-inputs "nspr")))
+              (rpath (string-append "-Wl,-rpath=" out "/lib/nss")))
+         (list "-C" "nss" (string-append "PREFIX=" out)
+               "NSDISTMODE=copy"
+               "NSS_USE_SYSTEM_SQLITE=1"
+               (string-append "NSPR_INCLUDE_DIR=" nspr "/include/nspr")
+               ;; Add $out/lib/nss to RPATH.
+               (string-append "RPATH=" rpath)
+               (string-append "LDFLAGS=" rpath)))
+       #:modules ((guix build gnu-build-system)
+                  (guix build utils)
+                  (ice-9 ftw)
+                  (ice-9 match)
+                  (srfi srfi-26))
+       #:imported-modules ((guix build gnu-build-system)
+                           (guix build utils))
+       #:phases
+       (alist-replace
+        'configure
+        (lambda* (#:key system inputs #:allow-other-keys)
+          (when (string-prefix? "x86_64" system)
+            (setenv "USE_64" "1")))
+        (alist-replace
+         'check
+         (lambda _
+           (setenv "DOMSUF" "(none)")
+           (setenv "USE_IP" "TRUE")
+           (setenv "IP_ADDRESS" "127.0.0.1")
+           (zero? (system "./nss/tests/all.sh")))
+         (alist-replace
+          'install
+          (lambda* (#:key outputs #:allow-other-keys)
+            (let* ((out (assoc-ref outputs "out"))
+                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
+                   (inc (string-append out "/include/nss"))
+                   (lib (string-append out "/lib/nss"))
+                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
+                          ((obj) (string-append "dist/" obj)))))
+              ;; Install nss-config to $out/bin.
+              (mkdir-p (string-append out "/bin"))
+              (copy-file (string-append obj "/bin/nss-config")
+                         (string-append out "/bin/nss-config"))
+              (delete-file (string-append obj "/bin/nss-config"))
+              ;; Install nss.pc to $out/lib/pkgconfig.
+              (mkdir-p (string-append out "/lib/pkgconfig"))
+              (copy-file (string-append obj "/lib/pkgconfig/nss.pc")
+                         (string-append out "/lib/pkgconfig/nss.pc"))
+              (delete-file (string-append obj "/lib/pkgconfig/nss.pc"))
+              (rmdir (string-append obj "/lib/pkgconfig"))
+              ;; Install other files.
+              (copy-recursively "dist/public/nss" inc)
+              (copy-recursively (string-append obj "/bin") bin)
+              (copy-recursively (string-append obj "/lib") lib)))
+          %standard-phases)))))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (propagated-inputs `(("nspr" ,nspr))) ; required by nss.pc.
+    (native-inputs `(("perl" ,perl)))
+    (home-page
+     "https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS")
+    (synopsis "Network Security Services")
+    (description
+     "Network Security Services (NSS) is a set of libraries designed to support
+cross-platform development of security-enabled client and server applications.
+Applications built with NSS can support SSL v2 and v3, TLS, PKCS #5, PKCS #7,
+PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security
+standards.")
+    (license mpl2.0)))
+
 (define-public polkit
   (package
     (name "polkit")
-- 
2.1.2


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

* Re: [PATCH] gnu: Add nss.
  2015-01-08 13:00   ` 宋文武
@ 2015-01-10 21:06     ` Ludovic Courtès
  2015-01-11  2:25       ` 宋文武
  2015-01-11  7:30       ` John Darrington
  0 siblings, 2 replies; 11+ messages in thread
From: Ludovic Courtès @ 2015-01-10 21:06 UTC (permalink / raw)
  To: 宋文武; +Cc: guix-devel

宋文武 <iyzsong@gmail.com> skribis:

> Mark H Weaver <mhw@netris.org> writes:
>
>> 宋文武 <iyzsong@gmail.com> writes:
>>
>>> * gnu/packages/patches/nss.patch: New file.
>>> * gnu-system.scm (dist_patch_DATA): Add it.
>>> * gnu/packages/polkit.scm (nss): New variable.
>>
>> polkit.scm seems like the wrong place for 'nss', although admittedly
>> it's not obvious where it should go.
> Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.

Yes please, sounds better.

> NSS contains many static libraries which I think will not mostly used
> by other. How about split them to a 'static-lib' (or a better name).

Or just build it with --disable-static until someone asks for them?

> From f56c7ef06f8eb697e9b0e0eac2e6c8117520d5d0 Mon Sep 17 00:00:00 2001
> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
> Date: Tue, 6 Jan 2015 23:57:31 +0800
> Subject: [PATCH] gnu: Add nss.
>
> * gnu/packages/patches/nss-pkgconfig.patch: New file.
> * gnu-system.scm (dist_patch_DATA): Add it.
> * gnu/packages/polkit.scm (nss): New variable.

[...]

> diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
> new file mode 100644
> index 0000000..3832dc3
> --- /dev/null
> +++ b/gnu/packages/patches/nss-pkgconfig.patch
> @@ -0,0 +1,220 @@
> +Install nss.pc and nss-config.

This is too terse compared to the size of the patch.  Surely one should
justify why it takes so many lines to install two files.  :-)

> +Based on nss-3.17-gentoo-fixups.patch from nixpkgs.

Please make it clear who wrote this patch, where you took it, whether it
differs from the Gentoo patch and how.

> +       (alist-replace
> +        'configure
> +        (lambda* (#:key system inputs #:allow-other-keys)
> +          (when (string-prefix? "x86_64" system)
> +            (setenv "USE_64" "1")))

Please add a comment explaining why this is needed, and return #t.

> +        (alist-replace
> +         'check
> +         (lambda _
> +           (setenv "DOMSUF" "(none)")
> +           (setenv "USE_IP" "TRUE")
> +           (setenv "IP_ADDRESS" "127.0.0.1")
> +           (zero? (system "./nss/tests/all.sh")))

Likewise, a comment must explain this.  Please use ‘system*’.

> +         (alist-replace
> +          'install
> +          (lambda* (#:key outputs #:allow-other-keys)
> +            (let* ((out (assoc-ref outputs "out"))
> +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
> +                   (inc (string-append out "/include/nss"))
> +                   (lib (string-append out "/lib/nss"))
> +                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
> +                          ((obj) (string-append "dist/" obj)))))
> +              ;; Install nss-config to $out/bin.
> +              (mkdir-p (string-append out "/bin"))
> +              (copy-file (string-append obj "/bin/nss-config")
> +                         (string-append out "/bin/nss-config"))
> +              (delete-file (string-append obj "/bin/nss-config"))
> +              ;; Install nss.pc to $out/lib/pkgconfig.

So does this do the same thing that the big patch is supposed to do?
I’m confused.

Thank you,
Ludo’.

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

* Re: [PATCH] gnu: Add nss.
  2015-01-10 21:06     ` Ludovic Courtès
@ 2015-01-11  2:25       ` 宋文武
  2015-01-11 10:52         ` Ludovic Courtès
  2015-01-11  7:30       ` John Darrington
  1 sibling, 1 reply; 11+ messages in thread
From: 宋文武 @ 2015-01-11  2:25 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

Ludovic Courtès <ludo@gnu.org> writes:

> 宋文武 <iyzsong@gmail.com> skribis:
>
>> Mark H Weaver <mhw@netris.org> writes:
>>
>>> 宋文武 <iyzsong@gmail.com> writes:
>>>
>>>> * gnu/packages/patches/nss.patch: New file.
>>>> * gnu-system.scm (dist_patch_DATA): Add it.
>>>> * gnu/packages/polkit.scm (nss): New variable.
>>>
>>> polkit.scm seems like the wrong place for 'nss', although admittedly
>>> it's not obvious where it should go.
>> Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.
>
> Yes please, sounds better.
>
>> NSS contains many static libraries which I think will not mostly used
>> by other. How about split them to a 'static-lib' (or a better name).
>
> Or just build it with --disable-static until someone asks for them?
Um, I leave it untouched. (It add about 7MB to Qt5.)
>
>> From f56c7ef06f8eb697e9b0e0eac2e6c8117520d5d0 Mon Sep 17 00:00:00 2001
>> From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
>> Date: Tue, 6 Jan 2015 23:57:31 +0800
>> Subject: [PATCH] gnu: Add nss.
>>
>> * gnu/packages/patches/nss-pkgconfig.patch: New file.
>> * gnu-system.scm (dist_patch_DATA): Add it.
>> * gnu/packages/polkit.scm (nss): New variable.
>
> [...]
>
>> diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
>> new file mode 100644
>> index 0000000..3832dc3
>> --- /dev/null
>> +++ b/gnu/packages/patches/nss-pkgconfig.patch
>> @@ -0,0 +1,220 @@
>> +Install nss.pc and nss-config.
>
> This is too terse compared to the size of the patch.  Surely one should
> justify why it takes so many lines to install two files.  :-)
>
>> +Based on nss-3.17-gentoo-fixups.patch from nixpkgs.
>
> Please make it clear who wrote this patch, where you took it, whether it
> differs from the Gentoo patch and how.
>
>> +       (alist-replace
>> +        'configure
>> +        (lambda* (#:key system inputs #:allow-other-keys)
>> +          (when (string-prefix? "x86_64" system)
>> +            (setenv "USE_64" "1")))
>
> Please add a comment explaining why this is needed, and return #t.
>
>> +        (alist-replace
>> +         'check
>> +         (lambda _
>> +           (setenv "DOMSUF" "(none)")
>> +           (setenv "USE_IP" "TRUE")
>> +           (setenv "IP_ADDRESS" "127.0.0.1")
>> +           (zero? (system "./nss/tests/all.sh")))
>
> Likewise, a comment must explain this.  Please use ‘system*’.
OK.
>
>> +         (alist-replace
>> +          'install
>> +          (lambda* (#:key outputs #:allow-other-keys)
>> +            (let* ((out (assoc-ref outputs "out"))
>> +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
>> +                   (inc (string-append out "/include/nss"))
>> +                   (lib (string-append out "/lib/nss"))
>> +                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
>> +                          ((obj) (string-append "dist/" obj)))))
>> +              ;; Install nss-config to $out/bin.
>> +              (mkdir-p (string-append out "/bin"))
>> +              (copy-file (string-append obj "/bin/nss-config")
>> +                         (string-append out "/bin/nss-config"))
>> +              (delete-file (string-append obj "/bin/nss-config"))
>> +              ;; Install nss.pc to $out/lib/pkgconfig.
>
> So does this do the same thing that the big patch is supposed to do?
> I’m confused.
Actually, the patch do 'create', here do 'install'.
>
> Thank you,
> Ludo’.
Updated patches sent separated.

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

* Re: [PATCH] gnu: Add nss.
  2015-01-10 21:06     ` Ludovic Courtès
  2015-01-11  2:25       ` 宋文武
@ 2015-01-11  7:30       ` John Darrington
  2015-01-11  7:51         ` 宋文武
  1 sibling, 1 reply; 11+ messages in thread
From: John Darrington @ 2015-01-11  7:30 UTC (permalink / raw)
  To: Ludovic Court??s; +Cc: guix-devel

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

Nss has already been packaged on the wup-libreoffice branch.

J'

On Sat, Jan 10, 2015 at 10:06:11PM +0100, Ludovic Court??s wrote:
     ????????? <iyzsong@gmail.com> skribis:
     
     > Mark H Weaver <mhw@netris.org> writes:
     >
     >> ????????? <iyzsong@gmail.com> writes:
     >>
     >>> * gnu/packages/patches/nss.patch: New file.
     >>> * gnu-system.scm (dist_patch_DATA): Add it.
     >>> * gnu/packages/polkit.scm (nss): New variable.
     >>
     >> polkit.scm seems like the wrong place for 'nss', although admittedly
     >> it's not obvious where it should go.
     > Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.
     
     Yes please, sounds better.
     
     > NSS contains many static libraries which I think will not mostly used
     > by other. How about split them to a 'static-lib' (or a better name).
     
     Or just build it with --disable-static until someone asks for them?
     
     > From f56c7ef06f8eb697e9b0e0eac2e6c8117520d5d0 Mon Sep 17 00:00:00 2001
     > From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
     > Date: Tue, 6 Jan 2015 23:57:31 +0800
     > Subject: [PATCH] gnu: Add nss.
     >
     > * gnu/packages/patches/nss-pkgconfig.patch: New file.
     > * gnu-system.scm (dist_patch_DATA): Add it.
     > * gnu/packages/polkit.scm (nss): New variable.
     
     [...]
     
     > diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
     > new file mode 100644
     > index 0000000..3832dc3
     > --- /dev/null
     > +++ b/gnu/packages/patches/nss-pkgconfig.patch
     > @@ -0,0 +1,220 @@
     > +Install nss.pc and nss-config.
     
     This is too terse compared to the size of the patch.  Surely one should
     justify why it takes so many lines to install two files.  :-)
     
     > +Based on nss-3.17-gentoo-fixups.patch from nixpkgs.
     
     Please make it clear who wrote this patch, where you took it, whether it
     differs from the Gentoo patch and how.
     
     > +       (alist-replace
     > +        'configure
     > +        (lambda* (#:key system inputs #:allow-other-keys)
     > +          (when (string-prefix? "x86_64" system)
     > +            (setenv "USE_64" "1")))
     
     Please add a comment explaining why this is needed, and return #t.
     
     > +        (alist-replace
     > +         'check
     > +         (lambda _
     > +           (setenv "DOMSUF" "(none)")
     > +           (setenv "USE_IP" "TRUE")
     > +           (setenv "IP_ADDRESS" "127.0.0.1")
     > +           (zero? (system "./nss/tests/all.sh")))
     
     Likewise, a comment must explain this.  Please use ???system*???.
     
     > +         (alist-replace
     > +          'install
     > +          (lambda* (#:key outputs #:allow-other-keys)
     > +            (let* ((out (assoc-ref outputs "out"))
     > +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
     > +                   (inc (string-append out "/include/nss"))
     > +                   (lib (string-append out "/lib/nss"))
     > +                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
     > +                          ((obj) (string-append "dist/" obj)))))
     > +              ;; Install nss-config to $out/bin.
     > +              (mkdir-p (string-append out "/bin"))
     > +              (copy-file (string-append obj "/bin/nss-config")
     > +                         (string-append out "/bin/nss-config"))
     > +              (delete-file (string-append obj "/bin/nss-config"))
     > +              ;; Install nss.pc to $out/lib/pkgconfig.
     
     So does this do the same thing that the big patch is supposed to do?
     I???m confused.
     
     Thank you,
     Ludo???.
     

-- 
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [PATCH] gnu: Add nss.
  2015-01-11  7:30       ` John Darrington
@ 2015-01-11  7:51         ` 宋文武
  2015-01-11  8:28           ` John Darrington
  0 siblings, 1 reply; 11+ messages in thread
From: 宋文武 @ 2015-01-11  7:51 UTC (permalink / raw)
  To: John Darrington, Ludovic Court??s; +Cc: guix-devel

John Darrington <john@darrington.wattle.id.au> writes:

> Nss has already been packaged on the wup-libreoffice branch.
Ah, I didn't notice it :(

I look into wip-libreoffice branch, it seems that:
  it use bundle nspr.
  it only build for x86_64-linux.
  tests are disable.
While my version is more complete:
  build for all architectures.
  tests are enable.

So, I think we should pick my version :)

>
> J'
>
> On Sat, Jan 10, 2015 at 10:06:11PM +0100, Ludovic Court??s wrote:
>      ????????? <iyzsong@gmail.com> skribis:
>      
>      > Mark H Weaver <mhw@netris.org> writes:
>      >
>      >> ????????? <iyzsong@gmail.com> writes:
>      >>
>      >>> * gnu/packages/patches/nss.patch: New file.
>      >>> * gnu-system.scm (dist_patch_DATA): Add it.
>      >>> * gnu/packages/polkit.scm (nss): New variable.
>      >>
>      >> polkit.scm seems like the wrong place for 'nss', although admittedly
>      >> it's not obvious where it should go.
>      > Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.
>      
>      Yes please, sounds better.
>      
>      > NSS contains many static libraries which I think will not mostly used
>      > by other. How about split them to a 'static-lib' (or a better name).
>      
>      Or just build it with --disable-static until someone asks for them?
>      
>      > From f56c7ef06f8eb697e9b0e0eac2e6c8117520d5d0 Mon Sep 17 00:00:00 2001
>      > From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@gmail.com>
>      > Date: Tue, 6 Jan 2015 23:57:31 +0800
>      > Subject: [PATCH] gnu: Add nss.
>      >
>      > * gnu/packages/patches/nss-pkgconfig.patch: New file.
>      > * gnu-system.scm (dist_patch_DATA): Add it.
>      > * gnu/packages/polkit.scm (nss): New variable.
>      
>      [...]
>      
>      > diff --git a/gnu/packages/patches/nss-pkgconfig.patch b/gnu/packages/patches/nss-pkgconfig.patch
>      > new file mode 100644
>      > index 0000000..3832dc3
>      > --- /dev/null
>      > +++ b/gnu/packages/patches/nss-pkgconfig.patch
>      > @@ -0,0 +1,220 @@
>      > +Install nss.pc and nss-config.
>      
>      This is too terse compared to the size of the patch.  Surely one should
>      justify why it takes so many lines to install two files.  :-)
>      
>      > +Based on nss-3.17-gentoo-fixups.patch from nixpkgs.
>      
>      Please make it clear who wrote this patch, where you took it, whether it
>      differs from the Gentoo patch and how.
>      
>      > +       (alist-replace
>      > +        'configure
>      > +        (lambda* (#:key system inputs #:allow-other-keys)
>      > +          (when (string-prefix? "x86_64" system)
>      > +            (setenv "USE_64" "1")))
>      
>      Please add a comment explaining why this is needed, and return #t.
>      
>      > +        (alist-replace
>      > +         'check
>      > +         (lambda _
>      > +           (setenv "DOMSUF" "(none)")
>      > +           (setenv "USE_IP" "TRUE")
>      > +           (setenv "IP_ADDRESS" "127.0.0.1")
>      > +           (zero? (system "./nss/tests/all.sh")))
>      
>      Likewise, a comment must explain this.  Please use ???system*???.
>      
>      > +         (alist-replace
>      > +          'install
>      > +          (lambda* (#:key outputs #:allow-other-keys)
>      > +            (let* ((out (assoc-ref outputs "out"))
>      > +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
>      > +                   (inc (string-append out "/include/nss"))
>      > +                   (lib (string-append out "/lib/nss"))
>      > +                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
>      > +                          ((obj) (string-append "dist/" obj)))))
>      > +              ;; Install nss-config to $out/bin.
>      > +              (mkdir-p (string-append out "/bin"))
>      > +              (copy-file (string-append obj "/bin/nss-config")
>      > +                         (string-append out "/bin/nss-config"))
>      > +              (delete-file (string-append obj "/bin/nss-config"))
>      > +              ;; Install nss.pc to $out/lib/pkgconfig.
>      
>      So does this do the same thing that the big patch is supposed to do?
>      I???m confused.
>      
>      Thank you,
>      Ludo???.
>      
>
> -- 
> PGP Public key ID: 1024D/2DE827B3 
> fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
> See http://sks-keyservers.net or any PGP keyserver for public key.

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

* Re: [PATCH] gnu: Add nss.
  2015-01-11  7:51         ` 宋文武
@ 2015-01-11  8:28           ` John Darrington
  2015-01-11 11:03             ` wip-libreoffice status? Ludovic Courtès
  0 siblings, 1 reply; 11+ messages in thread
From: John Darrington @ 2015-01-11  8:28 UTC (permalink / raw)
  To: ?????????; +Cc: guix-devel

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

On Sun, Jan 11, 2015 at 03:51:31PM +0800, ????????? wrote:
     John Darrington <john@darrington.wattle.id.au> writes:
     
     > Nss has already been packaged on the wup-libreoffice branch.
     Ah, I didn't notice it :(
     
     I look into wip-libreoffice branch, it seems that:
       it use bundle nspr.
       it only build for x86_64-linux.
       tests are disable.
     While my version is more complete:
       build for all architectures.
       tests are enable.
     
     So, I think we should pick my version :)

Fair enough.  

Maybe then afterwards, you could remove the nss from wip-libreoffice, 
merge master into wip-libreoffice and make sure that it still works.

J'

-- 
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

* Re: [PATCH] gnu: Add nss.
  2015-01-11  2:25       ` 宋文武
@ 2015-01-11 10:52         ` Ludovic Courtès
  0 siblings, 0 replies; 11+ messages in thread
From: Ludovic Courtès @ 2015-01-11 10:52 UTC (permalink / raw)
  To: 宋文武; +Cc: guix-devel

宋文武 <iyzsong@gmail.com> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:
>
>> 宋文武 <iyzsong@gmail.com> skribis:
>>
>>> Mark H Weaver <mhw@netris.org> writes:
>>>
>>>> 宋文武 <iyzsong@gmail.com> writes:
>>>>
>>>>> * gnu/packages/patches/nss.patch: New file.
>>>>> * gnu-system.scm (dist_patch_DATA): Add it.
>>>>> * gnu/packages/polkit.scm (nss): New variable.
>>>>
>>>> polkit.scm seems like the wrong place for 'nss', although admittedly
>>>> it's not obvious where it should go.
>>> Maybe move it and nspr gnuzilla.scm? Since they are both from mozilla.
>>
>> Yes please, sounds better.
>>
>>> NSS contains many static libraries which I think will not mostly used
>>> by other. How about split them to a 'static-lib' (or a better name).
>>
>> Or just build it with --disable-static until someone asks for them?
> Um, I leave it untouched. (It add about 7MB to Qt5.)

You were talking about the static libraries of NSS, not the static
libraries of Qt, right?

[...]

>>> +         (alist-replace
>>> +          'install
>>> +          (lambda* (#:key outputs #:allow-other-keys)
>>> +            (let* ((out (assoc-ref outputs "out"))
>>> +                   (bin (string-append (assoc-ref outputs "bin") "/bin"))
>>> +                   (inc (string-append out "/include/nss"))
>>> +                   (lib (string-append out "/lib/nss"))
>>> +                   (obj (match (scandir "dist" (cut string-suffix? "OBJ" <>))
>>> +                          ((obj) (string-append "dist/" obj)))))
>>> +              ;; Install nss-config to $out/bin.
>>> +              (mkdir-p (string-append out "/bin"))
>>> +              (copy-file (string-append obj "/bin/nss-config")
>>> +                         (string-append out "/bin/nss-config"))
>>> +              (delete-file (string-append obj "/bin/nss-config"))
>>> +              ;; Install nss.pc to $out/lib/pkgconfig.
>>
>> So does this do the same thing that the big patch is supposed to do?
>> I’m confused.
> Actually, the patch do 'create', here do 'install'.

Oh the patch adds code to create the files, and here it installs them.

Thanks,
Ludo’.

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

* wip-libreoffice status?
  2015-01-11  8:28           ` John Darrington
@ 2015-01-11 11:03             ` Ludovic Courtès
  2015-01-11 12:12               ` John Darrington
  0 siblings, 1 reply; 11+ messages in thread
From: Ludovic Courtès @ 2015-01-11 11:03 UTC (permalink / raw)
  To: John Darrington; +Cc: guix-devel

What’s the status of wip-libreoffice?  It seems to have built
successfully a couple of times:

  http://hydra.gnu.org/job/gnu/wip-libreoffice/libreoffice-4.3.2.2.x86_64-linux

What about cherry-picking the relevant commits into master (after ‘nss’
has been committed)?  Perhaps some cleanup is needed before?

Thanks,
Ludo’.

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

* Re: wip-libreoffice status?
  2015-01-11 11:03             ` wip-libreoffice status? Ludovic Courtès
@ 2015-01-11 12:12               ` John Darrington
  0 siblings, 0 replies; 11+ messages in thread
From: John Darrington @ 2015-01-11 12:12 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

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

On Sun, Jan 11, 2015 at 12:03:46PM +0100, Ludovic Courtès wrote:
     What’s the status of wip-libreoffice?  It seems to have built
     successfully a couple of times:
     
       http://hydra.gnu.org/job/gnu/wip-libreoffice/libreoffice-4.3.2.2.x86_64-linux
     
     What about cherry-picking the relevant commits into master (after ‘nss’
     has been committed)?  Perhaps some cleanup is needed before?
     
As I recall, the status was that one of the self tests failed (crashed on startup).

(The libreoffice build system, runs the tests in the "make" target, not the "make check" target.)

In order to try to diagnose the problem, I pushed a change which should have 
caused the test to run under gdb.  This change also had the unintended 
consequence that it masked the return value of the test, meaning that it 
"passes" instead of fails.

It's not entirely clear what that test is supposed to be doing.

-- 
PGP Public key ID: 1024D/2DE827B3 
fingerprint = 8797 A26D 0854 2EAB 0285  A290 8A67 719C 2DE8 27B3
See http://sks-keyservers.net or any PGP keyserver for public key.


[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

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

end of thread, other threads:[~2015-01-11 12:12 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-07 11:29 [PATCH] gnu: Add nss 宋文武
2015-01-07 16:50 ` Mark H Weaver
2015-01-08 13:00   ` 宋文武
2015-01-10 21:06     ` Ludovic Courtès
2015-01-11  2:25       ` 宋文武
2015-01-11 10:52         ` Ludovic Courtès
2015-01-11  7:30       ` John Darrington
2015-01-11  7:51         ` 宋文武
2015-01-11  8:28           ` John Darrington
2015-01-11 11:03             ` wip-libreoffice status? Ludovic Courtès
2015-01-11 12:12               ` John Darrington

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).