Skip to content

Commit 5ca9bee

Browse files
1138-4EBtgingold
authored andcommitted
use travis stages, use docker multistage builds
1 parent e89bb57 commit 5ca9bee

27 files changed

Lines changed: 601 additions & 275 deletions

.gitignore

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ b~*.ad?
1212
testsuite/get_entities
1313

1414
# Generated files on windows.
15-
build/
16-
dist/mcode/build/
17-
dist/mcode/lib/
15+
./build/
16+
./dist/mcode/build/
17+
./dist/mcode/lib/
1818

1919
# Generated directories on Linux
2020
lib/

.travis.yml

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
branches:
22
except:
3-
- appveyor
3+
- appveyor
44

55
os: linux
66
dist: trusty
@@ -10,35 +10,72 @@ language: minimal
1010
install: skip
1111
script: "./dist/linux/travis-ci.sh"
1212

13+
addons:
14+
apt:
15+
packages:
16+
- docker-ce
17+
1318
deploy:
14-
- provider: releases
19+
- &deploy-docker
20+
provider: script
21+
skip_cleanup: true
22+
script: ./dist/linux/deploy2dockerhub.sh "$IMAGE" "$TRAVIS_COMMIT_MESSAGE"
23+
on:
24+
repo: 1138-4EB/ghdl
25+
branch: master
26+
- &deploy-releases
27+
provider: releases
1528
skip_cleanup: true
1629
api_key:
1730
secure: ji6LXOmD5V2N+ELHZr4oJsmxPhedk+8W6jfCqQdEbewQ42N+fKOq3lgqJni7ZdfpZaulB9OHPTApv3bwOjXjtN9rfBGmq//U9CwvzHmUeomdQv6WQOVevaWSXl3DNL9fk3yKynyFrsv4pvr45L8GIjaHLggKcYhNFPJ2rrnJlDoFT9MqQNpmP7Bg/LnwVQiv+ZDPkLlMWQzrXzLamdQILARPQka+kCdXl/sHH6OKvLgRvu9yvyXYSSfbyAHP+THISS5gDciizSBeWGlU75kgj/N+mkV+8NvtTTfEIgG8y49WJz6aBooTmRzk/jZW1dKMbDR6c5bpTmRvMZSzeSBuAR6WLhr6HevgCPi/1fX1y3pkVSrgBUF5KcxPgWCZp0I05QjaJOdvQDl1hH4TlVwpT18lM2+cWrui9fS7spnk/AuNKX882C5QWWRy28lIPasCVnwfeKX8a9KAwY9OqVOenoLC1yx7NJOGfH1bjuSYYxyR4XgLiGTHKALAuknCyD9QL0o378IwqxHMcsN0Gsd+GndMu0/b8GvSqfzDpV1XknqabQFwkZLs+Yydw0snfBUzXw9TfOk78IiPYEgXAxsQKBAkK7qvO36HIxLlSQXglXU1D4IDtQYDUel6vKll4pgu0WMxStQCbj51yDVJKvRhzwiBNC6Pwgzt2JTrpwM/T/U=
1831
file: "ghdl-*.tgz"
1932
file_glob: true
2033
on:
2134
repo: tgingold/ghdl
22-
tags: true
2335
all_branches: true
36+
tags: true
2437

