Hi all,
I’ve completed a full backport of git9 to the 4th Edition / 9legacy
environment. Earlier attempts existed, and I reviewed the 9legacy
patches carefully, but even with all undocumented dependencies
applied, the result still wasn’t in a state where the same codebase
could run unmodified across systems.
Instead of stacking more patches, I focused on the concrete
incompatibilities that the port actually encountered: differences
in rc syntax, flag parsing, libc interfaces, date/time formatting,
awk behaviour, and the availability of certain helper utilities.
None of these were major individually, but together they prevented
a clean build and consistent behaviour on 4e.
The goal was to make git9 edition-agnostic without forking much of
the code. The result now builds and runs cleanly on both 9front
and 4e/9legacy.
In practical terms, this meant replacing newer rc constructs with
legacy-compatible forms, avoiding the 9front-specific aux/getflags
syntax, steering clear of newer libc calls like Bfdopen, using date
formatting primitives available on both systems, working around awk
differences, and importing a small set of auxiliary utilities so
that behaviour matches across both environments. The PR contains
the full details, but the overarching theme is reducing shallow
incompatibilities rather than introducing edition‑specific branches.
To install the port, use the contrib mechanism:
contrib/install yk/git
The RFC PR is here for anyone who wants to review or discuss the
approach:
https://github.com/9front/9front/pull/2
This is offered in the spirit of 9legacy: keep the older systems
usable and interoperable without turning them into museum pieces.
Feedback is welcome, especially from anyone running mixed environments
or interested in cross‑edition compatibility.
Thanks,
Yaroslav Kolomiiets
------------------------------------------
9fans: 9fans
Permalink:
https://9fans.topicbox.com/groups/9fans/Td167d7e8cebadcc4-M40940e09c5d3d7d6a0110ca1
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription