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 new file mode 100644 index 0000000..9d91033 --- /dev/null +++ b/.gitignore @@ -0,0 +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/dead.package b/dead.package deleted file mode 100644 index a72aec0..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -epel8-playground decommissioned : https://pagure.io/epel/issue/136 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 new file mode 100644 index 0000000..df68504 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..1ea2d2c --- /dev/null +++ b/verilator.spec @@ -0,0 +1,194 @@ +# 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: 5.040 +Release: %autorelease +Summary: A fast simulator for synthesizable Verilog +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 +where fast simulation performance is of primary concern, and is +especially well suited to create executable models of CPUs for +embedded software design teams. + +%package devel +Summary: Libraries and header files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%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} +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 +%if 0%{?rhel}%{?centos} +export VERILATOR_SRC_VERSION=epel-%{version} +%else +export VERILATOR_SRC_VERSION=fedora-%{version} +%endif + +%make_build + +%install +%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 + +# 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 +%license Artistic LICENSE +%{_mandir}/man1/*.1.gz +%{_bindir}/verilator +%{_bindir}/verilator_bin +%{_bindir}/verilator_bin_dbg +%{_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 +%autochangelog