forked from OCamlPro/gnucobol
-
Notifications
You must be signed in to change notification settings - Fork 0
149 lines (127 loc) · 5.01 KB
/
macos.yml
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
name: MacOS Workflow
on:
pull_request:
branches: [ gc4 ]
push:
# manual run in actions tab - for all branches
workflow_dispatch:
env:
HOMEBREW_ROOT: /opt/homebrew/opt
jobs:
build:
#runs-on: macos-latest-large # macos 14, amd64
runs-on: macos-latest # macos 14, arm64
timeout-minutes: 10
strategy:
fail-fast: false
matrix:
isam:
- db
- visam
steps:
- name: Set git user
run: |
git config --global user.name github-actions
git config --global user.email [email protected]
# Why was this necessary ? Works fine without it...
# - name: Configure git
# run: git config --global core.symlinks false
- name: Checkout code
uses: actions/checkout@v4
- name: Setup build environment
run: |
echo "TERM=vt100" >> $GITHUB_ENV
echo "NPROC=`sysctl -n hw.ncpu`" >> $GITHUB_ENV
- name: Install packages
run: |
brew update
brew install autoconf automake libtool bison \
help2man texinfo \
berkeley-db@4 json-c
echo "$HOMEBREW_ROOT/bison/bin" >> $GITHUB_PATH
echo "LDFLAGS=-L$HOMEBREW_ROOT/berkeley-db@4/lib ${LDFLAGS}" >> $GITHUB_ENV
echo "CPPFLAGS=-I$HOMEBREW_ROOT/berkeley-db@4/include ${CPPFLAGS}" >> $GITHUB_ENV
- name: Install VISAM
if: ${{ matrix.isam == 'visam' }}
run: |
curl -LO http://inglenet.ca/Products/GnuCOBOL/visam-2.2.tar.Z
tar -xvzf visam-2.2.tar.Z
cd visam-2.2
./configure --prefix=/opt/visam --enable-vbisamdefault
chmod u+x build_aux/install-sh
make && sudo make install
echo "CPATH=/opt/visam/include" >> $GITHUB_ENV
echo "LIBRARY_PATH=/opt/visam/lib" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/opt/visam/lib" >> $GITHUB_ENV
- name: Bootstrap GnuCOBOL
run: ./build_aux/bootstrap install
- name: Configure GnuCOBOL
run: |
mkdir _build && cd _build
../configure --with-${{ matrix.isam }} \
--with-indexed=${{ matrix.isam }} \
--enable-cobc-internal-checks \
--enable-hardening \
--prefix=/opt/cobol/gnucobol \
CPPFLAGS="-DREAD_WRITE_NEEDS_FLUSH $CPPFLAGS" \
CFLAGS="-Wno-unused-command-line-argument -Wno-parentheses-equality $CFLAGS"
- name: Build GnuCOBOL
run: make -C _build --jobs=$((${NPROC}+1))
- name: Upload config-${{ matrix.isam }}.log
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: config-${{ matrix.isam }}.log
path: _build/config.log
# make install must be done before make check, otherwise execution of
# generated COBOL files fail for a missing /usr/local/lib/libcob.dylib
- name: Install GnuCOBOL
run: |
sudo make -C _build install
find /opt/cobol > _build/install.log
- name: Upload install-${{ matrix.isam }}.log
uses: actions/upload-artifact@v4
with:
name: install-${{ matrix.isam }}.log
path: _build/install.log
- name: Adjust testsuite
run: |
cd tests/testsuite.src
sed -i '' '/AT_SETUP(\[INDEXED file SUPPRESS WHEN ALL \+ KEYCHECK\])/a \
AT_SKIP_IF(\[true\])' run_file.at
sed -i '' '/AT_SETUP(\[EXTFH: using ISAM callback\])/a \
AT_SKIP_IF(\[true\])' run_file.at
sed -i '' '/AT_SETUP(\[trace feature\])/a \
AT_SKIP_IF(\[true\])' run_file.at
sed -i '' '/AT_SETUP(\[trace feature with subroutine\])/a \
AT_SKIP_IF(\[true\])' run_file.at
sed -i '' '/AT_SETUP(\[trace feature with indexed EXTFH\])/a \
AT_SKIP_IF(\[true\])' run_file.at
- name: Run testsuite
run: |
make -C _build check TESTSUITEFLAGS="--jobs=$((${NPROC}+1))" || \
make -C _build check TESTSUITEFLAGS="--recheck --verbose"
- name: Upload testsuite-${{ matrix.isam }}.log
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: testsuite-${{ matrix.isam }}.log
path: _build/tests/testsuite.log
- name: Cache newcob.val
uses: actions/cache@v4
with:
path: _build/tests/cobol85/newcob.val
key: newcob-val
enableCrossOsArchive: true
- name: Run NIST85 testsuite
run: make -C _build test --jobs=$((${NPROC}+1))
- name: Upload NIST85 Test Suite results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: NIST85 results on ${{ matrix.isam }}
path: |
_build/tests/cobol85/summary.*
_build/tests/cobol85/**/*.log
_build/tests/cobol85/**/*.out
_build/tests/cobol85/**/duration.txt