1version: 2 2jobs: 3 # 4 # This is for the latest RELEASED Fedora. 5 # Update the version of Fedora when new version is released. 6 # We don't use row hide, the development version of Fedora 7 # till the list of TODO items of u-ctags becomes nil. 8 # 9 # We assume GNU Make is available. 10 # 11 fedora34_gmake: 12 working_directory: ~/universal-ctags 13 docker: 14 - image: docker.io/fedora:34 15 steps: 16 - run: 17 name: Install Git, Gdb and Procps-NG 18 command: | 19 yum -y install git gdb procps-ng 20 - checkout 21 - run: 22 name: Install build tools 23 command: | 24 dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo 25 dnf -y install jq puppet python3-sphinx 26 - run: 27 name: Build 28 command: | 29 bash ./autogen.sh 30 ./configure --enable-debugging 31 make -j 2 32 - run: 33 name: Test 34 command: | 35 make check 36 - run: 37 name: Make HTML documents 38 command: | 39 cd docs 40 make html 41 42 fedora34_gmake_roundtrip: 43 working_directory: ~/universal-ctags 44 docker: 45 - image: docker.io/fedora:34 46 steps: 47 - run: 48 name: Install Git and Gdb 49 command: | 50 yum -y install git gdb 51 - checkout 52 - run: 53 name: Install build tools 54 command: | 55 dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo 56 dnf -y install jq puppet 57 - run: 58 name: Build 59 command: | 60 bash ./autogen.sh 61 ./configure --enable-debugging 62 make -j 2 63 - run: 64 name: Test 65 command: | 66 make roundtrip 67 68 # 69 # We assume GNU make as the `make` command as we use GNU make extension 70 # aggressively in man/Makefile and win32/Makefile. 71 # 72 # man/Makefile is used to generate man files only when rst2man is installed. 73 # win32/Makefile is used only when either source.mk or win32/*.in is updated. 74 # In other cases we can still build ctags without GNU make. 75 # 76 # The following tests use bmake (NetBSD make) to check if GNU make extensions 77 # are not used unintentionally. 78 # 79 # On Fedora 31 bmake package cannot be installed because a package required by 80 # bmake is not available. More inspection is needed. Fedora 30 is the last 81 # version where bmake can be installed. 82 # 83 fedora30_bmake: 84 working_directory: ~/universal-ctags 85 docker: 86 - image: docker.io/fedora:30 87 steps: 88 - run: 89 name: Install Git and Gdb 90 command: | 91 dnf -y install git gdb 92 - checkout 93 - run: 94 name: Install packages for building ctags and validating test input files 95 command: | 96 dnf -y install gcc automake autoconf pkgconfig bmake libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils sudo 97 dnf -y install g++ jq puppet 98 - run: 99 name: Build 100 command: | 101 bash ./autogen.sh 102 MAKE=bmake ./configure --enable-debugging 103 bmake -j 2 104 - run: 105 name: Test 106 command: | 107 MAKE=bmake bmake validate-input check codecheck 108 109 fedora30_bmake_roundtrip: 110 working_directory: ~/universal-ctags 111 docker: 112 - image: docker.io/fedora:30 113 steps: 114 - run: 115 name: Install Git and Gdb 116 command: | 117 dnf -y install git gdb 118 - checkout 119 - run: 120 name: Install build tools 121 command: | 122 dnf -y install gcc automake autoconf pkgconfig bmake libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils sudo 123 dnf -y install jq puppet 124 - run: 125 name: Build 126 command: | 127 bash ./autogen.sh 128 MAKE=bmake ./configure --enable-debugging 129 bmake -j 2 130 - run: 131 name: Test 132 command: | 133 MAKE=bmake bmake roundtrip 134 135 fedora34_distcheck: 136 working_directory: ~/universal-ctags 137 docker: 138 - image: docker.io/fedora:34 139 steps: 140 - run: 141 name: Install Git, Gdb and Procps-NG 142 command: | 143 dnf -y install git gdb procps-ng 144 - checkout 145 - run: 146 name: Install build tools 147 command: | 148 dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel findutils diffutils sudo pcre2-devel 149 dnf -y install jq puppet python3-docutils 150 - run: 151 name: Run autogen.sh 152 command: | 153 bash ./autogen.sh 154 - run: 155 name: Run configure 156 command: | 157 ./configure 158 - run: 159 name: verify generated files (optlib, txt2cstr, etc.) are updated 160 command: | 161 make check-genfile 162 - run: 163 name: Test 164 command: | 165 ulimit -c 0 166 # Let's trick git. 167 # 168 # "git" running in "make distcheck" may refer $(pwd)/.git of THIS context. 169 # On the other hand, we want to run the test cases in an environment separated 170 # from our git repo. 171 # 172 mkdir __NO_GIT__ 173 make distcheck GIT_DIR=__NO_GIT__ 174 rmdir __NO_GIT__ 175 176 ubi8_make: 177 working_directory: ~/universal-ctags 178 docker: 179 - image: registry.access.redhat.com/ubi8:latest 180 steps: 181 - run: 182 name: Install Git 183 command: | 184 yum -y install git 185 - checkout 186 - run: 187 name: Install build tools 188 command: | 189 yum -y --enablerepo=ubi-8-appstream --enablerepo=ubi-8-baseos --enablerepo=ubi-8-codeready-builder install python3 gcc automake autoconf pkgconfig make libxml2-devel libyaml-devel pcre2-devel findutils diffutils sudo 190 - run: 191 name: Build 192 command: | 193 bash ./autogen.sh 194 ./configure --enable-debugging 195 make -j 2 196 - run: 197 name: Test 198 command: | 199 make check 200 201 ubi8_make_roundtrip: 202 working_directory: ~/universal-ctags 203 docker: 204 - image: registry.access.redhat.com/ubi8:latest 205 steps: 206 - run: 207 name: Install Git 208 command: | 209 yum -y install git 210 - checkout 211 - run: 212 name: Install build tools 213 command: | 214 yum -y --enablerepo=ubi-8-appstream --enablerepo=ubi-8-baseos --enablerepo=ubi-8-codeready-builder install python3 gcc automake autoconf pkgconfig make libxml2-devel libyaml-devel pcre2-devel findutils diffutils sudo 215 - run: 216 name: Build 217 command: | 218 bash ./autogen.sh 219 ./configure --enable-debugging 220 make -j 2 221 - run: 222 name: Test 223 command: | 224 make roundtrip 225 centos7_make: 226 working_directory: ~/universal-ctags 227 docker: 228 - image: docker.io/centos:7 229 steps: 230 - run: 231 name: Install Git 232 command: | 233 yum -y install git 234 - checkout 235 - run: 236 name: Install build tools 237 command: | 238 yum -y install python3 gcc automake autoconf pkgconfig make libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo 239 - run: 240 name: Build 241 command: | 242 bash ./autogen.sh 243 ./configure --enable-debugging 244 make -j 2 245 - run: 246 name: Test 247 command: | 248 make check SKIP_CHECKGEN_WIN32=yes 249 250 centos7_make_roundtrip: 251 working_directory: ~/universal-ctags 252 docker: 253 - image: docker.io/centos:7 254 steps: 255 - run: 256 name: Install Git 257 command: | 258 yum -y install git 259 - checkout 260 - run: 261 name: Install build tools 262 command: | 263 yum -y install gcc automake autoconf pkgconfig make libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo 264 - run: 265 name: Build 266 command: | 267 bash ./autogen.sh 268 ./configure --enable-debugging 269 make -j 2 270 - run: 271 name: Test 272 command: | 273 make roundtrip 274 275 ubuntu20_mingw: 276 working_directory: ~/universal-ctags 277 docker: 278 - image: docker.io/ubuntu:20.04 279 steps: 280 - run: 281 name: Install git 282 command: | 283 export DEBIAN_FRONTEND=noninteractive 284 apt-get -y update 285 apt-get -y install git 286 - checkout 287 - run: 288 name: Install build tools 289 command: | 290 export DEBIAN_FRONTEND=noninteractive 291 apt-get -o APT::Immediate-Configure=false -y install \ 292 binutils-mingw-w64-i686 gcc-mingw-w64-i686 make gcc 293 - run: 294 name: Build 295 command: | 296 make -j2 CC=i686-w64-mingw32-gcc WINDRES=i686-w64-mingw32-windres CC_FOR_PACKCC=gcc -f mk_mingw.mak 297 ubuntu20_32bit: 298 working_directory: ~/universal-ctags 299 docker: 300 - image: docker.io/ubuntu:20.04 301 steps: 302 - run: 303 name: Install git 304 command: | 305 export DEBIAN_FRONTEND=noninteractive 306 dpkg --add-architecture i386 307 apt-get -y update 308 apt-get -y install git 309 - checkout 310 - run: 311 name: Install build tools 312 # APT::Immediate-Configure=false is taken from 313 # https://superuser.com/questions/199582/apt-error-could-not-perform-immediate-configuration-on 314 # I don't understand why I need this. 315 # -- Masatake 316 command: | 317 export DEBIAN_FRONTEND=noninteractive 318 apt-get -o APT::Immediate-Configure=false -y install \ 319 pkg-config autoconf automake make gcc \ 320 libjansson-dev:i386 libyaml-dev:i386 libseccomp-dev:i386 libxml2-dev:i386 \ 321 gdb valgrind \ 322 python3-docutils \ 323 libc6-dev-i386 libc6-dbg:i386 324 - run: 325 name: Build 326 command: | 327 bash ./autogen.sh 328 CC='gcc -m32' ./configure --enable-debugging 329 make -j 2 330 - run: 331 name: Test 332 command: | 333 # make check roundtrip 334 make units CATEGORIES=parser-varlink 335 336 fedora33_cross_aarch64: 337 working_directory: ~/universal-ctags 338 docker: 339 - image: docker.io/library/fedora:33 340 steps: 341 - run: 342 name: Install tools 343 command: | 344 dnf -y install git gcc autoconf automake make file 345 - run: 346 name: Prepare repo file for install cross compiler 347 command: | 348 curl -o /etc/yum.repos.d/lantw44-aarch64-linux-gnu-toolchain-fedora-33.repo https://copr.fedorainfracloud.org/coprs/lantw44/aarch64-linux-gnu-toolchain/repo/fedora-33/lantw44-aarch64-linux-gnu-toolchain-fedora-33.repo 349 - run: 350 name: Install the cross compiler for aarch64 351 command: | 352 dnf -y install aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc 353 - checkout 354 - run: 355 name: Build ctags for aarch64 356 command: | 357 bash ./autogen.sh 358 mkdir out 359 ./configure --host=aarch64-linux-gnu \ 360 --prefix=`pwd`/out \ 361 --enable-static \ 362 --disable-seccomp \ 363 CC=/usr/bin/aarch64-linux-gnu-gcc \ 364 CPP=/usr/bin/aarch64-linux-gnu-cpp \ 365 AR=/usr/bin/aarch64-linux-gnu-gcc-ar \ 366 RANLIB=/usr/bin/aarch64-linux-gnu-gcc-ranlib \ 367 CC_FOR_BUILD=/usr/bin/gcc 368 make -j 2 369 - run: 370 name: Install locally 371 command: | 372 make install 373 - run: 374 name: Test 375 command: | 376 test -f out/bin/ctags && ( file out/bin/ctags | grep -q 'ARM aarch64' ) 377 378workflows: 379 version: 2 380 build_and_test: 381 jobs: 382 - ubuntu20_32bit 383 - fedora30_bmake 384 - fedora34_distcheck 385 - ubi8_make 386 - fedora34_gmake 387 - fedora33_cross_aarch64 388 - centos7_make 389 - ubuntu20_mingw 390 - ubi8_make_roundtrip 391 - fedora30_bmake_roundtrip 392 - fedora34_gmake_roundtrip 393 - centos7_make_roundtrip 394