From e9fd9b95f00e6ec47de43e49adf8421ad950dce8 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Tue, 26 Sep 2023 03:40:43 -0400 Subject: TODO: Plan tests, oh-installfiles, and oh driver --- diff --git a/TODO b/TODO index c1ea699..8e70f76 100644 --- a/TODO +++ b/TODO @@ -1,5 +1,66 @@ -Future Tasks ------------- +Build System and Test Suite Overhaul +------------------------------------ + + * Consider finally replacing `oh_use()` with shpp and shld. Allow running in + place. Make building rules optionally (and by default) silent. + * Make libopkbuild and opkg optional, without which oh-shlibdeps will be + disabled (excluded from building and installation). Currently, running + tests requires: + $ ./autogen.sh --prefix="${PWD}/_inst/usr" \ + > --with-libopkbuild=false --with-opkg=false + $ make install + $ make test + * Replace the custom test suite harness with the TAP library and harness from + Automake. Rewrite test library and tests. + * Greatly expand test suite coverage. + +Automating Away Boilerplate Code/Lists +-------------------------------------- + + * Add support for the CMake build system. + * A test suite with mature coverage should be completed first. + * oh-installfiles: If `.pkg/files` is missing, try to figure out which + files should be installed, based on package name and/or section. For + example: + - A single package in section "boot" can provide `/boot/`. + - A single package in section "dbg" can provide `/usr/lib/debug/`. + - A single package in section "doc" can provide `/usr/share/man/`, + `/usr/share/info/`, and `/usr/share/doc/` (subdirectory/-ies of which must + not be the name of the binary package). + - "libfoo.1" in section "lib" can provide + `/usr/lib/${OPK_HOST_ARCH}/libfoo.so.1.*`. + - "libfoo.1-dev" in section "libdev" can provide `/usr/bin/*-config` + (TODO: or optionally remove custom config scripts, like src:freetype does? + also, src:tcl8.6 uses a different naming style), `/usr/include/`, + `/usr/lib/${OPK_HOST_ARCH}/libfoo.so.1`, and + `/usr/lib/${OPK_HOST_ARCH}/pkgconfig/*.pc`. + - A single package in section "locale" can provide `/usr/share/locale/`. + - A single package in section "share" can provide `/usr/share/` (after files + are installed into any packages in sections "doc" and "locale"). + - A single package in either section "dev" or "util" can provide `/usr/bin/` + (after any files matching `/usr/bin/*-config` are installed into any + packages in section "libdev"). + If there are multiple packages in any of sections "boot", "dbg", "doc", + "locale", "share", or "dev" and "util", then all such packages must specify + files to install. + * oh: A new automatic build command driver/sequencer like debhelper's dh. + Support options -s, -B, and -d and arguments for oh-autoconfigure, + oh-autobuild, oh-autotest, oh-autoinstall, and oh-autoclean. Support + targets "nop", "configure", "build" (which also runs "configure" and + "test"), "test", "install", and "clean". If cross building, don't run + oh-autotest. If no binary package exists in section "dbg", + don't pass option -k to oh-strip. Maybe support override (e.g. + `override-oh-autoconfigure`) and/or hook (e.g. "post-oh-autoinstall") + targets. Maybe also automate common tasks like: + - `rm -f "${dest}/usr/lib/${OPK_HOST_ARCH}/"*.a` + - `rm -f "${dest}/usr/lib/${OPK_HOST_ARCH}/"*.la` + - `rm -f "${dest}/usr/share/info/dir"` + - Maybe provide a way to list file patterns to remove. + - Maybe (in oh-installfiles?) provide a way to move files (e.g. + `/usr/share/doc/` files). + +Other Future Tasks +------------------ * Don't list library and helper configuration files as `_SCRIPTS` (this makes them executable). -- cgit v0.9.1