version: 2 jobs: # # This is for the latest RELEASED Fedora. # Update the version of Fedora when new version is released. # We don't use row hide, the development version of Fedora # till the list of TODO items of u-ctags becomes nil. # # We assume GNU Make is available. # fedora34_gmake: working_directory: ~/universal-ctags docker: - image: docker.io/fedora:34 steps: - run: name: Install Git, Gdb and Procps-NG command: | yum -y install git gdb procps-ng - checkout - run: name: Install build tools command: | dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo dnf -y install jq puppet python3-sphinx - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make check - run: name: Make HTML documents command: | cd docs make html fedora34_gmake_roundtrip: working_directory: ~/universal-ctags docker: - image: docker.io/fedora:34 steps: - run: name: Install Git and Gdb command: | yum -y install git gdb - checkout - run: name: Install build tools command: | dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo dnf -y install jq puppet - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make roundtrip # # We assume GNU make as the `make` command as we use GNU make extension # aggressively in man/Makefile and win32/Makefile. # # man/Makefile is used to generate man files only when rst2man is installed. # win32/Makefile is used only when either source.mk or win32/*.in is updated. # In other cases we can still build ctags without GNU make. # # The following tests use bmake (NetBSD make) to check if GNU make extensions # are not used unintentionally. # # On Fedora 31 bmake package cannot be installed because a package required by # bmake is not available. More inspection is needed. Fedora 30 is the last # version where bmake can be installed. # fedora30_bmake: working_directory: ~/universal-ctags docker: - image: docker.io/fedora:30 steps: - run: name: Install Git and Gdb command: | dnf -y install git gdb - checkout - run: name: Install packages for building ctags and validating test input files command: | dnf -y install gcc automake autoconf pkgconfig bmake libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils sudo dnf -y install g++ jq puppet - run: name: Build command: | bash ./autogen.sh MAKE=bmake ./configure --enable-debugging bmake -j 2 - run: name: Test command: | MAKE=bmake bmake validate-input check codecheck fedora30_bmake_roundtrip: working_directory: ~/universal-ctags docker: - image: docker.io/fedora:30 steps: - run: name: Install Git and Gdb command: | dnf -y install git gdb - checkout - run: name: Install build tools command: | dnf -y install gcc automake autoconf pkgconfig bmake libseccomp-devel libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils sudo dnf -y install jq puppet - run: name: Build command: | bash ./autogen.sh MAKE=bmake ./configure --enable-debugging bmake -j 2 - run: name: Test command: | MAKE=bmake bmake roundtrip fedora34_distcheck: working_directory: ~/universal-ctags docker: - image: docker.io/fedora:34 steps: - run: name: Install Git, Gdb and Procps-NG command: | dnf -y install git gdb procps-ng - checkout - run: name: Install build tools command: | dnf -y install gcc automake autoconf pkgconfig make libseccomp-devel libxml2-devel jansson-devel libyaml-devel findutils diffutils sudo pcre2-devel dnf -y install jq puppet python3-docutils - run: name: Run autogen.sh command: | bash ./autogen.sh - run: name: Run configure command: | ./configure - run: name: verify generated files (optlib, txt2cstr, etc.) are updated command: | make check-genfile - run: name: Test command: | ulimit -c 0 # Let's trick git. # # "git" running in "make distcheck" may refer $(pwd)/.git of THIS context. # On the other hand, we want to run the test cases in an environment separated # from our git repo. # mkdir __NO_GIT__ make distcheck GIT_DIR=__NO_GIT__ rmdir __NO_GIT__ ubi8_make: working_directory: ~/universal-ctags docker: - image: registry.access.redhat.com/ubi8:latest steps: - run: name: Install Git command: | yum -y install git - checkout - run: name: Install build tools command: | 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 - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make check ubi8_make_roundtrip: working_directory: ~/universal-ctags docker: - image: registry.access.redhat.com/ubi8:latest steps: - run: name: Install Git command: | yum -y install git - checkout - run: name: Install build tools command: | 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 - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make roundtrip centos7_make: working_directory: ~/universal-ctags docker: - image: docker.io/centos:7 steps: - run: name: Install Git command: | yum -y install git - checkout - run: name: Install build tools command: | yum -y install python3 gcc automake autoconf pkgconfig make libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make check SKIP_CHECKGEN_WIN32=yes centos7_make_roundtrip: working_directory: ~/universal-ctags docker: - image: docker.io/centos:7 steps: - run: name: Install Git command: | yum -y install git - checkout - run: name: Install build tools command: | yum -y install gcc automake autoconf pkgconfig make libxml2-devel jansson-devel libyaml-devel pcre2-devel findutils diffutils sudo - run: name: Build command: | bash ./autogen.sh ./configure --enable-debugging make -j 2 - run: name: Test command: | make roundtrip ubuntu20_mingw: working_directory: ~/universal-ctags docker: - image: docker.io/ubuntu:20.04 steps: - run: name: Install git command: | export DEBIAN_FRONTEND=noninteractive apt-get -y update apt-get -y install git - checkout - run: name: Install build tools command: | export DEBIAN_FRONTEND=noninteractive apt-get -o APT::Immediate-Configure=false -y install \ binutils-mingw-w64-i686 gcc-mingw-w64-i686 make gcc - run: name: Build command: | make -j2 CC=i686-w64-mingw32-gcc WINDRES=i686-w64-mingw32-windres CC_FOR_PACKCC=gcc -f mk_mingw.mak ubuntu20_32bit: working_directory: ~/universal-ctags docker: - image: docker.io/ubuntu:20.04 steps: - run: name: Install git command: | export DEBIAN_FRONTEND=noninteractive dpkg --add-architecture i386 apt-get -y update apt-get -y install git - checkout - run: name: Install build tools # APT::Immediate-Configure=false is taken from # https://superuser.com/questions/199582/apt-error-could-not-perform-immediate-configuration-on # I don't understand why I need this. # -- Masatake command: | export DEBIAN_FRONTEND=noninteractive apt-get -o APT::Immediate-Configure=false -y install \ pkg-config autoconf automake make gcc \ libjansson-dev:i386 libyaml-dev:i386 libseccomp-dev:i386 libxml2-dev:i386 \ gdb valgrind \ python3-docutils \ libc6-dev-i386 libc6-dbg:i386 - run: name: Build command: | bash ./autogen.sh CC='gcc -m32' ./configure --enable-debugging make -j 2 - run: name: Test command: | # make check roundtrip make units CATEGORIES=parser-varlink fedora33_cross_aarch64: working_directory: ~/universal-ctags docker: - image: docker.io/library/fedora:33 steps: - run: name: Install tools command: | dnf -y install git gcc autoconf automake make file - run: name: Prepare repo file for install cross compiler command: | 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 - run: name: Install the cross compiler for aarch64 command: | dnf -y install aarch64-linux-gnu-binutils aarch64-linux-gnu-gcc aarch64-linux-gnu-glibc - checkout - run: name: Build ctags for aarch64 command: | bash ./autogen.sh mkdir out ./configure --host=aarch64-linux-gnu \ --prefix=`pwd`/out \ --enable-static \ --disable-seccomp \ CC=/usr/bin/aarch64-linux-gnu-gcc \ CPP=/usr/bin/aarch64-linux-gnu-cpp \ AR=/usr/bin/aarch64-linux-gnu-gcc-ar \ RANLIB=/usr/bin/aarch64-linux-gnu-gcc-ranlib \ CC_FOR_BUILD=/usr/bin/gcc make -j 2 - run: name: Install locally command: | make install - run: name: Test command: | test -f out/bin/ctags && ( file out/bin/ctags | grep -q 'ARM aarch64' ) workflows: version: 2 build_and_test: jobs: - ubuntu20_32bit - fedora30_bmake - fedora34_distcheck - ubi8_make - fedora34_gmake - fedora33_cross_aarch64 - centos7_make - ubuntu20_mingw - ubi8_make_roundtrip - fedora30_bmake_roundtrip - fedora34_gmake_roundtrip - centos7_make_roundtrip