diff options
Diffstat (limited to 'dev')
-rw-r--r-- | dev/releases/1/packages.mdwn | 16 | ||||
-rw-r--r-- | dev/todo/install-bb-without-bb.mdwn | 86 | ||||
-rw-r--r-- | dev/wolfutil.mdwn | 48 |
3 files changed, 144 insertions, 6 deletions
diff --git a/dev/releases/1/packages.mdwn b/dev/releases/1/packages.mdwn index 038ecc9..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.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: 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/ |