- Include headers in Python wheel
- Bump the Linux wheel build image to avoid _GLIBCXX_USE_CXX11_ABI
linking issues
- Add cmake file which exports built library
After spending a truly obnoxious amount of time fighting capnp and
libkj, we made the decision to switch to another RPC system. We're no
longer modeling and serializing message types in Capnp and we don't need
the performance which capnp/libkj RPC promises, so there's really no
need for the additional complexity. A slower system which is thread safe
should work fine.
This commit breaks the build in a pretty horrible way and is not
intended to be merged on its own. It simply breaks up the diff.
This PR adds a CI job that deletes caches created by short integrations tests. Almost 10GB is used by short integrations test and I think it's sufficient to have keep most recent ones. By doing that we should be able to keep cache for nightly-integration tests. This PR adds CI job that calls `gh cache delete $id` for results of `gh cache list -k ccache-short-clang-Release-ON-ON`.
```
gh cache list -k ccache-short-clang-Release-ON-ON -L 50
Showing 27 of 27 caches in llvm/circt
ID KEY SIZE CREATED ACCESSED
66695 ccache-short-clang-Release-ON-ON-2024-0... 360.61 MiB about 10 minutes ago about 10 minutes ago
66694 ccache-short-clang-Release-ON-ON-2024-0... 360.33 MiB about 15 minutes ago about 15 minutes ago
66665 ccache-short-clang-Release-ON-ON-2024-0... 357.96 MiB about 13 hours ago about 22 minutes ago
66692 ccache-short-clang-Release-ON-ON-2024-0... 359.77 MiB about 1 hour ago about 1 hour ago
66675 ccache-short-clang-Release-ON-ON-2024-0... 354.45 MiB about 8 hours ago about 8 hours ago
66674 ccache-short-clang-Release-ON-ON-2024-0... 358.33 MiB about 8 hours ago about 8 hours ago
66673 ccache-short-clang-Release-ON-ON-2024-0... 359.41 MiB about 8 hours ago about 8 hours ago
66672 ccache-short-clang-Release-ON-ON-2024-0... 358.70 MiB about 9 hours ago about 8 hours ago
66667 ccache-short-clang-Release-ON-ON-2024-0... 358.85 MiB about 11 hours ago about 11 hours ago
66663 ccache-short-clang-Release-ON-ON-2024-0... 359.24 MiB about 16 hours ago about 13 hours ago
66664 ccache-short-clang-Release-ON-ON-2024-0... 381.06 MiB about 13 hours ago about 13 hours ago
66597 ccache-short-clang-Release-ON-ON-2024-0... 357.85 MiB about 1 day ago about 14 hours ago
66650 ccache-short-clang-Release-ON-ON-2024-0... 374.79 MiB about 21 hours ago about 16 hours ago
66661 ccache-short-clang-Release-ON-ON-2024-0... 376.57 MiB about 17 hours ago about 17 hours ago
66660 ccache-short-clang-Release-ON-ON-2024-0... 375.24 MiB about 17 hours ago about 17 hours ago
66659 ccache-short-clang-Release-ON-ON-2024-0... 377.82 MiB about 17 hours ago about 17 hours ago
66609 ccache-short-clang-Release-ON-ON-2024-0... 354.95 MiB about 1 day ago about 17 hours ago
66658 ccache-short-clang-Release-ON-ON-2024-0... 359.28 MiB about 17 hours ago about 17 hours ago
66651 ccache-short-clang-Release-ON-ON-2024-0... 358.97 MiB about 20 hours ago about 17 hours ago
66657 ccache-short-clang-Release-ON-ON-2024-0... 375.18 MiB about 19 hours ago about 19 hours ago
66656 ccache-short-clang-Release-ON-ON-2024-0... 364.31 MiB about 20 hours ago about 20 hours ago
66655 ccache-short-clang-Release-ON-ON-2024-0... 369.52 MiB about 20 hours ago about 20 hours ago
66654 ccache-short-clang-Release-ON-ON-2024-0... 363.87 MiB about 20 hours ago about 20 hours ago
66653 ccache-short-clang-Release-ON-ON-2024-0... 369.72 MiB about 20 hours ago about 20 hours ago
66652 ccache-short-clang-Release-ON-ON-2024-0... 374.89 MiB about 20 hours ago about 20 hours ago
66647 ccache-short-clang-Release-ON-ON-2024-0... 374.50 MiB about 21 hours ago about 21 hours ago
66649 ccache-short-clang-Release-ON-ON-2024-0... 361.49 MiB about 21 hours ago about 21 hours ago
```
Add a `circt-capi` target that depends on all C API libraries. Introduce
a new `add_circt_public_c_api_library` CMake function that wraps around
the MLIR equivalent, but also adds a dependency from `circt-capi`. Make
at least the short integration tests CI job build the `circt-capi`
target to ensure it has a bit of CI coverage.
Remove possibly confusing language on the conditions for why a wheel was
uploaded. This can happen for several reasons. However, this is too much
to enumerate in the job name since this can now be triggered by request
from a 'workflow_dispatch' event.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
Add an input to the workflow_dispatch even of the "Upload Wheels" GitHub
Action workflow. This is done to enable a user to build the wheels and
upload them without having to wait for a weekly release to do this or
having to ask somebody with the keys to do the upload for them.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
shared build seems to require a specific version of glibc and causes a build failure of downstream tools. This PR adds -static tarball to the artifact.
MSVC fails to build the Slang 3 dependency due to issues in Slang's
`MathUtils.h`. (The file is missing an `#include <limits>`.) Since we
are planning to upgrade to Slang 4 or 5 anyway, don't bother setting up
a full workaround for this issue yet and instead just disable Slang in
MSVC CI builds and installs. Once the Verilog frontend integration
matures and we update Slang, we can go back in and enable MSVC builds
again.
This is the first PR in a longer chain that adds basic SV support to
CIRCT.
Add the Slang Verilog frontend as a CIRCT dependency. This will be the
foundation for CIRCT's Verilog parsing, elaboration, type checking, and
lowering to the core dialects. By default, Slang is built as a static
library from scratch, which is then linked into the new `ImportVerilog`
conversion. Alternatively, CIRCT can also be linked against a local
Slang installation provided by the system.
Add the `ImportVerilog` conversion library. This library statically
links in the Slang dependency and wraps it in an exception-safe,
LLVM-style API. Currently this only consists of the `getSlangVersion`
function and the necessary linking flags to get it to link statically
against Slang.
Add the `circt-verilog` tool, which will provide a fully-flegded
interface to the new `ImportVerilog` library. Later on we'll also add an
MLIR translation library for single-file SV import. But in general, SV
builds take a lot of command line options (macros, search paths, etc.)
and multiple input files, which is why we have a dedicated tool. All the
tool does at the moment is print the linked Slang version. More to come.
Note that this intentionally links against **version 3** of Slang. Newer
versions are available -- 4 and 5 as of this commit -- but they rely on
fairly new C++ compiler features that didn't work out of the box in our
CI images. We'll eventually want to upgrade, but for now Slang 3 is
sufficient to get the ball rolling.
See https://github.com/MikePopoloski/slang for details on Slang.
Co-authored-by: ShiZuoye <albertethon@163.com>
Co-authored-by: hunterzju <hunter_ht@zju.edu.cn>
Co-authored-by: 孙海龙 <hailong.sun@terapines.com>
Self-hosted runners were disabled in our repo, so none of our builds are
being picked up. Going back to the slow ones (with less disk space)
while we figure out the situation.
We are running out of space in PyPI, so this removes support for
versions Python 3.9 and Python 3.11, which are not used by anyone in
the community at the moment. It also reduces the scheduled frequency
of dev wheel builds from nightly to every Monday at noon UTC.
Give write permissions to jobs that upload release assets.
Set the release-tag explicitly so the upload action knows where to upload on manual runs (on a tag). When triggered by a release this isn't needed but doesn't hurt.
Bump the upload-release-assets action v2 -> v3: https://github.com/AButler/upload-release-assets/releases/tag/v3.0
(This is needed for the release-tag support, also fixes a warning about node version).
See if this helps with #6395. Update the sccache key to use the full
runner name and not rely on the OS. The runner may be totally different
and having cache hits by OS doesn't make sense.
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@sifive.com>
The macos-latest tag has been migrated to macos-12, and the version of
cibuildwheel we use doesn't run with the version of Python included in
macos-12 (Python 3.12). Note that this has no bearing on the versions
of Python we build the wheels for; this is the cibuildwheel Python
code that is running on the runner's default Python to set up the
build for the version of Python the wheel is targeting.
To amend this, I am locking to MacOS tag to a specific version, and
updating the cibuildhweel version.
Fixes https://github.com/llvm/circt/issues/6385.
The default `install` command doesn't install LLVM utils Filecheck/not/count. Downstream users of CIRCT might want to use FileCheck directly so this PR adds `-DLLVM_INSTALL_UTILS=On` to cmake options. It increase 1MB of release artifacts (85MB->86MB) so I believe that's ok.
Tested by https://github.com/llvm/circt/actions/runs/6483396914.