Byblos

From XionKB
Revision as of 08:12, 4 September 2023 by Alexander (talk | contribs) (→‎System support: new section)
Jump to navigationJump to search
This article is a stub. You can help by expanding it.

Byblos is a software development kit developed for Sirius DOS, A* and Unix-based servers, with distinction for MILOTIX and Linux, BSD and Darwin (pan-Unix) support.

System support

Byblos SDK is multi-platform. Systems are divided into two broad groups: XAA platforms and Unices, with MILOTIX being the only system counting as both. Unix-based systems are supported for the highly economical commodity-level scalability that is out of reach of A*. All XAA platforms are supported for the interests of the XAA initiative. GNU/Linux, FreeBSD and Darwin are supported for their market share, while OpenBSD is supported for the relevancy of its security features and illumos is supported as it is a Unix not based on Linux or BSD like Darwin, but is free software.

Location

Spatial placement of the SDK is a more intuitive ordeal on A*, where programs and data merely have names, as opposed to Unices where a file system hierarchy must be dictated for consistency to remain with portability in force. To this end, Byblos defines the following sub-hierarchy of the Unix file system hierarchy, rooted at /opt/byblos:

Path Brief description Notes
/opt/byblos/bin native executable binaries each package can place native binaries whose names are registered in here
/opt/byblos/conf configuration files each package gets a subfolder within that it can populate at will
/opt/byblos/include C, C++ and C* header files each package gets a subfolder within that it can populate at will
/opt/byblos/lib native static libraries each package can place the executable libraries whose names are registered in here; additionally, each package may place header files in the root which it has registered
/opt/byblos/libexec native non-user-facing binaries each package can place non-user-facing binaries whose names are registered in here
/opt/byblos/local non-distributive sub-hierarchy
/opt/byblos/local/bin native executable binaries each package can place native binaries whose names it intends to register in here
/opt/byblos/local/conf configuration files each package gets a subfolder within that it can populate at will
/opt/byblos/local/include C, C++ and C* header files each package gets a subfolder within that it can populate at will; additionally, each package may place header files in the root which it intends to register
/opt/byblos/local/lib native static libraries each package can place the libraries whose names it intends to register in here
/opt/byblos/local/libexec native non-user-facing binaries each package can place non-user-facing binaries whose names it intends to register in here
/opt/byblos/local/man manuals and documentation each package gets a subfolder within that it can populate at will
/opt/byblos/local/sbin "script" binaries each package can place "script" binaries whose names it intends to register in here
/opt/byblos/local/share read-only data each package gets a subfolder within that it can populate at will
/opt/byblos/man manuals and documentation each package gets a subfolder within that it can populate at will
/opt/byblos/sbin "script" binaries each package can place "script" binaries whose names are registered in here
/opt/byblos/share read-only data each package gets a subfolder within that it can populate at will
/opt/byblos/system SDK internal management data reserved for the exclusive use of the Byblos SDK; outside applications should never assume anything about this directory's contents or even that it exists at all

"Script" binaries are programs that are, by themselves, architecture independent, usually because they are interpreted or compiled just-in-time on loading. These are separated from native binaries which are, as files, specific to the architecture in use. Byblos does not support any architectures other than the one in use on a given system (more exactly, whichever µarch the running kernel is compiled for). For instance, if a user is running a "multilib" system such as on amd64 with i386 as lib32/, it will only support amd64.

The Byblos SDK operates on the premise that the working development directory can be anywhere, while all tools and support files are either provided within the hierarchy above, or assumed present on the system-level. System-level utilities and libraries should be provisioned using system package managers and treated in full mutual exclusion to Byblos-specific tooling; Byblos stuff is not compiled into /usr/local, and system stuff is never compiled into /opt/byblos. Even if one must manually compile a package from source, it should NEVER be installed with its --sysroot set to /opt/byblos! (Use /usr/local instead.)

When developing software in a source tree somewhere, it should be built and installed into /opt/byblos/local/* for testing and personal use. Packaged Byblos software downloaded or installed from elsewhere will be configured to be installed into /opt/byblos/*, where it is versioned and stripped and so on.

Name registration

Byblos maintains a registration system to prevent name collisions inside its root hierarchy. Every project or package has a "master name" by which it is known, and a set of "servile names" inside the bin/, include/, lib/, libexec/, and sbin/ subfolders each. Ordinarily, servile names inside include/ are not provided to third parties. The details of this registry and its governance are to be determined.

Components

Yellow 〜 boxes indicate eventual support will be given, just not in the initial phases of development (usually due to bootstrapping concerns).

Module Sirius DOS A* MILOTIX GNU/Linux FreeBSD OpenBSD Darwin illumos
Hinterlib
Inbound
Outbound
Rebound
Earthbound
Forerunner
Precursor
Simbel
VR6
Sirius C*
Oración
Feeble C compiler
Quindle
Gauntlet
Pegasus
Cigarbochs

Petit utilities

  • chkenc – inspect and validate text encodings of files
  • liner – inspect and validate line lengths