Conan_Kudo / build / midipix_build

Forked from build/midipix_build 4 years ago
Clone

d3b354 - Adds README to the repository and $PREFIX after a successful build.

Authored and Committed by Lucio Andrés Illanes Albornoz (arab, vxp) 8 years ago
    - Adds README to the repository and $PREFIX after a successful build.
    - Replaces SHA-256 message digest w/ PGP signatures.
    
        
file modified
+1 -1
399.midipix_sh.build CHANGED
@@ -4,7 +4,7 @@
4
4
5
5
if ! is_build_script_done install; then
6
6
(cd ${MIDIPIX_BUILD_PWD};
7
- tar -cpf - midipix.sh \
7
+ tar -cpf - midipix.sh README \
8
8
'Create `Midipix mintty shell'\'' shortcut.vbs' |\
9
9
tar -C ${PREFIX} -xpf -);
10
10
chmod +x ${PREFIX}/midipix.sh;
file added
+138
README ADDED
@@ -0,0 +1,138 @@
1
+
2
+ Obtaining and installing a Midipix distribution
3
+ Last update: Sun, 24 Apr 2016 09:42:40 +0000
4
+
5
+ A Midipix distribution consists of the following:
6
+ a) the native Midipix toolchain, consisting of perk, gcc, its dependencies,
7
+ and binutils,
8
+ b) musl, a lightweight, fast, simple, and free libc[1] used by Midipix,
9
+ c) the Midipix runtime components that bridge the gap between the libc and the
10
+ executive subsystems of all Windows NT-derived Windows OS starting with and
11
+ including Windows XP, and
12
+ d) a steadily increasing number of 3rd party open source packages, as expected in
13
+ any modern POSIX-compliant *nix environment, including GNU coreutils, shells,
14
+ libraries such as ncurses, libressl, as well as Perl and Python.
15
+
16
+ Compressed Midipix distribution tarballs and, separately, source tarballs are,
17
+ at present, produced every four (4) hours UTC after each successful build and
18
+ subsequently signed. This process is fully automated by a portable Bourne shell
19
+ script; all of the above mentioned components are cross-compiled.
20
+
21
+ Thus, the most hassle-free way to get started with Midipix is to simply download
22
+ the most recent distribution tarball and follow the instructions below. It is,
23
+ however, recommended to anyone intending to use Midipix as a development platform
24
+ to familiarise themselves with the build process. Other reasons to prefer building
25
+ a Midipix distribution yourself include integrating new 3rd party software or local
26
+ runtime component patches. At present, a full build from scratch takes about 30
27
+ (thirty) minutes to finish on an 8-core host with eight simultaneous make jobs,
28
+ minus the generation of the tarballs. The build script can be obtained from the
29
+ following GitHub repository: <https://github.com/lalbornoz/midipix_build>.
30
+
31
+ If you obtained a Midipix distribution tarball, extract it into a directory and
32
+ drive of your choice, henceforth referred to as target directory; the drive can
33
+ be a network drive. Do _not_ use anything but a true UNIX environment tar(1), as
34
+ e.g. WinRAR or WinZip handle extracting hard links incorrectly.
35
+ If you built Midipix yourself, the target directory is equivalent to the ${PREFIX}
36
+ configured in build.vars, which defaults to ${HOME}/midipix.
37
+
38
+ At present, providing an interactive Midipix environment still requires the Cygwin
39
+ terminal emulator Mintty and a shell; this does not include pseudoterminals, which
40
+ are entirely handled by Midipix. Both can be installed via the 64-bit Cygwin setup
41
+ program at <https://www.cygwin.com/setup-x86_64.exe>.
42
+
43
+ Once installed, launching a Midipix shell is accomplished by the `midipix.sh' shell
44
+ script provided in the target directory from within a Cygwin shell prompt in Mintty
45
+ and the target directory. This may either simply be done manually each time, or
46
+ automated by a shortcut. As shortcuts cannot be distributed, it can be created by
47
+ either:
48
+ a) Opening (executing) the VBScript script in the target directory from within the
49
+ latter cscript.exe, providing the fully qualified pathname to Mintty, if it differs
50
+ from the default value of C:\cygwin64\bin\mintty.exe or
51
+ b) manually creating a shortcut to Mintty with `Start in:' set to the target directory
52
+ and the following command line:
53
+ [ ... ]\mintty.exe -i /Cygwin-Terminal.ico -e sh midipix.sh, or
54
+
55
+ References:
56
+ Sun, 24 Apr 2016 09:04:08 +0000 [1] musl FAQ <http://www.musl-libc.org/faq.html>
57
+
58
+ Midipix status report
59
+ Last update: Tue, 26 Apr 2016 10:16:16 +0000
60
+
61
+ The following build status codes are defined:
62
+ C -- Complete build w/ at least the default configuration,
63
+ B -- Broken, e.g. doesn't work at all or only minimally,
64
+ I -- Integrated (e.g. linked against) with other packages,
65
+ E -- Extensively tested and confirmed to work by multiple sources, possibly via a testsuite,
66
+ P -- Patches needed to build that haven't been committed upstream yet, and
67
+ U -- Update to latest stable version or HEAD pending.
68
+
69
+ Component type Name Version Status Comments
70
+ Host toolchain binutils 2.24.51 C--EPU
71
+ Host toolchain gcc 4.6.4 ---EPU Excludes libstdc++
72
+ Host toolchain musl 1.1.12 C-IEPU
73
+ Native toolchain binutils 2.24.51 C--EPU
74
+ Native toolchain gcc 4.6.4 ---EPU Excludes libstdc++
75
+ Native toolchain gmp 5.1.3 C-IEPU
76
+ Native toolchain libelf 0.8.13 C-IEP-
77
+ Native toolchain mpc 1.0.1 C-IEPU
78
+ Native toolchain mpfr 3.1.2 C-IEPU
79
+ Native toolchain musl 1.1.12 C-IEPU
80
+ Native toolchain perk HEAD C-IE--
81
+ Runtime components dalist HEAD C-IE--
82
+ Runtime components ntapi HEAD C-IE--
83
+ Runtime components ntcon HEAD C-IE--
84
+ Runtime components ntctty HEAD C-IE--
85
+ Runtime components pemagine HEAD C-IE--
86
+ Runtime components psxscl HEAD C-IE-- Excludes clone(2) and dlopen(3)
87
+ Runtime components psxtypes HEAD C-IE--
88
+ 3rd party packages apk_tools 2.6.6 C---P-
89
+ 3rd party packages bash 4.3 C-I-P- Linked against ncursesw
90
+ 3rd party packages bzip2 1.0.6 C-----
91
+ 3rd party packages coreutils 8.23 C---P- Needs extensive testing
92
+ 3rd party packages curl 7.47.1 C---P-
93
+ 3rd party packages dash 0.5.8 C---P-
94
+ 3rd party packages diffutils 3.3 C---P-
95
+ 3rd party packages findutils 4.5.14 C---P-
96
+ 3rd party packages gawk 4.1.3 C---P-
97
+ 3rd party packages git 2.7.1 C-----
98
+ 3rd party packages glib 2.46.2 C---P-
99
+ 3rd party packages grep 2.22 C---P-
100
+ 3rd party packages gzip 1.2.4 C-----
101
+ 3rd party packages hexcurse 1.60.0 C-I-P- Linked against ncursesw
102
+ 3rd party packages irssi 0.8.18 CB--P- DNS requires clone(2) due to pthreads (see psxscl)
103
+ 3rd party packages less 481 C-I--- Linked against ncursesw
104
+ 3rd party packages libarchive 3.1.2 C---P-
105
+ 3rd party packages libfetch 2.33 C---P-
106
+ 3rd party packages libffi 3.2.1 C---P-
107
+ 3rd party packages libressl 2.2.6 C-I-P-
108
+ 3rd party packages libz 1.2.8.2015.05.20 C-----
109
+ 3rd party packages make 3.81 C---P-
110
+ 3rd party packages mksh R52c C---P-
111
+ 3rd party packages nano 2.5.3 C-I-P- Linked against ncursesw
112
+ 3rd party packages ncurses 6.0 C-IEP- ncurses, ncursestw, and ncursesw built
113
+ 3rd party packages openssh 7.1p2 C-I-P- Linked against libressl
114
+ 3rd party packages pacman 5.0.1 C-----
115
+ 3rd party packages patch 2.7 C---P-
116
+ 3rd party packages perl 5.22.1 ----P- No dlopen(3) (see psxscl,) modules missing
117
+ 3rd party packages python 3.5.1 -B--P- No dlopen(3) (see psxscl,) modules missing
118
+ 3rd party packages rsync 3.1.2 C---P-
119
+ 3rd party packages sed 4.2.2 C---P-
120
+ 3rd party packages tar 1.28 C---P-
121
+ 3rd party packages tcsh 6.19.00 C-I-P-
122
+ 3rd party packages util_linux 2.27.1 C---P- Needs extensive testing
123
+ 3rd party packages which 2.21 C-----
124
+ 3rd party packages xz 5.2.2 C---P-
125
+ 3rd party packages zsh 5.2 C-I-P- Linked against ncursesw
126
+
127
+ Midipix roadmap/TODO list
128
+ Last update: Tue, 26 Apr 2016 10:41:37 +0000
129
+
130
+ 1) slibtool,
131
+ 2) psxscl: clone(2) system call implementation.
132
+ This is required by all 3rd party packages that make use of threads such as Irssi.
133
+ 3) psxscl: dlopen(3) system call implementation.
134
+ This is required by all 3rd party packages that have runtime modules such as Perl and Python.
135
+ 4) gdb: native port,
136
+ 5) [ ... ]
137
+
138
+ vim:expandtab sw=8 ts=8 tw=0 nowrap
file modified
+12 -4
build.sh CHANGED
@@ -122,8 +122,12 @@ if [ $(( ${BUILD_NFINI} + ${BUILD_NSKIP} )) -ge 0 ] \
122
122
-mindepth 1 -maxdepth 2 -type d -not -path ./native) \
123
123
"Create \`Midipix mintty shell' shortcut.vbs" midipix.sh;
124
124
log_msg info "Finished building distribution tarball.";
125
- sha256sum ${TARBALL_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.xz\
126
- > ${TARBALL_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.sha256sum;
125
+ if [ -x $(which gpg 2>/dev/null) -a -n "${TARBALL_SRC_SIGN_GPG_KEY}" ] &&\
126
+ gpg --list-keys "${TARBALL_SRC_SIGN_GPG_KEY}" >/dev/null 2>&1; then
127
+ gpg --armor --passphrase-file /dev/null \
128
+ --local-user "${TARBALL_SRC_SIGN_GPG_KEY}" --sign \
129
+ ${TARBALL_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.xz;
130
+ fi;
127
131
rm -rf ${PREFIX_BASENAME}/lib; mv ${PREFIX_BASENAME}/lib.bak ${PREFIX_BASENAME}/lib;
128
132
log_msg info "Restored ${PREFIX_BASENAME}/lib.";
129
133
log_msg info "Building source tarball...";
@@ -131,8 +135,12 @@ if [ $(( ${BUILD_NFINI} + ${BUILD_NSKIP} )) -ge 0 ] \
131
135
$(find tmp -mindepth 1 -maxdepth 1 -type d \
132
136
\( -name \*-native-\* -or -name \*-cross-\* \));
133
137
log_msg info "Finished building source tarball.";
134
- sha256sum ${TARBALL_SRC_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.xz\
135
- > ${TARBALL_SRC_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.sha256sum;
138
+ if [ -x $(which gpg 2>/dev/null) -a -n "${TARBALL_SIGN_GPG_KEY}" ] &&\
139
+ gpg --list-keys "${TARBALL_SIGN_GPG_KEY}" >/dev/null 2>&1; then
140
+ gpg --armor --passphrase-file /dev/null \
141
+ --local-user "${TARBALL_SIGN_GPG_KEY}" --sign \
142
+ ${TARBALL_SRC_FNAME_PREFIX}${BUILD_USER}@${BUILD_HNAME}-${BUILD_DATE_START}.tar.xz;
143
+ fi;
136
144
cd ${OLDPWD};
137
145
update_build_status tarball_finish;
138
146
fi;
file modified
+2 -0
build.vars CHANGED
@@ -27,8 +27,10 @@
27
27
: ${LOG_MSG_WARN_COLOUR:=96};
28
28
: ${MAKEFLAGS_DEFAULT:=-j8};
29
29
: ${TARBALL_FNAME_PREFIX:=midipix.};
30
+ : ${TARBALL_SIGN_GPG_KEY=};
30
31
: ${TARBALL_SRC_FNAME_PREFIX:=midipix-src.};
31
32
: ${TARBALL_EXCLUDE_PATHS:="src tmp"};
33
+ : ${TARBALL_SRC_SIGN_GPG_KEY=};
32
34
: ${TARGET:=x86_64-nt64-midipix};
33
35
: ${PREFIX_NATIVE:=${PREFIX}/native};
34
36
: ${PREFIX_TARGET:=${PREFIX}/${TARGET}};