commit 0d4a00ae5a78a921537cdfdd41fda8172484aa4d
parent 1f5965e17aeae0f105b2aa3871487937672cc440
Author: Jan Pobrislo <ccx@te2000.cz>
Date: Thu, 4 Dec 2025 17:57:12 +0000
Add nvi editor
Diffstat:
8 files changed, 374 insertions(+), 0 deletions(-)
diff --git a/templates/package_sets b/templates/package_sets
@@ -239,6 +239,7 @@
#+{{pkg_install_name("mlog")}}
#+{{pkg_install_name("findutils")}}
#+{{pkg_install_name("nawk")}}
+#+{{pkg_install_name("nvi")}}
#+{{pkg_install_name("squashfs-tools")}}
#+{{pkg_install_name("mandoc")}}
#+{{pkg_install_name("tinyssh")}}
diff --git a/templates/pkg/nvi b/templates/pkg/nvi
@@ -0,0 +1,31 @@
+{%- set pkg_version="1.79" -%}
+{%- set pkg_source="tar.gz" -%}
+{%- set src_dir=shortname~"-"~pkg_version~"/build" -%}
+{% extends "autotools_static_mini" %}
+{% block package_deps -%}
+#+{{pkg_install_name("netbsd-curses")}}
+{% endblock package_deps %}
+{%- block configure_args -%}
+ --disable-nls \
+ --disable-curses # use system curses
+{%- endblock configure_args %}
+{%- block build -%}
+make V=1 -j$MAKE_THREADS
+{% endblock build %}
+{%- block install -%}
+# make install is broken
+install -Dm755 nvi "$dest/{{bindir}}/nvi"
+install -Dm755 nex "$dest/{{bindir}}/nex"
+install -Dm644 ../docs/USD.doc/vi.man/vi.1 "$dest/{{mandir}}/man1/nvi.1"
+{% endblock install %}
+{% block check -%}
+check_static "$dest/{{bindir}}/nvi"
+check_static "$dest/{{bindir}}/nex"
+
+{% endblock check %}
+{% block genlinks_begin %}
+ {{- super() }}
+ x["./{{bindir}}/nvi"]=1
+ x["./{{bindir}}/nex"]=1
+ x["./{{mandir}}/man1/nvi.1"]=1
+{% endblock %}
diff --git a/variants/ccx-x86_64/default.environment b/variants/ccx-x86_64/default.environment
@@ -87,6 +87,7 @@
#+mlog.ee947a79e82c04e9b7a45b7ab2b143e60e7b852720a527c273d21f26532fd46e
#+findutils.ee72d95fbf3f48a903afa8e118b35b2dad1470ee3f81370e47ad83879da0ebcf
#+nawk.54829f787db4a34e845f6164f526edc7b3bf5a3ecc2f0b5a430c3cd00fbf6cd6
+#+nvi.9833860f282bf3bfcddb3c38183e2cea700608e8de9ad2526c53473f9f19be0a
#+squashfs-tools.d8da9460643e2c5fed367efc5ac932009ad262b392a326875bf25d33fd6c6c79
#+mandoc.0b8d2d76ff3b83861fb557db85930be825c125e79c7a0505ca58d05952ebdd9e
#+tinyssh.e88588036726eb198bdb113dc278f86d5e1c2cc0c4a4078f7d17f96faff02e2c
diff --git a/variants/ccx-x86_64/nvi b/variants/ccx-x86_64/nvi
@@ -0,0 +1,169 @@
+#!/usr/bin/env pthbs-build
+#+busybox.b7c40db009a061a4e29775d32d3f7f764934461f146f775538f21763948b1c41
+#+busybox-bzip2.17aba9801acc779a22f0fcbac1aa5c5538c9c883047863b3400c9b653c690924
+#+busybox-gzip.55438e45aea6663286e359bed232a19befafe907e44b879c172107e2ab91af38
+#+busybox-lzop.1e208a3ab1ef6f4180a04f6a2b9b1591b26b53e868ff0471c40e85bfeec5fc6f
+#+busybox-unzip.9f3fe1c93df2f394759b3dad72b4a67381b95cdf58a28dfc6e4e99193c669647
+#+busybox-xz.c48f45f451fe73df7f11c181f6c735aa2e0f90a3ee651c4832bbaa8bfdac5e2f
+#+busybox-cpio.1dc414bee04754b903102dde57d5e6191bd583ab46263755721b39a896b63139
+#+busybox-dpkg.ff01dab5c8da605469f4502fcfa0e311d49b919c800eb1625e5441c0f51ddffa
+#+busybox-rpm.e63eb1af1834212d8705940e7e3cdd7b2b0800e7be19026917a25a86de152a48
+#+busybox-tar.7c8ecb437a49d30544fd0b5d24c1919697f7247e95ea12bac9839e830a0f2540
+#+busybox-ed.8efd3a57a55cfc72117d75275a9a05f67b4cf64622cd22383b867b86d7c30fa2
+#+busybox-sed.2446ed93cdc7d2722af9ad9eb4e34278c0e4e21313b9d8e9b1236e55fdca54ef
+#+busybox-vi.7c47d9291d16fe8408662ad5ce18c0abbb8f88e3217df2618ae69879d0396ed2
+#+busybox-xxd.ed0b5dc60416ddc78008c39adde32067d83c9bcb77fba07951d61a1bbda9e558
+#+busybox-process-extra.c5ee83c11262a72b6cd510774d537d330de27242e6277c37d0d1a822ba96380e
+#+busybox-procps.e5b728c17d475e270aa738e2cb474a6ac49dd3ef72c0863c71458bc17afb4fc9
+#+busybox-psmisc.96f8600883f3636cc499cd01fbc7f617f49199791003b52a82a89ede11627309
+#+busybox-ash.9a78be20d8203025aaba243715653a3339808b25d3f4ed580cfc8c3c1a64ad42
+#+busybox-bc.d5946dfd6a5d4a9d513197d9a75117037f0e10abd3899d17c76f655316783612
+#+busybox-coreutils.95b6e9c914f0af72b1abfedbebe54d7e5a860e58e1eb13882d35cb527026de88
+#+busybox-coreutils-extra.250740900a6c72501dbbe87315c7e87fe680063714d8cfcb85dc14d1db2525e5
+#+busybox-daemontools.bdf1afee1c9a6a98210ac7d28a869b6011a4f0510f385ce8309d466dc3e2383b
+#+busybox-grep.7c5a16bc276125a4419fccafdaad5c9e7505535c90a2122e97a5939c83d30c4e
+#+busybox-misc.0a557792005dbb3401e3c060d9d64aa73b1d6f24b569076bbb7db0aa1d36ea83
+#+busybox-sh.e964e57a8fd5c578c845bbba264f43132937331404427832e48bab8e629328f9
+#+busybox-util-linux-unpriv.9488d3a15a55037553a2ee487d79ef201f9ea340c75a88968dfcbcac207b06d3
+#+busybox-findutils.9d57ae50746bf06ecce857bf25bde7c0f246fa3c668d507df7ce5978971ed4b0
+#+busybox-awk.b0c88a0b2cf421d3577e275ebfa241a3b83903d42c351512ff6061e2baae6b2f
+#+busybox-diffutils.5f8a32a9d7b08a0d3ae15c7a8b43c3ddef716eb7df569e3a9e879c4108408617
+#+musl.d40145e42df8fcac864462ec7c0d6d98b955bd8ec1e32c366f6d1caaad059f29
+#+gcc.2a8aeb81c1e561d4ddd319150ab55676e80a79ba6d524a40684ed49829e8dab4
+#+binutils.61110e9df9b0525505b7e8cc6711aa204a77ec354ddd77e8db62818a45806da7
+#+gnu-make.126f1d0076771e01094dd9aba9e7408caec4671fdaa89b7992076870e42813ff
+#+m4.d9f245474e1c22f0b946ff6583eab158928efc5d49d812e7fa8f503d9a03fb23
+#+netbsd-curses.795fcc4cdb8f631b859cbab2b9c93c7219e4579b749e1e2f2bb79c21726e7bfa
+#@untar:-z:sha256:755b87aa1e25c24c4c1668de5573d7d9a327b529423ce3ad9ee753bfb2296e33:.
+
+
+# - build script start -
+
+autotools_config() {
+ prefix=/home/ccx/versions/$pthbs_package
+ ./configure -C \
+ --prefix="$prefix" \
+ --build="$(${CC:-gcc} -dumpmachine)" \
+ --bindir="$prefix/command" \
+ --sbindir="$prefix/command" \
+ --infodir="$prefix/info" \
+ --localedir="$prefix/locale" \
+ --mandir="$prefix/man" \
+ --libdir="$prefix/library" \
+ --docdir="$prefix/doc/nvi" \
+ --datadir="$prefix/data" \
+ --datarootdir="$prefix/data" \
+ --localstatedir='/var/pthbs' \
+ "$@"
+
+}
+
+autotools_config_static() {
+ autotools_config "$@" --enable-static --disable-shared
+}
+
+build_env_static() {
+ export LD_LIBRARY_PATH="$pthbs_build_environment/library"
+ export CPATH="$pthbs_build_environment/include"
+ export LDFLAGS="-static -L$pthbs_build_environment/library $LDFLAGS"
+}
+
+check_static() {
+ local exe || true
+ exe=$pthbs_destdir'/home/ccx/versions'/$pthbs_package/$1
+ if ! test -f $exe; then
+ printf '%s\n' "Error: file '$1' doesn't exist!"
+ exit 1
+ fi
+ local interp_info || true
+ interp_info=$(readelf --string-dump=.interp "$exe") || exit $?
+ if test x '!=' "x$interp_info"; then
+ printf '%s\n' "Error: '$1' is a dynamic binary!"
+ exit 1
+ fi
+}
+
+prefix=/home/ccx/versions/$pthbs_package
+dest=${pthbs_destdir%/}${prefix}
+cd 'nvi-1.79/build'
+
+
+build_env_static
+autotools_config_static --disable-nls \
+ --disable-curses # use system curses
+
+
+make V=1 -j$MAKE_THREADS
+# make install is broken
+install -Dm755 nvi "$dest/command/nvi"
+install -Dm755 nex "$dest/command/nex"
+install -Dm644 ../docs/USD.doc/vi.man/vi.1 "$dest/man/man1/nvi.1"
+
+
+check_static "$dest/command/nvi"
+check_static "$dest/command/nex"
+
+
+
+cd "$pthbs_destdir/home/ccx/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/nvi"]=1
+ x["./command/nex"]=1
+ x["./man/man1/nvi.1"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+$2 == "env" { link($0); next }
+$2 == ".env-template" { link($0); next }
+
+$2 == "command" { link($0); next }
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+$2 == "sbin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 == "info" { link(s1("info", r1($0))); next }
+$2 == "share" && $3 == "man" { link(s1("man", r1($0))); next }
+$2 == "share" && $3 == "doc" { link(s1("doc", r1($0))); next }
+
+$2 == "config" { link($0); next }
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ retcode = 0
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ retcode = 3
+ }
+ }
+ exit retcode
+}' >.install-links.new
+mv .install-links.new .install-links
+
diff --git a/variants/ccx-x86_64/userspace.environment b/variants/ccx-x86_64/userspace.environment
@@ -87,6 +87,7 @@
#+mlog.ee947a79e82c04e9b7a45b7ab2b143e60e7b852720a527c273d21f26532fd46e
#+findutils.ee72d95fbf3f48a903afa8e118b35b2dad1470ee3f81370e47ad83879da0ebcf
#+nawk.54829f787db4a34e845f6164f526edc7b3bf5a3ecc2f0b5a430c3cd00fbf6cd6
+#+nvi.9833860f282bf3bfcddb3c38183e2cea700608e8de9ad2526c53473f9f19be0a
#+squashfs-tools.d8da9460643e2c5fed367efc5ac932009ad262b392a326875bf25d33fd6c6c79
#+mandoc.0b8d2d76ff3b83861fb557db85930be825c125e79c7a0505ca58d05952ebdd9e
#+tinyssh.e88588036726eb198bdb113dc278f86d5e1c2cc0c4a4078f7d17f96faff02e2c
\ No newline at end of file
diff --git a/variants/root-x86_64/default.environment b/variants/root-x86_64/default.environment
@@ -87,6 +87,7 @@
#+mlog.c142e40ce81ef88b7bc88e3efcaefc4107228b10fd5bad0909e6df220e6e26b8
#+findutils.c741696bfb399c26021546e5bb5ffd6d39baab5e8e08ef84aba06243fece457a
#+nawk.501f141cdde6b749e9743e18818447aff3bfef9cd1b6a291a49d3b016f1940b0
+#+nvi.13bbc835f2475f03f467c2d9f708b2a87649c202ab052c56d396cc5b09d9be3e
#+squashfs-tools.f658bca0fa15874bdba67d96aafe605b613e39e119efaa40624484d71f47f49a
#+mandoc.f96c93c98d18cb71587ef0de2d7a3193bea8315cb0e572dae27e01a03066eb0c
#+tinyssh.4a7b404f6edad9a43c7399ee66180784cabc1e6b88af4ecfe332cc02c30768f5
diff --git a/variants/root-x86_64/nvi b/variants/root-x86_64/nvi
@@ -0,0 +1,169 @@
+#!/usr/bin/env pthbs-build
+#+busybox.3534f6ee92cdc587af7ec40e169fbcb62d7cf2bea74a5dfb9ec215a2ad23f67a
+#+busybox-bzip2.a9f841e1efef3958c434ab0ac411f9b9f7729368bed521edb41134860a8db9e1
+#+busybox-gzip.46933214a9a91d61b1a08bf9fbd0449c0456bad95c01ddfd5ef349705cfaf684
+#+busybox-lzop.ef6708756966487d750da04ed4751bef6841d917541369627f0d4c24fb87c0ab
+#+busybox-unzip.74a5157c117da2a845c59eaed72e2686c10d19d3f3348624891d19d350cdcd94
+#+busybox-xz.461528f026c91c6298321f6e2c7767e19be037438e724c4ac1fb5a90614ec2bf
+#+busybox-cpio.22ccbcdd497e3810d13f8ccdb2a6761ec20535192413a9e9d12ca5b63f9b30a2
+#+busybox-dpkg.4930594f6eafc28fc9f75c081f054712299d8635ccfa53d8bcf49f95a923e5a5
+#+busybox-rpm.cec24d65d74137e5fbef88bff9de2a790e21dc937399db203c53be79fc222fd8
+#+busybox-tar.cb21ac9e39ae38423df629e879258b637dd8c54f297219df2d49e771800e70b1
+#+busybox-ed.c00f54eb513df11f3914718cbdf35aa3d743655b49e5e74d94054008dcee4865
+#+busybox-sed.461c828dc6d99da0d423e63c0327e96e89f146666e221787d63dbca46baa193f
+#+busybox-vi.723c7bddf13c01daf27e253b88e0f496cf890160714e1ebbcbe08e0250e52349
+#+busybox-xxd.4dcf8c422d09fd907e899ce8c5f3ea9a265517ee7233936800279225fcb90551
+#+busybox-process-extra.607039b940285f04c9a63067b2bbc5af5e2376b04f0733b2dccad4f855f984f7
+#+busybox-procps.a0a0b38be5edfbc96c25472a672abdd4d7f3fce912452ea34164c553ce81f759
+#+busybox-psmisc.c1f0c3c9183a4f571dfa64708cc3727a099f48636925bc69f8c908b2f537c919
+#+busybox-ash.5b0196d3e5308dc76c8fdf8cddf94376202674eaa205e157cdbc788c5444d9b8
+#+busybox-bc.8c80321a87f6136709f02d20c51d5a1b0d1e3dcab1486d6e41e49a2bc88fdf2d
+#+busybox-coreutils.af27eda27cf5ccc8f4ef6f831b601fa14fa2006b246d1e1d2c93041910a69afe
+#+busybox-coreutils-extra.591c63d84b7b31c40e7507029beaa1f46dd4b15dbb3eb18db29682f3191c584a
+#+busybox-daemontools.530063045f2feb7d524b4f12be305aebfa750918faa4819d23b5f6e542777bd2
+#+busybox-grep.927b8fc12590b260f0244445a60eed230b1ae2d3fce773c3d11456f7be04d029
+#+busybox-misc.4a0757280d1c98a1d2d6a6a288f615022f3592ee7d4e3a783d351248526b0b50
+#+busybox-sh.5af238282c1b03ba3731401e5ac416376ac344e942fca3fd8822de3a331beef6
+#+busybox-util-linux-unpriv.702a74f90185f1498560db839dc4d5745f4d38c91069fc19fb14c0db36610789
+#+busybox-findutils.d956af3182427bfcdda9f649b004d156b1e8697ad10027db9ca6aa414969560c
+#+busybox-awk.37622f3c039a0593f047417cb467a8f24ce584e935fd482729254ac72b1cc1ee
+#+busybox-diffutils.1c93903ff565b5be53dbc34a620e492d5ba5d9817153a1de7b04f1c73c66306c
+#+musl.bb2e3009193337ab6f2bb8be1d693eda905f85870915a25997aadc8638d79630
+#+gcc.5e8a5389221ab713659ebdab9ee20afc1ffc1b5eccff58ef62bc8d339d49dcda
+#+binutils.4efbb6d2ad8a05268dc69b428b32e7099275d7380406658321c6b11222baf137
+#+gnu-make.0b9f690a0e73d9fe1553f48bc6b3e91a52decdd4354d322f0caf4d001fe0ee21
+#+m4.4051c2c9b224b171c00589a2c63f16bbe371b52f26b231a4d40df36978bc1192
+#+netbsd-curses.959e149e1bd7acd3763598130ab5ee76117d2f54210535ebcdd89bc91768a80a
+#@untar:-z:sha256:755b87aa1e25c24c4c1668de5573d7d9a327b529423ce3ad9ee753bfb2296e33:.
+
+
+# - build script start -
+
+autotools_config() {
+ prefix=/versions/$pthbs_package
+ ./configure -C \
+ --prefix="$prefix" \
+ --build="$(${CC:-gcc} -dumpmachine)" \
+ --bindir="$prefix/command" \
+ --sbindir="$prefix/command" \
+ --infodir="$prefix/info" \
+ --localedir="$prefix/locale" \
+ --mandir="$prefix/man" \
+ --libdir="$prefix/library" \
+ --docdir="$prefix/doc/nvi" \
+ --datadir="$prefix/data" \
+ --datarootdir="$prefix/data" \
+ --localstatedir='/var/pthbs' \
+ "$@"
+
+}
+
+autotools_config_static() {
+ autotools_config "$@" --enable-static --disable-shared
+}
+
+build_env_static() {
+ export LD_LIBRARY_PATH="$pthbs_build_environment/library"
+ export CPATH="$pthbs_build_environment/include"
+ export LDFLAGS="-static -L$pthbs_build_environment/library $LDFLAGS"
+}
+
+check_static() {
+ local exe || true
+ exe=$pthbs_destdir'/versions'/$pthbs_package/$1
+ if ! test -f $exe; then
+ printf '%s\n' "Error: file '$1' doesn't exist!"
+ exit 1
+ fi
+ local interp_info || true
+ interp_info=$(readelf --string-dump=.interp "$exe") || exit $?
+ if test x '!=' "x$interp_info"; then
+ printf '%s\n' "Error: '$1' is a dynamic binary!"
+ exit 1
+ fi
+}
+
+prefix=/versions/$pthbs_package
+dest=${pthbs_destdir%/}${prefix}
+cd 'nvi-1.79/build'
+
+
+build_env_static
+autotools_config_static --disable-nls \
+ --disable-curses # use system curses
+
+
+make V=1 -j$MAKE_THREADS
+# make install is broken
+install -Dm755 nvi "$dest/command/nvi"
+install -Dm755 nex "$dest/command/nex"
+install -Dm644 ../docs/USD.doc/vi.man/vi.1 "$dest/man/man1/nvi.1"
+
+
+check_static "$dest/command/nvi"
+check_static "$dest/command/nex"
+
+
+
+cd "$pthbs_destdir/versions/$pthbs_package"
+find -type d -o -print | awk -F/ '
+BEGIN {
+ x["./command/nvi"]=1
+ x["./command/nex"]=1
+ x["./man/man1/nvi.1"]=1
+}
+
+function r1(s) {
+ sub("^[.]/[^/]*", ".", s)
+ return s
+}
+function s1(repl, s) {
+ sub("^[.]/[^/]*", "./"repl, s)
+ return s
+}
+function link(src) {
+ x[$0]=0
+ printf "%s\t%s\n", $0, src
+ printf "genlinks >>%s\t%s<<\n", $0, src >>"/dev/stderr"
+}
+$1!="."{exit 1}
+$2 == "env" { link($0); next }
+$2 == ".env-template" { link($0); next }
+
+$2 == "command" { link($0); next }
+$2 == "command" { link($0); next }
+$2 == "bin" { link(s1("command", $0)); next }
+$2 == "sbin" { link(s1("command", $0)); next }
+
+$2 == "library.so" { link($0); next }
+$2 == "library" { link($0); next }
+$2 == "lib" && $NF ~ /\.l?a$/ { link(s1("library", $0)); next }
+$2 == "lib" && $NF ~ /\.so(\..*)?$/ { link(s1("library.so", $0)); next }
+
+$2 == "share" && $3 == "info" { link(s1("info", r1($0))); next }
+$2 == "share" && $3 == "man" { link(s1("man", r1($0))); next }
+$2 == "share" && $3 == "doc" { link(s1("doc", r1($0))); next }
+
+$2 == "config" { link($0); next }
+$2 == "man" { link($0); next }
+$2 == "info" { link($0); next }
+$2 == "doc" { link($0); next }
+$2 == "data" { link($0); next }
+$2 == "include" { link($0); next }
+
+
+{ printf "genlinks ##%s## skipped\n", $0 >>"/dev/stderr" }
+
+END {
+ for(fname in x) { printf "DEBUG: x[\"%s\"]=\"%s\"\n", fname, x[fname] >"/dev/stderr" }
+ retcode = 0
+ for(fname in x) {
+ if(x[fname]) {
+ printf "ERROR: missing expected file \"%s\"\n", fname >"/dev/stderr"
+ retcode = 3
+ }
+ }
+ exit retcode
+}' >.install-links.new
+mv .install-links.new .install-links
+
diff --git a/variants/root-x86_64/userspace.environment b/variants/root-x86_64/userspace.environment
@@ -87,6 +87,7 @@
#+mlog.c142e40ce81ef88b7bc88e3efcaefc4107228b10fd5bad0909e6df220e6e26b8
#+findutils.c741696bfb399c26021546e5bb5ffd6d39baab5e8e08ef84aba06243fece457a
#+nawk.501f141cdde6b749e9743e18818447aff3bfef9cd1b6a291a49d3b016f1940b0
+#+nvi.13bbc835f2475f03f467c2d9f708b2a87649c202ab052c56d396cc5b09d9be3e
#+squashfs-tools.f658bca0fa15874bdba67d96aafe605b613e39e119efaa40624484d71f47f49a
#+mandoc.f96c93c98d18cb71587ef0de2d7a3193bea8315cb0e572dae27e01a03066eb0c
#+tinyssh.4a7b404f6edad9a43c7399ee66180784cabc1e6b88af4ecfe332cc02c30768f5
\ No newline at end of file