25-
# For each linux build, a different job/instance (with the constraints above) is executed in parallel.
38+
# For each linux build, a different job/instance (with the constraints above) is executed in parallel in stage 'test'.
2639
env:
2740
matrix:
2841
- IMAGE=stretch+mcode
2942
- IMAGE=stretch+mcode+gpl
43+
# - IMAGE=buster+mcode
44+
# - IMAGE=buster+mcode+gpl
3045
- IMAGE=ubuntu14+mcode
3146
- IMAGE=ubuntu14+llvm-3.8
47+
# - IMAGE=ubuntu16+mcode
48+
# - IMAGE=ubuntu16+llvm-3.9
49+
# - IMAGE=ubuntu18+mcode
50+
# - IMAGE=ubuntu18+llvm-5.0
3251
- IMAGE=fedora26+mcode
52+
# - IMAGE=fedora26+llvm
53+
global:
54+
- secure: "MZHtYkWdYK+SeYzJvWD8I0tbkdHGjmWyNDn70a2RrNYFu363Zt51ZvksEtkjrS7kdje6l6VPfLjilX5UtywIM1Mg6nt/rsw4p62+bGhMyhfXiqS3eqEfH2sThjosy773X8iotm2sW0ax0oHX07ZLcuTbZ+TK2cMGarZ+LzNT8IiMaeaWu4W7aE5LRxSmVRwcACUOa3NiC7GY/qC7vU2C8QNdXSlU3fSp17K5eccrkkBuiEhRTsdr3ZIhjOjrYzqHKWC3a0uHn/fJsbepsVM6FGt+zAwo0VqdXXCE2ts8EOATvFgEaCGxUgfGd/yvNsAG7sjF3nweR9Z11dpMbBE+TjxlLCXQ31v1Oj7pH6vcgjCYV69cZiLbsDhxTJFQ08qbm3xK8dmTUXFy1scrMSd8D/Q3Uf0LjHkH5Q5dL8TOyqejs57fUTIBtBUpCTvvGOErdZQAOWJc93sC9RQB7BuCDR2yR7rPTJr4KUwspe1uScA/H9cQS2p42SeJ4+Yyjtwod3IQWjr6+/pdNPoImleOP0dXSDCXpAIsbv6TR9curS3geLJuTmu5UnLzbURDr7Whtop3lCPbiN0H9jThSuyIxWUI+6JDGDG89RXbCyZvGz97sIShYstWg0U0xLWmw9IDez2HtK5VKuTT/hE7gDicZ0erN6r1dlix3SpuCtH1MlA=" #U
55+
- secure: "kIA09oCHzoHMK4LsfwcaVaMuoAFpd1M+M8tW3b9Rvki/hEB3y46edlb88lWVM7RgkNoCaIPwAZD7Wf3Xiq9Y7wWmqRsWQNRaorC0xke5SuyMwCSQSNo9S5jAu9SM5uxENCH9yucJl/vm2juYitJCHyYYMb4x17fy3sHKULNJ+JBqnrgOuTBYM1JOIkJVO1P5LqEXmqTtr6KgQgiTMtlvnM7hxjapgoyM3J1376f+Kfky0hUoDD7LFLXu8yQCn5Fnar8wR3czK6Qknafmckt5yWJxGOZobMDfKwOdA0fpU+XiArNQ/1NM80fGXq4YOGK5ycVQkO2ACxDqHYfQRYLlIfrUGp75BoXWwN6O1GoOrFcF7ZIoSaLoK3hZdvzRFT7dpUQFlosn00Y7VzqbosQM5QS5TBBqO+DExnkb399OpXI7o0lrlr232kjAeYqEb6N1n3M9BpiNW9Je4plJa/RDKwYsnC8Qak4G08PVTe6V711W1UtqMPd6efWFYTNvRW9tjO3v1lFGaGJ99ABP0AYLIDYWV3zfgvp0UzQOKFdWJj7dMQxdLMQ/bIETKn8P7NFjOWic4pgtp3zekZCL27blhc0fyHm62HUiVLT+VGFOI/nyclzBIZStSVuxPj2LvmAIiMnUNmWwds1ZqIZ21eiNykkn+k52ddTRHXIh2fhvWfg=" #P
56+
57+
stages:
58+
- create ghdl/build and ghdl/run images
59+
- test
3360

34-
# A single additional job is described for the macos build. The constraints above are used, except explicitly overriden.
3561
jobs:
3662
include:
37-
- os: osx
38-
osx_image: xcode7.3
39-
language: c
40-
install: true
41-
env: IMAGE=macosx+mcode
42-
cache:
43-
directories:
44-
- gnat
63+
# A single job is described in its own stage, to create and push ghdl/build and ghdl/run images.
64+
- stage: create ghdl/build and ghdl/run images
65+
env: IMAGE=""
66+
script: if echo "$TRAVIS_COMMIT_MESSAGE" | grep -F -q "[ci images]"; then ./dist/linux/create.sh; fi;
67+
deploy:
68+
- <<: *deploy-docker
69+
# A single additional job is described in stage 'test' for the macos build.
70+
# The constraints above are used, except explicitly overriden.
71+
- stage: test
72+
os: osx
73+
language: c
74+
osx_image: xcode7.3
75+
install: true
76+
cache:
77+
directories:
78+
- gnat
79+
env: IMAGE=macosx+mcode
80+
deploy:
81+
- <<: *deploy-releases

