Subject: bug#54467: closed (Re: gnu: add plan9port)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 20 Aug 2023 05:46:02 +0000

Your bug report

#54467: gnu: add plan9port

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
54467: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=54467
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: gnu: add plan9port
From: Hilton Chain <[email-masked]>
To: 路辉 <[email-masked]>
Cc: [email-masked]
Date: Sun, 20 Aug 2023 13:02:43 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello,

On Sun, 20 Mar 2022 00:47:15 +0800,
路辉 wrote:
>
> From 5ebeaf63ab03a1c5201fb855ccc40de7ec25df17 Mon Sep 17 00:00:00 2001
> From: Lu Hui <[email-masked]>
> Date: Sun, 20 Mar 2022 00:17:40 +0800
> Subject: [PATCH 1/2] gnu: add script to build plan9port
>
> * gnu/packages/aux-files/plan9/builder.sh: configure & build & install plan9port
> ---
[...]
> From 6674eeadec48b44ab137ae7b874a254557c232dd Mon Sep 17 00:00:00 2001
> From: Lu Hui <[email-masked]>
> Date: Sun, 20 Mar 2022 00:20:01 +0800
> Subject: [PATCH 2/2] gnu: Add plan9port
>
> * gnu/packages/plan9.scm (plan9port) : New variable.
> ---

plan9port has been added in 0dc8d4f8f01461f5be375a3dcea94aeca27e3b83,
and the current package doesn't rely on an external builder.  So this
issue can be closed.

Thanks

Subject: gnu: add plan9port
From: 路辉 <[email-masked]>
To: [email-masked]
Date: Sat, 19 Mar 2022 16:47:15 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

From 5ebeaf63ab03a1c5201fb855ccc40de7ec25df17 Mon Sep 17 00:00:00 2001
From: Lu Hui <[email-masked]>
Date: Sun, 20 Mar 2022 00:17:40 +0800
Subject: [PATCH 1/2] gnu: add script to build plan9port

* gnu/packages/aux-files/plan9/builder.sh: configure & build & install plan9port
---
 gnu/packages/aux-files/plan9port/builder.sh | 73 +++++++++++++++++++++
 1 file changed, 73 insertions(+)
 create mode 100755 gnu/packages/aux-files/plan9port/builder.sh

diff --git a/gnu/packages/aux-files/plan9port/builder.sh b/gnu/packages/aux-files/plan9port/builder.sh
new file mode 100755
index 0000000000..fd30cafda6
--- /dev/null
+++ b/gnu/packages/aux-files/plan9port/builder.sh
@@ -0,0 +1,73 @@
+# bash shell script
+# from nixpkgs: https://github.com/NixOS/nixpkgs/blob/master/pkgs/tools/system/plan9port/builder.sh
+
+export PLAN9=$out/plan9
+export PLAN9_TARGET=$PLAN9
+
+plan9portLinkFlags()
+{
+    eval set -- "$LDFLAGS"
+    local flag
+    for flag in "$@"; do
+        printf ' -Wl,%s' "$flag"
+    done
+}
+
+configurePhase()
+{
+    (
+        echo CC9=\"$(command -v $CC)\"
+        echo CFLAGS=\"$CFLAGS\"
+        echo LDFLAGS=\"$(plan9portLinkFlags)\"
+        echo X11=\"$libxt/include\"
+        case "$system" in
+          x86_64-linux) echo OBJTYPE=x86_64;;
+          i?86-linux)   echo OBJTYPE=386;;
+          power-linux)  echo OBJTYPE=power;;
+          sparc-linux)  echo OBJTYPE=sparc;;
+        esac
+        if [[ $system =~ "linux" ]]; then
+          echo SYSVERSION=2.6.x
+        fi
+    ) >config
+
+    for f in `grep -l -r /usr/local/plan9`; do
+        sed "s,/usr/local/plan9,${PLAN9},g" -i $f
+    done
+}
+
+buildPhase()
+{
+    mkdir -p $PLAN9
+
+    # Copy sources, some necessary bin scripts
+    cp -R * $PLAN9
+
+    local originalPath="$PATH"
+    export PATH="$PLAN9/bin:$PATH"
+    pushd src
+    ../dist/buildmk
+    mk clean
+    mk libs-nuke
+    mk all
+    mk -k install
+    if [[ -f $PLAN9/bin/quote1 ]]; then
+        cp $PLAN9/bin/quote1 $PLAN9/bin/'"'
+        cp $PLAN9/bin/quote2 $PLAN9/bin/'""'
+    fi
+    popd
+    export PATH="$originalPath"
+}
+
+installPhase()
+{
+    # Copy the `9' utility. This way you can use
+    # $ 9 awk
+    # to use the plan 9 awk
+    mkdir $out/bin
+    ln -s $PLAN9/bin/9 $out/bin
+}
+
+configurePhase
+buildPhase
+installPhase
-- 
2.34.0

