ci: migrate from Travis CI to GH actions

Signed-off-by: Alessandro Comodi <acomodi@antmicro.com>
diff --git a/.github/workflows/build-and-test.sh b/.github/workflows/build-and-test.sh
new file mode 100755
index 0000000..8fd95f9
--- /dev/null
+++ b/.github/workflows/build-and-test.sh
@@ -0,0 +1,25 @@
+#! /bin/bash
+
+set -e
+
+source .github/workflows/common.sh
+
+##########################################################################
+
+start_section Building
+make plugins -j`nproc`
+end_section
+
+##########################################################################
+
+start_section Installing
+make install -j`nproc`
+end_section
+
+##########################################################################
+
+start_section Testing
+make test -j`nproc`
+end_section
+
+##########################################################################
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..42f5810
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,31 @@
+name: CI tests
+
+on: [push, pull_request]
+
+jobs:
+
+  Run-tests:
+    runs-on: ubuntu-latest
+    steps:
+
+    - uses: actions/checkout@v2
+
+    - uses: actions/setup-python@v2
+
+    - name: Install
+      run: |
+        sudo apt-get update
+        sudo apt-get install git g++-9 build-essential bison flex \
+          libreadline-dev gawk tcl-dev libffi-dev git graphviz xdot \
+          pkg-config libboost-system-dev libboost-python-dev \
+          libboost-filesystem-dev zlib1g-dev
+
+    - name: Install Yosys
+      run: source .github/workflows/setup.sh
+      env:
+        OS: ${{ runner.os }}
+
+    - name: Build and test plugins
+      run: source .github/workflows/build-and-test.sh
+      env:
+        OS: ${{ runner.os }}
diff --git a/.github/workflows/common.sh b/.github/workflows/common.sh
new file mode 100644
index 0000000..53e7033
--- /dev/null
+++ b/.github/workflows/common.sh
@@ -0,0 +1,39 @@
+#! /bin/bash
+
+# Look for location binaries first
+export PATH="$HOME/.local-bin/bin:$PATH"
+
+# OS X specific common setup
+if [[ "${OS}" == "macOS" ]]; then
+	export PATH="/usr/local/opt/ccache/libexec:$PATH"
+fi
+
+# Parallel builds!
+MAKEFLAGS="-j 2"
+
+function action_fold() {
+	if [ "$1" = "start" ]; then
+		echo "::group::$2"
+		SECONDS=0
+	else
+		duration=$SECONDS
+		echo "::endgroup::"
+		printf "${GRAY}took $(($duration / 60)) min $(($duration % 60)) sec.${NC}\n"
+	fi
+	return 0;
+}
+
+function start_section() {
+	action_fold start "$1"
+	echo -e "${PURPLE}SymbiFlow Yosys Plugins${NC}: - $2${NC}"
+	echo -e "${GRAY}-------------------------------------------------------------------${NC}"
+}
+
+export -f start_section
+
+function end_section() {
+	echo -e "${GRAY}-------------------------------------------------------------------${NC}"
+	action_fold end "$1"
+}
+
+export -f end_section
diff --git a/.github/workflows/setup.sh b/.github/workflows/setup.sh
new file mode 100755
index 0000000..e734b2a
--- /dev/null
+++ b/.github/workflows/setup.sh
@@ -0,0 +1,45 @@
+#! /bin/bash
+
+set -e
+
+source .github/workflows/common.sh
+
+##########################################################################
+
+# Output status information.
+start_section Status
+(
+    set +e
+    set -x
+    git status
+    git branch -v
+    git log -n 5 --graph
+    git log --format=oneline -n 20 --graph
+)
+end_section
+
+##########################################################################
+
+#Install yosys
+start_section Install-Yosys
+(
+    if [ ! -e ~/.local-bin/bin/yosys ]; then
+        echo '=========================='
+        echo 'Building yosys'
+        echo '=========================='
+        mkdir -p ~/.local-src
+        mkdir -p ~/.local-bin
+        cd ~/.local-src
+        git clone https://github.com/SymbiFlow/yosys.git -b master+wip
+        cd yosys
+        PREFIX=$HOME/.local-bin make -j$(nproc)
+        PREFIX=$HOME/.local-bin make install
+        echo $(which yosys)
+        echo $(which yosys-config)
+        echo $(yosys-config --datdir)
+    fi
+)
+end_section
+
+##########################################################################
+
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 58b379e..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-sudo: false
-language: cpp
-
-#cache:
-# ccache: false
-# directories:
-#  - ~/.local-bin
-
-
-env:
-  global:
-    - MAKEFLAGS="-j 2"
-
-include:
-  # Latest gcc supported on Travis Linux
-  - os: linux
-    addons:
-      apt:
-        sources:
-          - ubuntu-toolchain-r-test
-        packages:
-          - g++-9
-          - gperf
-          - build-essential
-          - bison
-          - flex
-          - libreadline-dev
-          - gawk
-          - tcl-dev
-          - libffi-dev
-          - git
-          - graphviz
-          - xdot
-          - pkg-config
-          - python
-          - python3
-          - libboost-system-dev
-          - libboost-python-dev
-          - libboost-filesystem-dev
-          - zlib1g-dev
-    env:
-      - MATRIX_EVAL="CONFIG=gcc && CC=gcc-9 && CXX=g++-9"
-
-before_install:
-  - ./.travis/setup.sh
-
-script:
-  - ./.travis/build-and-test.sh
-
diff --git a/.travis/build-and-test.sh b/.travis/build-and-test.sh
deleted file mode 100755
index e1cd5df..0000000
--- a/.travis/build-and-test.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#! /bin/bash
-
-set -e
-
-source .travis/common.sh
-
-##########################################################################
-
-echo
-echo 'Configuring...' && echo -en 'travis_fold:start:script.configure\\r'
-echo
-
-if [ "$CONFIG" = "gcc" ]; then
-	echo "Configuring for gcc."
-	make config-gcc
-elif [ "$CONFIG" = "clang" ]; then
-	echo "Configuring for clang."
-	make config-clang
-fi
-
-echo
-echo -en 'travis_fold:end:script.configure\\r'
-echo
-
-##########################################################################
-
-echo
-echo 'Building plugins..' && echo -en 'travis_fold:start:script.build\\r'
-echo
-
-make plugins -j`nproc`
-
-echo
-echo -en 'travis_fold:end:script.build\\r'
-echo
-
-##########################################################################
-
-echo
-echo 'Installing plugins...' && echo -en 'travis_fold:start:script.build\\r'
-echo
-
-make install -j`nproc`
-
-echo
-echo -en 'travis_fold:end:script.build\\r'
-echo
-
-##########################################################################
-
-echo
-echo 'Testing...' && echo -en 'travis_fold:start:script.test\\r'
-echo
-
-make test -j`nproc`
-
-echo
-echo -en 'travis_fold:end:script.test\\r'
-echo
-
-##########################################################################
diff --git a/.travis/common.sh b/.travis/common.sh
deleted file mode 100644
index 8eecc4c..0000000
--- a/.travis/common.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#! /bin/bash
-
-# Setup the CC / CXX from the matrix config
-eval "${MATRIX_EVAL}"
-
-# Look for location binaries first
-export PATH="$HOME/.local-bin/bin:$PATH"
-
-# OS X specific common setup
-if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
-	export PATH="/usr/local/opt/ccache/libexec:$PATH"
-fi
-
-# Parallel builds!
-MAKEFLAGS="-j 2"
diff --git a/.travis/setup.sh b/.travis/setup.sh
deleted file mode 100755
index 3416017..0000000
--- a/.travis/setup.sh
+++ /dev/null
@@ -1,47 +0,0 @@
-#! /bin/bash
-
-set -e
-
-source .travis/common.sh
-
-##########################################################################
-
-# Output status information.
-(
-	set +e
-	set -x
-	git status
-	git branch -v
-	git log -n 5 --graph
-	git log --format=oneline -n 20 --graph
-)
-echo
-echo -en 'travis_fold:end:before_install.git\\r'
-echo
-
-##########################################################################
-
-#Install yosys
-(
-        if [ ! -e ~/.local-bin/bin/yosys ]; then
-                echo
-                echo 'Building yosys...' && echo -en 'travis_fold:start:before_install.yosys\\r'
-                echo
-                mkdir -p ~/.local-src
-                mkdir -p ~/.local-bin
-                cd ~/.local-src
-                git clone https://github.com/SymbiFlow/yosys.git -b master+wip
-                cd yosys
-                PREFIX=$HOME/.local-bin make -j$(nproc)
-                PREFIX=$HOME/.local-bin make install
-                echo $(which yosys)
-                echo $(which yosys-config)
-                echo $(yosys-config --datdir)
-                echo
-                echo -en 'travis_fold:end:before_install.yosys\\r'
-                echo
-        fi
-)
-
-##########################################################################
-