diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index a4f7482..9d91033 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,15 @@ verilator-3.803.tgz /verilator-3.845.tgz /verilator-*.tgz +/verilator-4.226.tar.gz +/verilator-5.014.tar.gz +/verilator-5.020.tar.gz +/verilator-5.022.tar.gz +/verilator-5.024.tar.gz +/verilator-5.026.tar.gz +/verilator-5.028.tar.gz +/verilator-5.030.tar.gz +/verilator-5.032.tar.gz +/verilator-5.034.tar.gz +/verilator-5.036.tar.gz +/verilator-5.040.tar.gz diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..fb341a1 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 1.11.0.post1.dev7+gfdcdf3a32. diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..03d95b2 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,7 @@ +--- !Policy +product_versions: + - fedora-* +decision_contexts: [bodhi_update_push_testing, bodhi_update_push_stable] +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} \ No newline at end of file diff --git a/packit.yaml b/packit.yaml new file mode 100644 index 0000000..8ed5fe5 --- /dev/null +++ b/packit.yaml @@ -0,0 +1,25 @@ +# See the documentation for more information: +# https://packit.dev/docs/configuration/ + +upstream_project_url: https://github.com/verilator/verilator.git +upstream_tag_template: v{version} + +jobs: +# https://packit.dev/docs/configuration/downstream/pull_from_upstream +# TODO make sure Monitoring status on the left side at https://src.fedoraproject.org/rpms/ is set to Monitoring +- job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-all + +# https://packit.dev/docs/configuration/downstream/koji_build +- job: koji_build + trigger: commit + dist_git_branches: + - fedora-all + +# https://packit.dev/docs/configuration/downstream/bodhi_update +- job: bodhi_update + trigger: commit + dist_git_branches: + - fedora-branched diff --git a/plans/main.fmf b/plans/main.fmf new file mode 100644 index 0000000..fbc11c1 --- /dev/null +++ b/plans/main.fmf @@ -0,0 +1,10 @@ +discover: + how: fmf +execute: + how: tmt + +/basic: + summary: + Basic functionality + discover+: + filter: "tier:0" diff --git a/sources b/sources index dcb19c0..df68504 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -bdbfb9f38e64caf6571e3fb6e896abd3 verilator-3.874.tgz +SHA512 (verilator-5.040.tar.gz) = 3997791963305f4556a8f3b87e050eba5ad9952c0eb041c5ac981276ef385219e5c162a01e1ec966e5e814a334caa4e92f8e939e9cfbc068b30935f5ee6e9804 diff --git a/tests/basic/lint/example.sv b/tests/basic/lint/example.sv new file mode 100644 index 0000000..e578377 --- /dev/null +++ b/tests/basic/lint/example.sv @@ -0,0 +1,6 @@ +module example ( + input bit a_i, + output bit b_o +); + assign b_o = a_i; +endmodule diff --git a/tests/basic/lint/main.fmf b/tests/basic/lint/main.fmf new file mode 100644 index 0000000..894b51e --- /dev/null +++ b/tests/basic/lint/main.fmf @@ -0,0 +1,2 @@ +summary: Basic lint test +tag: basic \ No newline at end of file diff --git a/tests/basic/lint/test.sh b/tests/basic/lint/test.sh new file mode 100755 index 0000000..45d92cc --- /dev/null +++ b/tests/basic/lint/test.sh @@ -0,0 +1,8 @@ +#!/bin/bash +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartTest + rlRun "verilator --lint-only -Wall example.sv" + rlPhaseEnd +rlJournalEnd \ No newline at end of file diff --git a/tests/basic/main.fmf b/tests/basic/main.fmf new file mode 100644 index 0000000..3c4d0f8 --- /dev/null +++ b/tests/basic/main.fmf @@ -0,0 +1 @@ +tier: 0 \ No newline at end of file diff --git a/tests/basic/smoke/main.fmf b/tests/basic/smoke/main.fmf new file mode 100644 index 0000000..e03cdd7 --- /dev/null +++ b/tests/basic/smoke/main.fmf @@ -0,0 +1,2 @@ +summary: Basic smoke test +tag: basic \ No newline at end of file diff --git a/tests/basic/smoke/test.sh b/tests/basic/smoke/test.sh new file mode 100755 index 0000000..1bee41d --- /dev/null +++ b/tests/basic/smoke/test.sh @@ -0,0 +1,8 @@ +#!/bin/bash +. /usr/share/beakerlib/beakerlib.sh || exit 1 + +rlJournalStart + rlPhaseStartTest + rlRun "verilator --version" + rlPhaseEnd +rlJournalEnd \ No newline at end of file diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..d1ac01b --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,4 @@ +test: ./test.sh +framework: beakerlib +require: verilator +tier: 1 \ No newline at end of file diff --git a/verilator.spec b/verilator.spec index 61cae08..1ea2d2c 100644 --- a/verilator.spec +++ b/verilator.spec @@ -1,17 +1,87 @@ +# Universal build flags +%bcond longtests 0 + +# Only enable extended warnings on supported platforms +%ifarch x86_64 aarch64 +%bcond ccwarn 1 +%else +%bcond ccwarn 0 +%endif + +# tcmalloc and z3 are not available on EL +%if 0%{?rhel}%{?centos} +%bcond tcmalloc 0 +%bcond z3 0 +%else +%bcond tcmalloc 1 +%bcond z3 1 +%endif + +# These are offered by the build, but there's no real demand to include them. +%bcond ccache 0 +%bcond mold 0 + Name: verilator -Version: 3.874 -Release: 1%{?dist} +Version: 5.040 +Release: %autorelease Summary: A fast simulator for synthesizable Verilog -License: GPLv2 -Group: Applications/Engineering -URL: http://www.veripool.com/verilator.html -Source0: http://www.veripool.org/ftp/%{name}-%{version}.tgz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -BuildRequires: perl, flex, bison, perl-SystemPerl-devel -Requires: perl-SystemPerl-devel >= 1.320 +License: LGPL-3.0-only OR Artistic-2.0 +URL: https://veripool.org/verilator/ +Source: https://github.com/verilator/verilator/archive/refs/tags/v%{version}/%{name}-%{version}.tar.gz + +# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval +ExcludeArch: %{ix86} + +BuildRequires: autoconf +BuildRequires: bison +BuildRequires: coreutils +BuildRequires: cmake +BuildRequires: findutils +BuildRequires: flex +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: help2man +BuildRequires: make +BuildRequires: perl-generators +BuildRequires: perl-interpreter +BuildRequires: perl-lib +BuildRequires: perl-version +BuildRequires: perl(Data::Dumper) +BuildRequires: perl(Digest::MD5) +BuildRequires: perl(FindBin) +BuildRequires: perl(Getopt::Long) +BuildRequires: perl(IO::File) +BuildRequires: perl(Pod::Usage) +BuildRequires: perl(strict) +BuildRequires: perl(Time::HiRes) +BuildRequires: perl(vars) +BuildRequires: python3-devel +BuildRequires: python3-distro +BuildRequires: sed +%if %{with tcmalloc} +BuildRequires: gperftools-libs +BuildRequires: gperftools-devel +%endif +%if %{with mold} +Requires: mold +BuildRequires: mold +%endif +%if %{with ccache} +Requires: ccache +BuildRequires: ccache +%endif +%if %{with z3} +Requires: z3 +BuildRequires: z3 +%endif + +# required for further tests +BuildRequires: gdb + +# devel is required to run verilator at all +Requires: %{name}-devel = %{version}-%{release} %description - Verilator is the fastest free Verilog HDL simulator. It compiles synthesizable Verilog, plus some PSL, SystemVerilog and Synthesis assertions into C++ or SystemC code. It is designed for large projects @@ -19,144 +89,106 @@ where fast simulation performance is of primary concern, and is especially well suited to create executable models of CPUs for embedded software design teams. -%prep -%setup -q +%package devel +Summary: Libraries and header files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} -find . -name .gitignore -exec rm {} \; +%description devel +This package contains library and header files needed to develop +applications based on %{name}. + +%package doc +Summary: Documentation for %{name} +BuildArch: noarch +Requires: %{name} = %{version}-%{release} + +%description doc +This package contains the documentation for %{name}. + + +%prep +%autosetup -p1 +find . -name .gitignore -delete export VERILATOR_ROOT=%{_datadir} -%{configure} --enable-envdef --prefix=%{_prefix} --mandir=%{_mandir} -%{__sed} -i "s|CPPFLAGSNOWALL +=|CPPFLAGSNOWALL +=%{optflags}|" \ -{src,test_c,test_regress,test_sc,test_verilated}/Makefile_obj +autoconf +%configure \ + --disable-partial-static \ + --disable-defenv \ +%if %{with ccwarn} + --enable-ccwarn \ +%else + --disable-ccwarn \ +%endif +%if %{with longtests} + --enable-longtests +%else + --disable-longtests +%endif + +# We cannot run autoreconf because upstream uses unqualified stdlib identifiers +# that are included by autoconf-generated header files. +find -name Makefile_obj -exec sed -i \ + -e 's|^\(COPT = .*\)|\1 %{optflags}|' \ + -e 's|^#LDFLAGS += .*|LDFLAGS += %{__global_ldflags}|' \ + {} \; + +# Fix /usr/bin/env ("env-script-interpreter") +sed -i 's#/usr/bin/env python3#/usr/bin/python3#g' docs/bin/* %build -SYSTEMPERL_INCLUDE=%{_includedir}/perl-SystemPerl %{__make} %{?_smp_mflags} +%if 0%{?rhel}%{?centos} +export VERILATOR_SRC_VERSION=epel-%{version} +%else +export VERILATOR_SRC_VERSION=fedora-%{version} +%endif +%make_build %install -%{__rm} -rf %{buildroot} -%{__make} DESTDIR=$RPM_BUILD_ROOT install - -# move the examples out of the datadir so that we can later include -# them in the doc dir -%{__mv} %{buildroot}%{_datadir}/verilator/examples examples - -# remove not needed build directory and bin directory -%{__rm} -rf %{buildroot}%{_datadir}/verilator/src -%{__rm} -rf %{buildroot}%{_bindir}/verilator_includer +%make_install # verilator installs verilator.pc under ${datadir} # but for consistency we want it under ${libdir} mkdir -p %{buildroot}%{_libdir}/pkgconfig mv %{buildroot}%{_datadir}/pkgconfig/verilator.pc %{buildroot}%{_libdir}/pkgconfig -%clean -%{__rm} -rf %{buildroot} +# some tests and examples are CC0 and cannot be packaged into Fedora +rm -rf %{buildroot}%{_datadir}/verilator/examples +rm -rf %{buildroot}%{_datadir}/verilator/tests + + + +# The "tests" are all integration tests. +# They also define their own build flags, +# and fail if they are set to anything else. +%undefine _auto_set_build_flags + +%check +make test + %files - -%defattr(-, root, root, -) -%doc README -%doc COPYING Changes TODO Artistic -%doc verilator.pdf verilator.html -%doc examples/ - -%attr(644,-,-) %{_mandir}/man1/verilator.1.gz -%{_mandir}/man1/verilator_coverage.1.gz -%{_mandir}/man1/verilator_profcfunc.1.gz - -%{_datadir}/verilator - +%license Artistic LICENSE +%{_mandir}/man1/*.1.gz %{_bindir}/verilator %{_bindir}/verilator_bin %{_bindir}/verilator_bin_dbg -%{_bindir}/verilator_profcfunc %{_bindir}/verilator_coverage %{_bindir}/verilator_coverage_bin_dbg +%{_bindir}/verilator_gantt +%{_bindir}/verilator_profcfunc +%{_datadir}/verilator/bin +%files devel +%license Artistic LICENSE +%{_datadir}/verilator/include %{_libdir}/pkgconfig/verilator.pc +%{_datadir}/verilator/verilator-config*.cmake + +%files doc +%license Artistic LICENSE docs/guide/copyright.rst +%doc Changes README* +%doc docs %changelog -* Sun Jun 07 2015 Scott Tsai - 3.874-1 -- Upstream 3.874 - -* Sat May 02 2015 Kalev Lember - 3.864-2 -- Rebuilt for GCC 5 C++11 ABI change - -* Mon Sep 22 2014 Scott Tsai 3.864-1 -- Upstream 3.864 - -* Mon Aug 18 2014 Fedora Release Engineering - 3.862-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Fri Jun 13 2014 Scott Tsai 3.862-1 -- Upstream 3.862 - -* Sun Jun 08 2014 Fedora Release Engineering - 3.845-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Sun Aug 04 2013 Fedora Release Engineering - 3.845-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Sat Feb 16 2013 Chitlesh Goorah - 3.845-1 -- updated to 3.845 - -* Fri Feb 15 2013 Fedora Release Engineering - 3.805-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sun Jul 22 2012 Fedora Release Engineering - 3.805-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Tue Feb 28 2012 Fedora Release Engineering - 3.805-4 -- Rebuilt for c++ ABI breakage - -* Sat Jan 14 2012 Fedora Release Engineering - 3.805-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Mon Feb 07 2011 Fedora Release Engineering - 3.805-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Sun Nov 07 2010 Chitlesh Goorah - 3.805-1 -- updated to 3.805 - -* Sat Sep 25 2010 Chitlesh Goorah - 3.804-1 -- updated to 3.804 - -* Sun Jul 11 2010 Chitlesh Goorah - 3.803-1 -- updated to 3.803 - -* Fri Jul 24 2009 Lane Brooks - 3.712-1 -- Updated to verilator 3.712 - -* Fri Jun 26 2009 Lane Brooks - 3.711-1 -- Updated to verilator 3.711 -- Added Artistic file -- Fixed permissions on man file - -* Tue Jun 9 2009 Lane Brooks - 3.710-1 -- Updated to verilator 3.710 -- Removed GCC 4.3 patch (no longer necessary) -- Added SYSTEMPERL_INCLUDE to point to perl-SystemPerl rpm install location - -* Fri Jan 9 2009 Lane Brooks - 3.700-1 -- Updated dependancy to newly packaged perl-SystemPerl and removed patch -- Updated to verilator 3.700 -- Added GCC 4.3 patch - -* Fri Jan 2 2009 Lane Brooks - 3.681-2 -- Moved examples from data dir to doc dir - -* Thu Jan 1 2009 Lane Brooks - 3.681-1 -- Updated verilator 3.681 -- Removed gcc 4.3 patch as verilator 3.681 incorporates this fix -- Removed shared object patch as it is possible to do this from Makefile - using environment variables -- Further updates to the spec file per Chitlesh's feedback - -* Sun Oct 26 2008 Lane Brooks - 3.680-3 -- Improved spec file for Fedora integration based on initial feedback - -* Thu Oct 23 2008 Lane Brooks - 3.680-2 -- Added shared object generation patch - -* Thu Oct 16 2008 Lane Brooks - 3.680-1 -- Initial package based on SUSE packages from Guenter Dannoritzer +%autochangelog