summaryrefslogtreecommitdiffstats
path: root/dev
diff options
context:
space:
mode:
Diffstat (limited to 'dev')
-rw-r--r--dev/multiarch.mdwn21
-rw-r--r--dev/opkbuild.mdwn4
-rw-r--r--dev/opkhelper.mdwn4
-rw-r--r--dev/releases/1/packages.mdwn23
-rw-r--r--dev/todo/install-bb-without-bb.mdwn86
-rw-r--r--dev/wolfutil.mdwn48
6 files changed, 173 insertions, 13 deletions
diff --git a/dev/multiarch.mdwn b/dev/multiarch.mdwn
index c9aa90b..d869a7d 100644
--- a/dev/multiarch.mdwn
+++ b/dev/multiarch.mdwn
@@ -157,3 +157,24 @@ dependency is available in the downloaded feed lists, and the dependency is not
architecture-qualified. The language extension dependency in turn depends on a
language interpreter, which is also not architecture-qualified. The native
architecture of both will be installed.
+
+
+Implementation
+==============
+
+File System Hierarchy
+---------------------
+
+As explained above, to be coninstallable, library packages must install all of
+their files in architecture-qualified locations. Debian and Ubuntu install
+shared object files in `/usr/lib/<triplet>` or `/lib/<triplet>`, where
+`<triplet>` is a [GNU system type][ac-systemtype]. Since multiple ProteanOS
+architectures may share the same GNU system type, ProteanOS architecture names
+are instead used in such library directories.
+
+ProteanOS's GNU Binutils and GCC packages have been patched and configured to
+use multiarch library paths since their initial releases in 2014. opkhelper has
+used multiarch library paths when configuring packages since version 3.0.0-beta1
+released in 2012.
+
+[ac-systemtype]: https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/System-Type.html
diff --git a/dev/opkbuild.mdwn b/dev/opkbuild.mdwn
index ef489c4..9e45e00 100644
--- a/dev/opkbuild.mdwn
+++ b/dev/opkbuild.mdwn
@@ -19,7 +19,7 @@ opkbuild is similar in function to the [development library][libdpkg-perl] and
Downloading
===========
-The current version of opkbuild is [4.1.4][rel-ann].
+The current version of opkbuild is [4.2.0][rel-ann].
opkbuild can be found on the ProteanOS files site by [HTTP][dl-http] or
[FTP][dl-ftp].
@@ -27,7 +27,7 @@ opkbuild can be found on the ProteanOS files site by [HTTP][dl-http] or
opkbuild is maintained in a [Git repository][repo-http], which can be cloned
from `git://git.proteanos.com/opkbuild/opkbuild.git`.
-[rel-ann]: http://lists.proteanos.com/proteanos-dev/2019/08/msg00001.html
+[rel-ann]: http://lists.proteanos.com/proteanos-dev/2020/07/msg00000.html
[dl-http]: http://files.proteanos.com/pub/opkbuild/
[dl-ftp]: ftp://files.proteanos.com/pub/opkbuild/
[repo-http]: http://git.proteanos.com/opkbuild/opkbuild.git/
diff --git a/dev/opkhelper.mdwn b/dev/opkhelper.mdwn
index 9d652c5..47bcd49 100644
--- a/dev/opkhelper.mdwn
+++ b/dev/opkhelper.mdwn
@@ -14,7 +14,7 @@ Debian.
Downloading
===========
-The current version of opkhelper is [3.1.2][rel-ann].
+The current version of opkhelper is [3.1.3][rel-ann].
opkhelper can be found on the ProteanOS files site by [HTTP][dl-http] or
[FTP][dl-ftp].
@@ -22,7 +22,7 @@ opkhelper can be found on the ProteanOS files site by [HTTP][dl-http] or
opkhelper is maintained in a [Git repository][repo-http], which can be cloned
from `git://git.proteanos.com/opkhelper/opkhelper.git`.
-[rel-ann]: http://lists.proteanos.com/proteanos-dev/2019/03/msg00003.html
+[rel-ann]: http://lists.proteanos.com/proteanos-dev/2020/07/msg00001.html
[dl-http]: http://files.proteanos.com/pub/opkhelper/
[dl-ftp]: ftp://files.proteanos.com/pub/opkhelper/
[repo-http]: http://git.proteanos.com/opkhelper/opkhelper.git/
diff --git a/dev/releases/1/packages.mdwn b/dev/releases/1/packages.mdwn
index f4f751d..02f6810 100644
--- a/dev/releases/1/packages.mdwn
+++ b/dev/releases/1/packages.mdwn
@@ -61,8 +61,8 @@ packages:
libpng12 1.2.51-2
libsigsegv 2.12-1
libtomcrypt 1.18.2-1
- libtommath.1 1.1.0-1
libtommath 0.42.0-1
+ libtommath.1 1.1.0-1
libtool 2.4.2-2
libubox 0+git20190227.eeef7b5-1
libunistring 0.9.10-1
@@ -75,33 +75,37 @@ packages:
mplus-fonts 058-2
ncurses 6.1+20190706-1
npth 1.6-1
+ nss-certdata 3.54-2
open-ath9k-htc-firmware 1.4~git20141115.146bff1-1
- opkbuild 4.1.4-1
+ opkbuild 4.2.0-1
opkg 0.2.4-3
opkg-lede 0+git20190131.d4ba162-6
- opkhelper-3.0 3.1.2-2
+ opkhelper-3.0 3.1.3-1
opkhelper-default 3.0.0
patch 2.7.6-1
pciids 2019.06.17-1
pciutils 3.6.2-1
pcre 8.35-1
pkgconf 0.9.6-1
- platconf-pkg-tools 2.1.1
+ platconf-pkg-tools 3.0.0
popt 1.16+sip1-1
+ proquivs 1.0
proteanos-branding 0.3
pth 2.0.7-1
- readline.8 8.0-1
readline 6.3-1
+ readline.8 8.0-1
strace 4.8-1
tcl8.6 8.6.9+sip1-2
tzdb 2019a-1
usign 0+git20161022.3e6648b-1
+ wolfssl.24 4.4.0-3
+ wolfutil 1.0.0-2
wpa-supplicant 2.2-2
xz 5.2.4-1
zlib 1.2.11+sip1-1
------------------------------------------------------------
- Source packages: 94
- Binary packages: 388
+ Source packages: 98
+ Binary packages: 395
The above list was generated by running the following shell script:
@@ -135,12 +139,13 @@ The above list was generated by running the following shell script:
;;
esac
done <<EOF
- $(wget -q -O - "${base_url}/src/all/base/Packages")
+ $(wget -q -O - "${base_url}/src/all/base/Packages" \
+ "${base_url}/src/all/src/Packages")
EOF
# Collect binary package names
bins=''
- for aps in $(wget -q -O - "${base_url}/Manifest" | grep -Fv 'src/all/base'); do
+ for aps in $(wget -q -O - "${base_url}/Manifest" | grep -Fv 'src/all/'); do
bins="${bins} $(wget -q -O - "${base_url}/${aps}/Packages" | \
sed -n 's/^Package: //p;')"
done
diff --git a/dev/todo/install-bb-without-bb.mdwn b/dev/todo/install-bb-without-bb.mdwn
new file mode 100644
index 0000000..4bb90ff
--- /dev/null
+++ b/dev/todo/install-bb-without-bb.mdwn
@@ -0,0 +1,86 @@
+[[!meta title="Installing BusyBox Without BusyBox"]]
+
+**or, Adventures in Regressions and Crazy Ideas**
+
+---
+
+**This work is now done.**
+
+**The rest of this page is kept only for reference and historical purposes.**
+
+---
+
+Two Problems
+============
+
+`opkg-lede` and the Outsourced Inflation
+----------------------------------------
+
+`opkg-lede` [now relies][opkg-lede-dd4c78a] on an external `gzip` executable.
+When upgrading a package, it tries to execute `gzip` to unpack maintainer
+scripts and data files [after removing][opkg_install_pkg] the old version of the
+package. When the package being upgraded is `busybox`, which provides `gzip`,
+`opkg` crashes and leaves behind a completely broken system.
+
+To reiterate, `opkg-lede` is (and has been for as long as it has been in
+ProteanOS) **currently unable to upgrade `busybox`**, due to its own design.
+
+[opkg-lede-dd4c78a]: https://git.openwrt.org/?p=project/opkg-lede.git;a=commitdiff;h=dd4c78aa88efd3b9cf516030937c684814df7962
+[opkg_install_pkg]: https://git.openwrt.org/?p=project/opkg-lede.git;a=blob;f=libopkg/opkg_install.c;hb=d4ba162#l1520
+
+The Amazing Alternatives of `busybox`
+-------------------------------------
+
+Instead of [adding alternatives][alts-log] one at a time, [it would be
+nice][bb-ua] to manage all of `busybox`'s utility links using
+`update-alternatives`. Unfortunately, the [maintainer script][bb.pi] that runs
+`update-alternatives` (as well as the [`update-alternatives` script][u-a]
+itself) needs a few `busybox` utilities (`/bin/sh` for a start). Thus, after an
+older version of `busybox` is deconfigured, a newer version can't be configured.
+`busybox` also can't be configured when first unpacked by `prokit`.
+
+[alts-log]: http://git.proteanos.com/pkg/busybox.git/log/alternatives
+[bb-ua]: http://git.proteanos.com/pkg/busybox.git/commit/?id=1558d05c62ed90f7d93a14533541c33896b7b733
+[bb.pi]: http://git.proteanos.com/pkg/busybox.git/tree/busybox.pkg/postinst
+[u-a]: https://git.openwrt.org/?p=project/opkg-lede.git;a=blob;f=utils/update-alternatives.in;hb=d4ba162
+
+One Solution
+============
+
+The next version of `src:opkg-lede` (likely 0+git20190131.d4ba162-7) already
+will have a [wrapper script called `opkg`][opkg] that executes `opkg-cl` (the
+actual binary executable). The script can be extended to first save a copy of
+`/bin/busybox` to an empty temporary directory, generate utility links to it in
+the directory, and add the directory to `PATH`. Until all of this setup is
+complete, the wrapper script must be careful to execute utilities as `busybox
+$util` (a full path to `busybox` won't be necessary, as the usual `/bin/busybox`
+will be available at that point). This includes the interpreter line, which
+will need to be changed to `#!/bin/busybox sh`. `ash` built-in utilities can be
+used as usual.
+
+The `busybox` package can't use `update-alternatives` to manage all of its
+utility links until an `opkg-lede` with this wrapper script functionality is
+uploaded. This is because, even if `busybox`'s `postinst` script is modified to
+use the `busybox` executable directly, other packages' maintainer scripts may be
+executed first, while `busybox` is unpacked but not yet configured (and
+therefore utility links are not yet created).
+
+Once this new `opkg-lede` package is uploaded and `busybox` uses
+`update-alternatives` for everything, `busybox` would need to declare that it
+`Breaks` older versions of `opkg-lede`, to ensure that `opkg-lede` will preserve
+a copy of the `busybox` executable and its utility links. However, this is
+still insufficient, as the version of `opkg` that is *running* must have already
+set up this environment before `busybox` is upgraded. `busybox`'s `prerm`
+script will need to check for this somehow and abort the upgrade if `opkg` is
+too old to have prepared for a safe upgrade. One solution is for the `opkg`
+script to set an `OPKG_BUSYBOX_SAVED` environment variable.
+
+The `opkg` script of the `opkg-lede` package will need to read `busybox`'s list
+of alternatives links. This is currently located at
+`/usr/share/busybox/alternatives`. [The file's format][alts] will change when
+`busybox` uses `update-alternatives` for everything: the last two columns (name
+and priority) will be dropped. `opkg` however can simply read the first column,
+so it will maintain compatibility.
+
+[opkg]: http://git.proteanos.com/pkg/opkg-lede.git/tree/opkg
+[alts]: http://git.proteanos.com/pkg/busybox.git/tree/alternatives?id=e37f03311d934a8f33a9ff31db47b18bbf0be555
diff --git a/dev/wolfutil.mdwn b/dev/wolfutil.mdwn
new file mode 100644
index 0000000..1fba2fe
--- /dev/null
+++ b/dev/wolfutil.mdwn
@@ -0,0 +1,48 @@
+[[!meta title="Unofficial wolfSSL Utility"]]
+
+wolfutil is a command-line tool for the wolfSSL embedded (SSL/)TLS
+library. It is similar to the OpenSSL command-line tool, providing only
+a limited `s_client` TLS client command. The primary goal is to provide
+enough functionality for use by BusyBox's wget applet.
+
+wolfutil's `s_client` command is designed to be stronger by default than
+OpenSSL's, as the latter is only meant to be a "diagnostic tool". That
+is, the following command:
+
+ $ wolfutil s_client -quiet -connect ${host}:${port} \
+ > -servername ${servername}
+
+is roughly equivalent to the more complicated:
+
+ $ openssl s_client -quiet -connect ${host}:${port} \
+ > -servername ${servername} -verify 9 -verify_return_error \
+ > -no_ssl3 -no_tls1 -no_tls1_1
+
+This utility is in no way authored by or affiliated with wolfSSL Inc. or
+its contributors.
+
+
+Downloading
+===========
+
+The current version of wolfutil is [1.0.0][rel-ann].
+
+wolfutil can be found on the ProteanOS files site by [HTTP][dl-http] or
+[FTP][dl-ftp].
+
+wolfutil is maintained in a [Git repository][repo-http], which can be cloned
+from `git://git.proteanos.com/wolfutil/wolfutil.git`.
+
+[rel-ann]: http://lists.proteanos.com/proteanos-dev/2020/08/msg00000.html
+[dl-http]: http://files.proteanos.com/pub/wolfutil/
+[dl-ftp]: ftp://files.proteanos.com/pub/wolfutil/
+[repo-http]: http://git.proteanos.com/wolfutil/wolfutil.git/
+
+
+Mailing List
+============
+
+Bug reports, feature requests, and patches for wolfutil are welcome on the
+[ProteanOS development mailing list][proteanos-dev].
+
+[proteanos-dev]: http://lists.proteanos.com/proteanos-dev/