README.md

Obtaining and installing a Midipix distribution

A Midipix distribution consists of the following: * the native Midipix toolchain, consisting of perk, gcc, its dependencies, and binutils, * musl, a lightweight, fast, simple, and free libc[1] used by Midipix, * the Midipix runtime components that bridge the gap between the libc and the executive subsystems of all Windows NT-derived Windows OS starting with and including Windows XP, and * a steadily increasing number of 3rd party open source packages, as expected in any modern POSIX-compliant *nix environment, including GNU coreutils, shells, libraries such as ncurses, libressl, as well as Perl and Python.

Compressed Midipix distribution tarballs and, separately, source tarballs are, at present, produced every four (4) hours UTC after each successful build and subsequently signed. This process is fully automated by a portable Bourne shell script; all of the above mentioned components are cross-compiled.

Thus, the most hassle-free way to get started with Midipix is to simply download the most recent distribution tarball and follow the instructions below. It is, however, recommended to anyone intending to use Midipix as a development platform to familiarise themselves with the build process. Other reasons to prefer building a Midipix distribution yourself include integrating new 3rd party software or local runtime component patches. At present, a full build from scratch takes about 30 (thirty) minutes to finish on an 8-core host with eight simultaneous make jobs, minus the generation of the tarballs. The build script can be obtained from the following GitHub repository: https://github.com/lalbornoz/midipix_build.

If you obtained a Midipix distribution tarball, extract it into a directory and drive of your choice, henceforth referred to as target directory; the drive can be a network drive. Do not use anything but a true UNIX environment tar(1), as e.g. WinRAR or WinZip handle extracting hard links incorrectly. If you built Midipix yourself, the target directory is equivalent to the ${PREFIX} configured in build.vars, which defaults to ${HOME}/midipix.

At present, providing an interactive Midipix environment still requires the Cygwin terminal emulator Mintty and a shell; this does not include pseudoterminals, which are entirely handled by Midipix. Both can be installed via the 64-bit Cygwin setup program at https://www.cygwin.com/setup-x86_64.exe.

Once installed, launching a Midipix shell is accomplished by the midipix.sh' shell script provided in the target directory from within a Cygwin shell prompt in Mintty and the target directory. This may either simply be done manually each time, or automated by a shortcut. As shortcuts cannot be distributed, it can be created by either: * Opening (executing) the VBScript script in the target directory from within the latter cscript.exe, providing the fully qualified pathname to Mintty, if it differs from the default value of C:\cygwin64\bin\mintty.exe or * manually creating a shortcut to Mintty withStart in:' set to the target directory and the following command line: [ ... ]\mintty.exe -i /Cygwin-Terminal.ico -e sh midipix.sh, or

References: * Sun, 24 Apr 2016 09:04:08 +0000 [1] musl FAQ http://www.musl-libc.org/faq.html

Linux distribution-related errata

Busybox based distributions need the gawk, gsed, and coreutils packages to build perl.