blob: 32f971322cf48543fd6f649991c893c538b417fb (
plain)
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
|
#!/bin/sh
# Stop in case of error
set -e
enable_color() {
ENABLECOLOR='-c '
ANSI_RED="\033[31m"
ANSI_GREEN="\033[32m"
ANSI_YELLOW="\033[33m"
ANSI_BLUE="\033[34m"
ANSI_MAGENTA="\033[35m"
ANSI_GRAY="\033[90m"
ANSI_CYAN="\033[36;1m"
ANSI_DARKCYAN="\033[36m"
ANSI_NOCOLOR="\033[0m"
}
disable_color() { unset ENABLECOLOR ANSI_RED ANSI_GREEN ANSI_YELLOW ANSI_BLUE ANSI_MAGENTA ANSI_CYAN ANSI_DARKCYAN ANSI_NOCOLOR; }
enable_color
print_start() {
if [ "x$2" != "x" ]; then
COL="$2"
elif [ "x$BASE_COL" != "x" ]; then
COL="$BASE_COL"
else
COL="$ANSI_YELLOW"
fi
printf "${COL}${1}$ANSI_NOCOLOR\n"
}
gstart () {
print_start "$@"
}
gend () {
:
}
[ -n "$CI" ] && {
echo "INFO: set 'gstart' and 'gend' for CI"
gstart () {
printf '::group::'
print_start "$@"
SECONDS=0
}
gend () {
duration=$SECONDS
echo '::endgroup::'
printf "${ANSI_GRAY}took $(($duration / 60)) min $(($duration % 60)) sec.${ANSI_NOCOLOR}\n"
}
} || echo "INFO: not in CI"
#---
do_build () {
gstart 'Install common build dependencies'
pacman -S --noconfirm base-devel
gend
if [ -z "$TARGET" ]; then
printf "${ANSI_RED}Undefined TARGET!$ANSI_NOCOLOR"
exit 1
fi
cd "$TARGET"
gstart "Fetch --unshallow"
# The command 'git describe' (used for version) needs the history. Get it.
# But the following command fails if the repository is complete.
git fetch --unshallow || true
gend
MINGW_INSTALLS="$(echo "$MINGW_INSTALLS" | tr '[:upper:]' '[:lower:]')"
case "$MINGW_INSTALLS" in
mingw32)
TARBALL_ARCH="i686"
;;
mingw64)
TARBALL_ARCH="x86_64"
# FIXME: specific versions of these packages should be installed automatically by makepkg-mingw.
# E.g.: mingw-w64-x86_64-llvm-8.0.1-3 mingw-w64-x86_64-clang-8.0.1-3 mingw-w64-x86_64-z3-4.8.5-1
# However, specifying the version produces 'error: target not found:'
gstart "Install build dependencies"
pacman -S --noconfirm mingw-w64-x86_64-llvm mingw-w64-x86_64-clang mingw-w64-x86_64-z3
gend
;;
*)
printf "${ANSI_RED}Unknown MING_INSTALLS=${MINGW_INSTALLS}!$ANSI_NOCOLOR"
exit 1
esac
gstart 'Install toolchain'
pacman -S --noconfirm mingw-w64-${TARBALL_ARCH}-toolchain
gend
gstart 'Build package'
makepkg-mingw --noconfirm --noprogressbar -sCLf --noarchive
gend
gstart 'Archive package'
makepkg-mingw --noconfirm --noprogressbar -R
gend
gstart 'List artifacts'
ls -la
gend
gstart 'Install package'
pacman --noconfirm -U "mingw-w64-${TARBALL_ARCH}-ghdl-${TARGET}-ci"-*-any.pkg.tar.zst
gend
}
#---
do_test () {
gstart 'Environment'
env | grep MSYSTEM
env | grep MINGW
gend
GHDL=ghdl ../../testsuite/testsuite.sh
}
#---
cd $(dirname $0)
case "$1" in
-t)
do_test
;;
*)
do_build
;;
esac
|