I'm pleased to finally issue the first release of Synth. There were some
significant changes since the last release candidate:
For background, see the original Thread 54690
significant changes since the last release candidate:
Code:
* Rework piped command handling to fix command parsing
Synth was using ada-util to execute external commands and receive the
output. Unfortunately, this implementation currently can not handle
either extra whitespace nor can it support quoted values. The author
is going to fix this soon using popen and pclose for Unix, but I just
implemented the functionality by binding to those functions myself.
* This was the only use of ada-util (I originally expected to use more
of this library's functionality) so it's been dropped as a dependency.
This reduces the stripped executable size by about 30%.
* The environment was prepopulated with UNAME_[x] variables. This is
required for Synth to support building packages for different releases
or even architectures (e.g. building 10.2 packages on 11.0-CURRENT).
* Define OSREL in the builder's /etc/make.conf. This seemed to be
required for emulators/virtio-kmod which uses <pre> although it's not
clear defining OSREL is necessary.
* Fix graceful shutdown handling in text mode.
When the graceful shutdown key was changed from Escape to Control-Q, it
stopped working in text mode (i.e. when it wasn't in curses). I believe
that's because the curses display uses the "raw" tty mode and lets all
control characters through. In text mode, Control-Q has a flow control
functionality. I wrote a routine to disable that flow control and give
Synth access to control-Q keypress in all cases.
* The same routine disables TTY echoes when they are unwanted
* Fix "status-everything" dry-run issue where a graceful shutdown resulted
in an unwanted "sorry" message.
* In test mode file system violation check, mark changes to /var/run
during building to be excluded from checks.
* Add a guard that checks if Synth is launched when the current directory
is <sysroot>/usr/local (or a subdirectory of it). Synth will fail
to mount everything in this case, so now it stops and tells the user
to change directories and try again.
For background, see the original Thread 54690