| #!/bin/bash |
| # Copyright 2020 The Verible Authors. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| set -e |
| |
| DIRS=${1:-$(find -mindepth 1 -maxdepth 1 -type d)} |
| |
| REPO_SLUG=${TRAVIS_REPO_SLUG:-google/verible} |
| GIT_DATE=${GIT_DATE:-$(git show -s --format=%ci)} |
| GIT_VERSION=${GIT_VERSION:-$(git describe --match=v*)} |
| GIT_HASH=${GIT_HASH:-$(git rev-parse HEAD)} |
| |
| # Generate the docker files for ubuntu versions |
| for UBUNTU_VERSION in trusty xenial bionic eoan focal; do |
| cat > ubuntu-${UBUNTU_VERSION}/Dockerfile <<EOF |
| FROM ubuntu:$UBUNTU_VERSION |
| |
| RUN apt-get update |
| RUN apt-get install -y curl gnupg software-properties-common |
| |
| RUN \ |
| curl https://bazel.build/bazel-release.pub.gpg | apt-key add - ; \ |
| echo "deb [arch=amd64] http://storage.googleapis.com/bazel-apt stable jdk1.8" | tee /etc/apt/sources.list.d/bazel.list ; \ |
| apt-get update |
| |
| RUN apt-get install -y \ |
| bazel \ |
| build-essential \ |
| gcc \ |
| g++ \ |
| file \ |
| lsb-release \ |
| wget \ |
| |
| EOF |
| case $UBUNTU_VERSION in |
| trusty) |
| cat >> ubuntu-${UBUNTU_VERSION}/Dockerfile <<EOF |
| # Get a newer GCC version |
| RUN add-apt-repository ppa:ubuntu-toolchain-r/test; \ |
| apt-get update |
| RUN apt-get install -y \ |
| gcc-6 \ |
| g++-6 \ |
| |
| RUN ln -sf /usr/bin/gcc-6 /usr/bin/gcc |
| RUN ln -sf /usr/bin/g++-6 /usr/bin/g++ |
| |
| # Link libstdc++ statically |
| ENV BAZEL_LINKOPTS "-static-libstdc++:-lm" |
| ENV BAZEL_LINKLIBS "-l%:libstdc++.a" |
| EOF |
| ;; |
| esac |
| |
| done |
| |
| # Generate the docker files for centos versions |
| for CENTOS_VERSION in 6 7 8; do |
| # Install basic tools |
| cat > centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| FROM centos:$CENTOS_VERSION |
| |
| RUN yum install -y \ |
| file \ |
| redhat-lsb \ |
| tar \ |
| git \ |
| wget \ |
| |
| EOF |
| |
| # Install compiler |
| case $CENTOS_VERSION in |
| 6|7) |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| # Get a newer GCC version |
| RUN yum install -y --nogpgcheck centos-release-scl |
| RUN yum install -y --nogpgcheck devtoolset-7 |
| SHELL [ "scl", "enable", "devtoolset-7" ] |
| |
| # Link libstdc++ statically |
| ENV BAZEL_LINKOPTS "-static-libstdc++:-lm -static-libstdc++:-lrt" |
| ENV BAZEL_LINKLIBS "-l%:libstdc++.a" |
| EOF |
| ;; |
| 8) |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| # Install C++ compiler |
| RUN yum -y group install --nogpgcheck "Development Tools" || yum -y groupinstall --nogpgcheck "Development Tools" |
| RUN gcc --version |
| RUN g++ --version |
| EOF |
| ;; |
| esac |
| |
| # Install Bazel |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| # Install bazel |
| RUN yum install -y --nogpgcheck \ |
| java-1.8.0-openjdk-devel \ |
| unzip \ |
| zip \ |
| |
| RUN java -version |
| RUN javac -version |
| EOF |
| case $CENTOS_VERSION in |
| 6) |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| RUN yum install -y --nogpgcheck rh-python36 |
| SHELL [ "scl", "enable", "rh-python36", "devtoolset-7" ] |
| |
| RUN python --version |
| RUN python3 --version |
| |
| # Build bazel |
| RUN wget https://github.com/bazelbuild/bazel/releases/download/2.1.0/bazel-2.1.0-dist.zip |
| RUN unzip bazel-2.1.0-dist.zip -d bazel-2.1.0-dist |
| RUN cd bazel-2.1.0-dist; ./compile.sh |
| RUN cp bazel-2.1.0-dist/output/bazel /usr/local/bin |
| RUN bazel --version |
| |
| SHELL [ "scl", "enable", "devtoolset-7" ] |
| EOF |
| ;; |
| 7|8) |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| ADD https://copr.fedorainfracloud.org/coprs/vbatts/bazel/repo/epel-${CENTOS_VERSION}/vbatts-bazel-epel-${CENTOS_VERSION}.repo /etc/yum.repos.d |
| RUN yum install -y --nogpgcheck bazel |
| EOF |
| esac |
| |
| # Install gflags2man |
| cat >> centos-${CENTOS_VERSION}/Dockerfile <<EOF |
| # Install gflags2man |
| RUN \ |
| wget https://repo.anaconda.com/miniconda/Miniconda2-latest-Linux-x86_64.sh; \ |
| chmod a+x Miniconda2-latest-Linux-x86_64.sh; \ |
| ./Miniconda2-latest-Linux-x86_64.sh -p /usr/local -b -f; \ |
| conda --version |
| RUN which pip |
| RUN /usr/local/bin/pip install python-gflags |
| RUN chmod a+x /usr/local/bin/gflags2man.py |
| RUN ln -s /usr/local/bin/gflags2man.py /usr/bin/gflags2man |
| RUN gflags2man |
| EOF |
| |
| done |
| |
| for DFILE in $(find -name Dockerfile); do |
| cat >> $DFILE <<EOF |
| |
| ENV REPO_SLUG $REPO_SLUG |
| ENV GIT_VERSION $GIT_VERSION |
| ENV GIT_DATE $GIT_DATE |
| ENV GIT_HASH $GIT_HASH |
| |
| ADD verible-$GIT_VERSION.tar.gz /src/verible |
| WORKDIR /src/verible/verible-$GIT_VERSION |
| RUN bazel build --workspace_status_command=bazel/build-version.sh -c opt //... |
| RUN echo $REPO_SLUG |
| RUN echo $GIT_DATE |
| RUN echo $GIT_HASH |
| RUN echo $GIT_VERSION |
| |
| RUN ./.github/travis/github-pages-setup.sh |
| RUN ./.github/travis/github-releases-setup.sh /out/ |
| EOF |
| done |
| |
| # Create archive for each docker directory |
| for DIR in $DIRS; do |
| (cd .. ; git archive --prefix verible-$GIT_VERSION/ --output Docker/$DIR/verible-$GIT_VERSION.tar.gz HEAD) |
| done |