| 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 with `Start 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. |
| |
| Midipix status report |
| ===================== |
| |
| Last update: Tue, 26 Apr 2016 10:16:16 +0000 |
| |
| The following build status codes are defined: |
| * C -- Complete build w/ at least the default configuration, |
| * B -- Broken, e.g. doesn't work at all or only minimally, |
| * I -- Integrated (e.g. linked against) with other packages, |
| * E -- Extensively tested and confirmed to work by multiple sources, possibly via a testsuite, |
| * P -- Patches needed to build that haven't been committed upstream yet, and |
| * U -- Update to latest stable version or HEAD pending. |
| |
| | Component type | Name | Version | Status | Comments | |
| | ------------------- | ------------------- | ----------------- | ------ | -----------------------------------------------------------------------------| |
| | Host toolchain | binutils | 2.24.51 | C--EPU | |
| | Host toolchain | file | 5.28 | C----- | |
| | Host toolchain | gcc | 4.6.4 | ---EPU | Excludes libstdc++ | |
| | Host toolchain | musl | 1.1.12 | C-IEPU | |
| | Host toolchain | perk | HEAD | C-IE-- | |
| | Host toolchain | pkgconf | 0.28 | C--E-- | |
| | Host toolchain | slibtool | 0.5.7 | C--E-- | |
| | Native toolchain | binutils | 2.24.51 | C--EPU | |
| | Native toolchain | gcc | 4.6.4 | ---EPU | Excludes libstdc++ | |
| | Native toolchain | gmp | 5.1.3 | C-IEPU | |
| | Native toolchain | libelf | 0.8.13 | C-IEP- | |
| | Native toolchain | mpc | 1.0.1 | C-IE-U | |
| | Native toolchain | mpfr | 3.1.2 | C-IE-U | |
| | Native toolchain | musl | 1.1.12 | C-IEPU | |
| | Native toolchain | perk | HEAD | C-IE-- | |
| | Native toolchain | pkgconf | 0.28 | C-IE-- | |
| | Runtime components | dalist | HEAD | C-IE-- | |
| | Runtime components | ntapi | HEAD | C-IE-- | |
| | Runtime components | ntcon | HEAD | C-IE-- | |
| | Runtime components | ntctty | HEAD | C-IE-- | |
| | Runtime components | pemagine | HEAD | C-IE-- | |
| | Runtime components | psxscl | HEAD | C-IE-- | Excludes clone(2) and dlopen(3) | |
| | Runtime components | psxtypes | HEAD | C-IE-- | |
| | Runtime components | ptycon | HEAD | C-IE-- | |
| | 3rd party libraries | bzip2 | 1.0.6 | C-IE-- | |
| | 3rd party libraries | curl | 7.47.1 | C---P- | |
| | 3rd party libraries | expat | 2.2.0 | C----- | |
| | 3rd party libraries | gdbm | 1.12 | C-I--- | |
| | 3rd party libraries | glib | 2.46.2 | C-I-P- | Shared object not built | |
| | 3rd party libraries | gzip | 1.2.4 | C-IE-- | |
| | 3rd party libraries | inputproto | 2.3.2 | C----- | |
| | 3rd party libraries | kbproto | 1.0.7 | C----- | |
| | 3rd party libraries | libarchive | 3.1.2 | C-I-P- | |
| | 3rd party libraries | libassuan | 2.4.3 | C-I--- | |
| | 3rd party libraries | libevent | 2.0.22-stable | C-I--- | |
| | 3rd party libraries | libfetch | 2.33 | C-I-P- | |
| | 3rd party libraries | libffi | 3.2.1 | C-I-P- | |
| | 3rd party libraries | libfirm | HEAD | C-I-P- | |
| | 3rd party libraries | libgcrypt | 1.7.3 | C-I--- | |
| | 3rd party libraries | libgpg_error | 1.24 | C-I-P- | |
| | 3rd party libraries | libICE | 1.0.9 | C----- | |
| | 3rd party libraries | libksba | 1.3.5 | C-I-P- | |
| | 3rd party libraries | libpipeline | 1.4.1 | C-I--- | |
| | 3rd party libraries | libpthread-stubs | 0.3 | C----- | |
| | 3rd party libraries | libressl | 2.2.6 | C-I-P- | |
| | 3rd party libraries | libSM | 1.2.2 | C----- | |
| | 3rd party libraries | libX11 | 1.6.3 | C----- | |
| | 3rd party libraries | libXau | 1.0.8 | C----- | |
| | 3rd party libraries | libXaw | 1.0.13 | C----- | |
| | 3rd party libraries | libXext | 1.3.3 | C----- | |
| | 3rd party libraries | libxkbfile | 1.0.9 | C----- | |
| | 3rd party libraries | libXmu | 1.1.2 | C----- | |
| | 3rd party libraries | libXpm | 3.5.11 | C----- | |
| | 3rd party libraries | libXt | 1.1.5 | C----- | |
| | 3rd party libraries | libz | 1.2.8.2015.05.20 | C-I--- | |
| | 3rd party libraries | lua | 5.3.3 | C---P- | |
| | 3rd party libraries | ncurses | 6.0 | C-IEP- | ncurses, ncursestw, and ncursesw built | |
| | 3rd party libraries | npth | 1.2 | C-I--- | |
| | 3rd party libraries | pcre | 8.39 | C-I--- | |
| | 3rd party libraries | renderproto | 0.11.1 | C----- | |
| | 3rd party libraries | xcb | 1.12 | C----- | Needs pthreads / clone(2) | |
| | 3rd party libraries | xcb-proto | 1.12 | C----- | |
| | 3rd party libraries | xextproto | 7.3.0 | C----- | |
| | 3rd party libraries | xproto | 7.0.29 | C----- | |
| | 3rd party libraries | Xrender | 0.9.9 | C----- | |
| | 3rd party libraries | xtrans | 1.1 | C----- | |
| | 3rd party libraries | xz | 5.2.2 | C-IE-- | |
| | 3rd party packages | apk_tools | 2.6.6 | C---P- | |
| | 3rd party packages | bash | 4.3 | C-I-P- | Linked against ncursesw | |
| | 3rd party packages | cmake | 3.6.3 | C-I--- | |
| | 3rd party packages | coreutils | 8.23 | C---P- | Needs extensive testing | |
| | 3rd party packages | cparser | HEAD | C-I-P- | |
| | 3rd party packages | cron | HEAD | C---P- | |
| | 3rd party packages | dash | 0.5.8 | C----- | Provides /bin/sh | |
| | 3rd party packages | diffutils | 3.3 | C----- | |
| | 3rd party packages | dos2unix | 7.3.4 | C----- | |
| | 3rd party packages | ed | 1.13 | C----- | |
| | 3rd party packages | file | 5.28 | C----- | |
| | 3rd party packages | findutils | 4.5.14 | C---P- | |
| | 3rd party packages | gawk | 4.1.3 | C----- | |
| | 3rd party packages | git | 2.7.1 | C----- | Needs clone(2) | |
| | 3rd party packages | gnupg | 2.1.15 | C----- | Needs /dev/[u]random, extensive testing | |
| | 3rd party packages | grep | 2.22 | C----- | |
| | 3rd party packages | hexcurse | 1.60.0 | C-I-P- | Linked against ncursesw | |
| | 3rd party packages | htop | 2.0.1 | C-I-P- | Linked against ncursesw | |
| | 3rd party packages | inetutils | 1.9.4 | C----- | |
| | 3rd party packages | infounzip | 6.0 | C----- | |
| | 3rd party packages | infozip | 3.0 | C----- | |
| | 3rd party packages | irssi | 0.8.18 | CB--P- | DNS and /EXEC require clone(2) due to pthreads (see psxscl;) no Perl support | |
| | 3rd party packages | john | 1.8.0 | C---P- | |
| | 3rd party packages | less | 481 | C-I--- | Linked against ncursesw | |
| | 3rd party packages | lynx | 2.8.8rel2 | C----- | |
| | 3rd party packages | make | 3.81 | C----- | |
| | 3rd party packages | man_db | 2.7.5 | C----- | |
| | 3rd party packages | mc | 4.8.17 | C----- | |
| | 3rd party packages | mksh | R52c | C----- | |
| | 3rd party packages | nano | 2.5.3 | C-I--- | Linked against ncursesw | |
| | 3rd party packages | netcat | 110 | C---P- | |
| | 3rd party packages | openssh | 7.1p2 | C-I--- | Linked against libressl | |
| | 3rd party packages | p7zip | HEAD | C----- | |
| | 3rd party packages | pacman | 5.0.1 | C---P- | |
| | 3rd party packages | patch | 2.7 | C----- | |
| | 3rd party packages | perl | 5.22.1 | ------ | No dlopen(3) (see psxscl,) modules missing | |
| | 3rd party packages | procps-ng | 3.3.12 | C----- | |
| | 3rd party packages | python | 3.5.1 | -B--P- | No dlopen(3) (see psxscl,) modules missing | |
| | 3rd party packages | rsync | 3.1.2 | C----- | |
| | 3rd party packages | rxvt-unicode | 9.22 | C-I--- | No Perl support | |
| | 3rd party packages | sed | 4.2.2 | C----- | |
| | 3rd party packages | tar | 1.28 | C----- | |
| | 3rd party packages | tcsh | 6.19.00 | C-I-P- | |
| | 3rd party packages | the_silver_searcher | 0.32.0 | C----- | |
| | 3rd party packages | tmux | 2.2 | C---P- | |
| | 3rd party packages | util_linux | 2.27.1 | C----- | Needs extensive testing | |
| | 3rd party packages | vim | 7.4.1952 | C----- | Provides /bin/vi | |
| | 3rd party packages | weechat | 1.6 | C----- | |
| | 3rd party packages | which | 2.21 | C----- | |
| | 3rd party packages | whois | 5.2.12 | C----- | |
| | 3rd party packages | xeyes | 1.1.1 | C-I--- | |
| | 3rd party packages | xwd | 1.0.6 | C-I--- | |
| | 3rd party packages | zsh | 5.2 | C-I--- | Linked against ncursesw | |