|
1 #!/bin/bash |
|
2 |
|
3 # Simple Unix shell script to build STX:LIBJAVA using Jenkins CI |
|
4 # Actually, it is used on Windows (with UnxUtils) as well. |
|
5 |
|
6 PROJECT="STX_LIBJAVA" |
|
7 |
|
8 # Determine operating system, bit simple but works |
|
9 if [ "$OS" == "Windows_NT" ]; then |
|
10 WIN32=1 |
|
11 UNIX=0 |
|
12 else |
|
13 WIN32=0 |
|
14 UNIX=1 |
|
15 fi |
|
16 |
|
17 if [ "$1" == "-tests" ]; then |
|
18 SKIP_CHECKOUT=yes |
|
19 SKIP_COMPILE=yes |
|
20 SKIP_ARTIFACTS=yes |
|
21 |
|
22 RUN_REPORTS=yes |
|
23 fi |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 # Setup... |
|
29 if [ "$WIN32" == "1" ]; then |
|
30 # WINDOWS |
|
31 # MUST export this, otherwise libjpeg fails to build!!!" |
|
32 export BCB="C:\Borland\BCC55" |
|
33 # To make cvs/ssh happy |
|
34 export CVS_RSH=plink |
|
35 # Set home |
|
36 export HOME=$USERPROFILE |
|
37 # Defaults |
|
38 export CVSROOT=":pserver:jenkinsBuild:blablu@cvs.bh.exept.de:/cvs/stx" |
|
39 # Make using bmake here..." |
|
40 MAKE="cmd /C bmake.bat" |
|
41 else |
|
42 # LINUX |
|
43 # to get Mercurial |
|
44 export PATH=$PATH:/home/vrany/bin |
|
45 # Make using regular make here..." |
|
46 MAKE=make |
|
47 # Defaults |
|
48 export CVSROOT="/cvs/stx" |
|
49 fi |
|
50 |
|
51 |
|
52 |
|
53 # Sorry, it's lot easier for JV to have all the messages in EN :-) |
|
54 export LANG=en_GB.UTF-8 |
|
55 |
|
56 |
|
57 # When run interactively, Jenkins env variables |
|
58 # may not be set... |
|
59 if [ -z "$WORKSPACE" ]; then |
|
60 WORKSPACE="$PWD" |
|
61 INTERACTIVE=1 |
|
62 else |
|
63 INTERACTIVE=0 |
|
64 fi |
|
65 |
|
66 if [ "$INTERACTIVE" == "0" ]; then |
|
67 if [ "$WIN32" == "1" ]; then |
|
68 WORKSPACE="$PWD" |
|
69 fi |
|
70 fi |
|
71 |
|
72 if [ -z "$BUILD_NUMBER" ]; then |
|
73 BUILD_NUMBER=$(date +%Y_%m_%d_interactive) |
|
74 fi |
|
75 |
|
76 #BUILD="$WORKSPACE/${PROJECT}_${BUILD_NUMBER}_linux_build" |
|
77 BUILD="build" |
|
78 |
|
79 |
|
80 echo "INFO: BUILD=\"$BUILD\"" |
|
81 |
|
82 if [ -d "$BUILD" ]; then |
|
83 echo "WARN: Build directory already exists!" |
|
84 else |
|
85 mkdir -p "$BUILD" |
|
86 fi |
|
87 |
|
88 pushd "$BUILD" |
|
89 |
|
90 if [ -z "$SKIP_CHECKOUT" ]; then |
|
91 |
|
92 echo "INFO: Checking out source code" |
|
93 |
|
94 # Checkout stx |
|
95 if [ ! -d stx ]; then |
|
96 if ! cvs co stx; then |
|
97 echo "ERROR: CVS: Cannot checkout stx"; |
|
98 exit; |
|
99 fi |
|
100 else |
|
101 (cd stx && cvs update) |
|
102 fi |
|
103 |
|
104 # Checkout stx:libjava |
|
105 if [ -d stx/libjava/CVS ]; then |
|
106 rm -rf stx/libjava |
|
107 fi |
|
108 |
|
109 if [ ! -d stx/libjava ]; then |
|
110 if ! hg clone https://swing.fit.cvut.cz/hg/stx.libjava/ stx/libjava -b development; then |
|
111 echo "ERROR: HG: Cannot clone stx/libjava"; |
|
112 exit; |
|
113 fi |
|
114 else |
|
115 if ! hg --cwd stx/libjava pull; then |
|
116 echo "ERROR: HG: Cannot pull stx/libjava"; |
|
117 exit; |
|
118 fi |
|
119 if ! hg --cwd stx/libjava update; then |
|
120 echo "ERROR: HG: Cannot update stx/libjava"; |
|
121 exit; |
|
122 fi |
|
123 fi |
|
124 |
|
125 else |
|
126 echo "INFO: Checkout skipped (SKIP_CHECKOUT=$SKIP_CHECKOUT)" |
|
127 fi |
|
128 |
|
129 # Compile |
|
130 |
|
131 if [ -z "$SKIP_COMPILE" ]; then |
|
132 |
|
133 echo "INFO: Compiling" |
|
134 TARGETS1="stx stx/libjava stx/goodies/petitparser stx/libjava/tools stx/libjava/experiments stx/projects/smalltalk stx/librun" |
|
135 for target in $TARGETS1; do |
|
136 if ! (cd "$target" && $MAKE); then |
|
137 echo "ERROR: cannot $MAKE in $target" |
|
138 exit 3 |
|
139 fi |
|
140 done |
|
141 |
|
142 else |
|
143 echo "INFO: Compilation skipped (SKIP_COMPILE=$SKIP_COMPILE)" |
|
144 fi |
|
145 |
|
146 popd |
|
147 |
|
148 echo "INFO: $PROJECT SUCCESSFULLY BUILT" |