dist/linux/build.sh

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
#! /bin/bash
2+
3+
. dist/linux/travis-utils.sh
4+
. dist/ansi_color.sh
5+
disable_color
6+
7+
echo "$0" "$@"
8+
9+
# Stop in case of error
10+
set -e
11+
12+
# Transform long options to short ones
13+
for arg in "$@"; do
14+
shift
15+
case "$arg" in
16+
"--color"|"-color") set -- "$@" "-c";;
17+
"--build"|"-build") set -- "$@" "-b";;
18+
"--pkg"|"-pkg") set -- "$@" "-p";;
19+
"--gpl"|"-gpl") set -- "$@" "-g";;
20+
*) set -- "$@" "$arg"
21+
esac
22+
done
23+
# Parse args
24+
while getopts ":b:p:cg" opt; do
25+
case $opt in
26+
c) enable_color;;
27+
b) BLD=$OPTARG ;;
28+
p) PKG_NAME=$OPTARG;;
29+
g) ISGPL=true;;
30+
\?) printf "$ANSI_RED[GHDL - build] Invalid option: -$OPTARG $ANSI_NOCOLOR\n" >&2
31+
exit 1 ;;
32+
:) printf "$ANSI_RED[GHDL - build] Option -$OPTARG requires an argument. $ANSI_NOCOLOR\n" >&2
33+
exit 1 ;;
34+
esac
35+
done
36+
37+
rm -f build_ok
38+
39+
#--- Env
40+
41+
echo "travis_fold:start:env.docker"
42+
printf "$ANSI_YELLOW[Info] Environment $ANSI_NOCOLOR\n"
43+
env
44+
echo "travis_fold:end:env.docker"
45+
46+
#--- GPL: gpl-ize sources
47+
48+
if [ "$ISGPL" = "true" ]; then
49+
echo "travis_fold:start:gpl.src"
50+
printf "$ANSI_YELLOW[Source] create GPL sources $ANSI_NOCOLOR\n"
51+
files=`echo *`
52+
make -f Makefile.in srcdir=. clean-pure-gpl
53+
mkdir ${PKG_NAME}
54+
cp -pdrl $files ${PKG_NAME}
55+
tar -zcf "${PKG_NAME}.tar.gz" ${PKG_NAME}
56+
PKG_NAME="${PKG_NAME}-${BLD}"
57+
echo "travis_fold:end:gpl.src"
58+
fi
59+
60+
#--- Configure
61+
62+
echo "travis_fold:start:configure"
63+
printf "$ANSI_YELLOW[GHDL - build] Configure $ANSI_NOCOLOR\n"
64+
65+
CDIR=$(pwd)
66+
export prefix="$CDIR/install-$BLD"
67+
mkdir "$prefix"
68+
mkdir "build-$BLD"
69+
cd "build-$BLD"
70+
71+
case "$BLD" in
72+
mcode)
73+
config_opts=""
74+
CXX=""
75+
;;
76+
llvm)
77+
CXX="clang"
78+
config_opts="--with-llvm-config CXX=$CXX"
79+
;;
80+
llvm-3.5)
81+
CXX="clang++"
82+
config_opts="--with-llvm-config=llvm-config-3.5 CXX=$CXX"
83+
;;
84+
llvm-3.8)
85+
CXX="clang++-3.8"
86+
config_opts="--with-llvm-config=llvm-config-3.8 CXX=$CXX"
87+
;;
88+
llvm-3.9)
89+
CXX="clang++-3.9"
90+
config_opts="--with-llvm-config=llvm-config-3.9 CXX=$CXX"
91+
;;
92+
llvm-4.0)
93+
CXX="clang++-4.0"
94+
config_opts="--with-llvm-config=llvm-config-4.0 CXX=$CXX"
95+
;;
96+
llvm-5.0)
97+
CXX="clang++-5.0"
98+
config_opts="--with-llvm-config=llvm-config-5.0 CXX=$CXX"
99+
;;
100+
*)
101+
echo "$ANSI_RED[GHDL - build] Unknown build $BLD $ANSI_NOCOLOR"
102+
exit 1;;
103+
esac
104+
DEP_CLANG=""
105+
if [ "$CXX" != "" ]; then
106+
DEP_CLANG="`$CXX --version | grep 'clang'`"
107+
fi
108+
echo "../configure --prefix=$prefix $config_opts"
109+
../configure "--prefix=$prefix" $config_opts
110+
echo "travis_fold:end:configure"
111+
112+
#--- make
113+
114+
echo "travis_fold:start:make"
115+
travis_time_start
116+
printf "$ANSI_YELLOW[GHDL - build] Make $ANSI_NOCOLOR\n"
117+
make
118+
travis_time_finish
119+
echo "travis_fold:end:make"
120+
121+
echo "travis_fold:start:install"
122+
printf "$ANSI_YELLOW[GHDL - build] Install $ANSI_NOCOLOR\n"
123+
make install
124+
cd ..
125+
echo "travis_fold:end:install"
126+
127+
#--- package
128+
129+
echo "travis_fold:start:tar.bin"
130+
printf "$ANSI_YELLOW[GHDL - build] Create package ${ANSI_DARKCYAN}${PKG_NAME}.tgz $ANSI_NOCOLOR\n"
131+
tar -zcvf "${PKG_NAME}.tgz" -C "$prefix" .
132+
echo "travis_fold:end:tar.bin"
133+
134+
#--- build tools versions
135+
136+
printf "%s\n" \
137+
"`make --version | grep 'Make'`" \
138+
"`gnat --version | grep 'GNAT'`" \
139+
"`gcc --version | grep 'gcc'`" "$DEP_CLANG" > BUILD_TOOLS
140+
141+
#---
142+
143+
echo "[SUCCESSFUL]"
144+
touch build_ok

0 commit comments

Comments
 (0)