From 6674eeadec48b44ab137ae7b874a254557c232dd Mon Sep 17 00:00:00 2001
From: Lu Hui <[email-masked]>
Date: Sun, 20 Mar 2022 00:20:01 +0800
Subject: [PATCH 2/2] gnu: Add plan9port

* gnu/packages/plan9.scm (plan9port) : New variable.
---
 gnu/packages/plan9.scm | 59 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 59 insertions(+)

diff --git a/gnu/packages/plan9.scm b/gnu/packages/plan9.scm
index 73694c4ed3..5c4380e782 100644
--- a/gnu/packages/plan9.scm
+++ b/gnu/packages/plan9.scm
@@ -1,5 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 宋文武 <[email-masked]>
+;;; Copyright © 2022 Lu Hui <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -18,10 +19,16 @@
 
 (define-module (gnu packages plan9)
   #:use-module (guix build-system gnu)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages perl)
   #:use-module (gnu packages xorg))
 
 (define-public drawterm
@@ -63,3 +70,55 @@ (define-public drawterm
 Plan 9 systems.  It behaves like a Plan 9 kernel and will attempt to
 reconstruct a Plan 9 terminal-like experience from a non-Plan 9 system.")
       (license license:expat))))
+
+(define-public plan9port
+  (let ((revision "0") (commit "bab7b73b85f865d20a5c4f2d78ac9e81b3d39109"))
+    (package
+      (name "plan9port")
+      (version (git-version "20220124" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/9fans/plan9port")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "17h6xdij3h00j87lc94q887sq45540lcp9h3kbxwxisd020h1i3v"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list (string-append "CC="
+                                           ,(cc-for-target)))
+         #:tests?
+         #f ;no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure) ;configure in install phase
+           (delete 'build) ;build in install phase
+           (replace 'install
+              ;configure & build & install
+             (lambda* (#:key outputs native-inputs inputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out")) (libxt (assoc-ref inputs
+                                                              "libxt"))
+                      (system ,(%current-system))
+                      (builder (assoc-ref inputs "builder.sh")))
+                 (copy-file builder "./builder.sh")
+                 (setenv "out" out)
+                 (setenv "libxt" libxt)
+                 (setenv "system" system)
+                 (invoke "bash" "builder.sh")))))))
+      (inputs `(("builder.sh" ,(search-auxiliary-file "plan9port/builder.sh"))
+                ("fontconfig" ,fontconfig)
+                ("freetype" ,freetype)
+                ("libx11" ,libx11)
+                ("libxt" ,libxt)
+                ("libxext" ,libxext)
+                ("xorgproto" ,xorgproto)))
+      (native-inputs `(("perl" ,perl) ("which" ,which)
+                       ("bash" ,bash)))
+      (synopsis "Plan 9 from User Space")
+      (home-page "https://9fans.github.io/plan9port/")
+      (description
+       "Plan 9 from User Space (aka plan9port) is a port of many Plan 9 programs
+ from their native Plan 9 environment to Unix-like operating systems.")
+      (license license:expat))))
-- 
2.34.0