1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
|
# 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 |
|