From f84a50715e21a788300e4862ca70af64e8ad7bc7 Mon Sep 17 00:00:00 2001 From: Richard Xia Date: Fri, 2 Feb 2018 00:58:32 -0800 Subject: [PATCH] Add scripts for building .deb and .rpm packages. --- .travis.yml | 22 ++++++++++++++++++++++ Dockerfile.centos | 11 +++++++++++ Dockerfile.ubuntu | 8 ++++++++ README.pod | 15 +++++++++++++++ build-deb.sh | 25 +++++++++++++++++++++++++ build-rpm.sh | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 127 insertions(+) create mode 100644 .travis.yml create mode 100644 Dockerfile.centos create mode 100644 Dockerfile.ubuntu create mode 100755 build-deb.sh create mode 100755 build-rpm.sh diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..ecf3fd670 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,22 @@ +services: + - docker + +before_install: + - docker build -f Dockerfile.ubuntu -t verilator-ubuntu . + - docker build -f Dockerfile.centos -t verilator-centos . + +script: + - docker run --rm -e PACKAGE_VERSION=${TRAVIS_TAG:-0.0-UNTAGGED} -v $PWD:/usr/src/app verilator-ubuntu ./build-deb.sh + - docker run --rm -e PACKAGE_VERSION=${TRAVIS_TAG:-0.0-UNTAGGED} -v $PWD:/usr/src/app verilator-centos ./build-rpm.sh + +deploy: + provider: releases + api_key: + secure: "jr4NxwYNXdG7GfPbTwoIXUeY7NxPFbKfo29CW8tt67dBI+clIN/EhNJKQ05qtS5gvmGamVQxhD5rZ0g2Fb7crJSk3oI6196WcYLTNDvp2pl+IanYyPYRucQdAxwd7L0/uyaz9E74IGfr3tlzzDqvlUhOWEZC6cGiIHL0t2Fi6YRpMzes7o/E4T2TvzRvSs/mqYP4sWpeUjK7NjXjqlbHhOPEGxfTwgY+lglPRmNo4A1nYJK7Kv7uGQJ675ye6aF643uX15W/uwetdEUoa08ObF7GiIsLdiv7NXAZgohoqBXeqoRuax+Xc0af4xn+lD0ix4sFxTqOR/XXawjEeVCpQtFI4knTkMIwyDr78EabLu7efxvBaeIwT3ZPET0ayOLMfFUf0SG7pPMIkrmY8T4TVR2mwzodncn4Ym/rKg1HClI3Pf58B1/+fgnAmqbHfW4KFNrVzBd2/2F4Xz0GCZAB9OoeBmQb044Ixy7ccX/zVgcypLkrY/4mWjx7IMBHC4P8Xpepz7jheWZfBr+HS/aD3U6ErjOkELK/EbECKtO/NBEEQj2KanPsmHU4HhdexhIu1KYyjoq+1p8oczZb5uD4BgwprRZhVNJXlV71G5Rrz5DFT6U0MHkLWJe5QiZtZE+WPRAMrtJWTXFjjDSmEGyNlI10R/qvFiB09LTXDmtPH1Q=" + file: + - verilator_${TRAVIS_TAG}_amd64.deb + - verilator-${TRAVIS_TAG}.x86_64.rpm + skip_cleanup: true + on: + repo: sifive/verilator + tags: true diff --git a/Dockerfile.centos b/Dockerfile.centos new file mode 100644 index 000000000..523e0c419 --- /dev/null +++ b/Dockerfile.centos @@ -0,0 +1,11 @@ +FROM centos:7 +RUN yum update -y && yum install -y \ + autoconf \ + bison \ + flex \ + gcc-c++ \ + git \ + rsync \ + rpm-build \ + make +WORKDIR /usr/src/app diff --git a/Dockerfile.ubuntu b/Dockerfile.ubuntu new file mode 100644 index 000000000..4132f1417 --- /dev/null +++ b/Dockerfile.ubuntu @@ -0,0 +1,8 @@ +FROM ubuntu:16.04 +RUN apt-get update && apt-get install -y \ + autoconf \ + bison \ + flex \ + g++ \ + make +WORKDIR /usr/src/app diff --git a/README.pod b/README.pod index dc31b91c9..1072af3fb 100644 --- a/README.pod +++ b/README.pod @@ -3,6 +3,21 @@ =pod +=head1 FORK NOTES + +This is a fork of the Verilator project which adds some steps for automatically +creating .deb and .rpm packages from a release tag. Travis is configured to +run a build and upload a release to GitHub whenever a tag is created. You can +simply cherry-pick the latest commit on top of a real Verilator release and +create a tag from that. + + git remote add veripool http://git.veripool.org/git/verilator + git fetch veripool + git checkout verilator_4_014 + git cherry-pick origin/master + git tag 4.014-0sifive1 + git push origin 4.014-0sifive1 + =head1 NAME This is the Verilator package README file. diff --git a/build-deb.sh b/build-deb.sh new file mode 100755 index 000000000..4b1d56c90 --- /dev/null +++ b/build-deb.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -eux + +pkg_arch=amd64 +pkg_dir=$(realpath ./verilator_${PACKAGE_VERSION}_${pkg_arch}) + +autoconf +./configure +make clean +make +make test +make install DESTDIR=$pkg_dir + +mkdir $pkg_dir/DEBIAN +cat << EOF > $pkg_dir/DEBIAN/control +Package: verilator +Version: ${PACKAGE_VERSION} +Architecture: ${pkg_arch} +Maintainer: Richard Xia +Depends: perl (>= 5.22.1) +Description: fast free Verilog simulator +EOF + +dpkg-deb --build $pkg_dir diff --git a/build-rpm.sh b/build-rpm.sh new file mode 100755 index 000000000..1733ffcb5 --- /dev/null +++ b/build-rpm.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +set -eux + +pkg_arch=x86_64 +pkg_distro=centos +pkg_dir=$(realpath ./verilator_${PACKAGE_VERSION}_${pkg_arch}_${pkg_distro}) + +pkg_version=$(echo ${PACKAGE_VERSION} | cut -d- -f1) +pkg_release=$(echo ${PACKAGE_VERSION} | cut -d- -f2) + +autoconf +./configure +make clean +make +make test +make install DESTDIR=$pkg_dir + +cat << EOF > verilator.spec +Name: verilator +Version: ${pkg_version} +Release: ${pkg_release} +Requires: perl >= 5.2.11 +Summary: Verilog HDL simulator +License: Perl Artistic License and GNU Lesser General Public License + +%description +Verilog HDL simulator + +%prep + +%build + +%install +rsync -a ${pkg_dir}/ %buildroot/ + +%files +%defattr(0644, root,root) +%attr(0755, root,root) /usr/local/bin/verilator* +/usr/local/share/man/man1/verilator* +/usr/local/share/pkgconfig/verilator.pc +/usr/local/share/verilator/* +EOF + +rpmbuild -bb verilator.spec +cp /root/rpmbuild/RPMS/${pkg_arch}/verilator-${PACKAGE_VERSION}.${pkg_arch}.rpm ./