Lucio Andrés Illanes Albornoz 7ff727
Obtaining and installing a Midipix distribution
Lucio Andrés Illanes Albornoz 7ff727
===============================================
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
A Midipix distribution consists of the following:
Lucio Andrés Illanes Albornoz cf57b4
* the native Midipix toolchain, consisting of perk, gcc, its dependencies,
Lucio Andrés Illanes Albornoz cf57b4
  and binutils,
Lucio Andrés Illanes Albornoz cf57b4
* musl, a lightweight, fast, simple, and free libc[1] used by Midipix,
Lucio Andrés Illanes Albornoz cf57b4
* the Midipix runtime components that bridge the gap between the libc and the
Lucio Andrés Illanes Albornoz cf57b4
  executive subsystems of all Windows NT-derived Windows OS starting with and
Lucio Andrés Illanes Albornoz cf57b4
  including Windows XP, and
Lucio Andrés Illanes Albornoz cf57b4
* a steadily increasing number of 3rd party open source packages, as expected in
Lucio Andrés Illanes Albornoz cf57b4
  any modern POSIX-compliant *nix environment, including GNU coreutils, shells,
Lucio Andrés Illanes Albornoz cf57b4
  libraries such as ncurses, libressl, as well as Perl and Python.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Compressed Midipix distribution tarballs and, separately, source tarballs are,
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
at present, produced every four (4) hours UTC after each successful build and
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
subsequently signed. This process is fully automated by a portable Bourne shell
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
script; all of the above mentioned components are cross-compiled.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Thus, the most hassle-free way to get started with Midipix is to simply download
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
the most recent distribution tarball and follow the instructions below. It is,
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
however, recommended to anyone intending to use Midipix as a development platform
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
to familiarise themselves with the build process. Other reasons to prefer building
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
a Midipix distribution yourself include integrating new 3rd party software or local
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
runtime component patches. At present, a full build from scratch takes about 30
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
(thirty) minutes to finish on an 8-core host with eight simultaneous make jobs,
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
minus the generation of the tarballs. The build script can be obtained from the
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
following GitHub repository: <https://github.com/lalbornoz/midipix_build>.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
If you obtained a Midipix distribution tarball, extract it into a directory and
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
drive of your choice, henceforth referred to as target directory; the drive can
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
be a network drive. Do _not_ use anything but a true UNIX environment tar(1), as
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
e.g. WinRAR or WinZip handle extracting hard links incorrectly.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
If you built Midipix yourself, the target directory is equivalent to the ${PREFIX}
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
configured in build.vars, which defaults to ${HOME}/midipix.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
At present, providing an interactive Midipix environment still requires the Cygwin
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
terminal emulator Mintty and a shell; this does not include pseudoterminals, which
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
are entirely handled by Midipix. Both can be installed via the 64-bit Cygwin setup
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
program at <https://www.cygwin.com/setup-x86_64.exe>.
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Once installed, launching a Midipix shell is accomplished by the `midipix.sh' shell
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
script provided in the target directory from within a Cygwin shell prompt in Mintty
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
and the target directory. This may either simply be done manually each time, or
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
automated by a shortcut. As shortcuts cannot be distributed, it can be created by
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
either:
Lucio Andrés Illanes Albornoz cf57b4
* Opening (executing) the VBScript script in the target directory from within the
Lucio Andrés Illanes Albornoz cf57b4
  latter cscript.exe, providing the fully qualified pathname to Mintty, if it differs
Lucio Andrés Illanes Albornoz cf57b4
  from the default value of C:\cygwin64\bin\mintty.exe or
Lucio Andrés Illanes Albornoz cf57b4
* manually creating a shortcut to Mintty with `Start in:' set to the target directory
Lucio Andrés Illanes Albornoz cf57b4
  and the following command line:
Lucio Andrés Illanes Albornoz cf57b4
  [ ... ]\mintty.exe -i /Cygwin-Terminal.ico -e sh midipix.sh, or
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
References:
Lucio Andrés Illanes Albornoz cf57b4
* Sun, 24 Apr 2016 09:04:08 +0000 [1] musl FAQ <http://www.musl-libc.org/faq.html>
Lucio Andrés Illanes Albornoz (arab, vxp) d3b354
Lucio Andrés Illanes Albornoz 7ff727
Linux distribution-related errata
Lucio Andrés Illanes Albornoz 7ff727
=================================
Lucio Andrés Illanes Albornoz (arab, vxp) a8abe3
Lucio Andrés Illanes Albornoz (arab, vxp) a8abe3
Busybox based distributions need the gawk, gsed, and coreutils packages to build perl.