-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Ubuntu package scripts #5754
Conversation
By the way, I think that GHA would be the ideal place to test these packages if we decide only to support them on common hosts (ie. i686 and/or amd64). It should build Halide in one step, save the binary packages as an artifact, spawn a new, clean VM, and then try installing the package and building / running the apps in a second step. |
OK for now, though I predict that it will be desirable to have aarch64 support for Nuget (at least) in the medium-term future. |
Definitely worth looking into a location we'd be happy(er) to support longterm, but that can wait till everything else is done. (Something at |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
43de6e2
to
b67e378
Compare
The changelist was getting crazy, so I completely redid the history so you can understand the different parts of this PR better. Some things—like the spelling fixes and |
7d1961b
to
09be361
Compare
43aed56
to
8332a8d
Compare
c78a231
to
8b4cc7d
Compare
2fea210
to
ac8e470
Compare
ac8e470
to
a914e5e
Compare
358da41
to
5a5c696
Compare
Running into this with my cross-compiling efforts. It would be nice if we had some MinGW compatibility again... https://metricpanda.com/rival-fortress-update-45-dealing-with-__chkstk-__chkstk_ms-when-cross-compiling-for-windows/ |
Gonna get a hard no on that from me. MinGW is a big pain to support and appears to be an environment rapidly losing mindshare. |
7685e43
to
7672112
Compare
d79ecdf
to
ddc5893
Compare
ddc5893
to
a0d80e5
Compare
a0d80e5
to
17f91c9
Compare
Okay, this is finally ready! I've moved the Nuget stuff into a separate branch ( I'm cross compiling from amd64 Linux to aarch64 Linux and testing with Qemu. There will probably be a follow-up PR to this where I address the extra lintian checks, write some man pages, etc. but this is at a point where I'm comfortable merging it, using the Ubuntu packages myself, and (finally) cutting Halide 12. |
|
||
# Package dependencies. | ||
# TODO: figure out how to get LLVM major version piped in here. | ||
set(CPACK_DEBIAN_HALIDE_RUNTIME_PACKAGE_DEPENDS "llvm-11 (>= 11.0.0)") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this for packaging Halide 11 or Halide 12? (Halide 12 will compile against LLVM11, but should probably preferentially be packaged with LLVM12.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ubuntu 20.04 LTS doesn't package LLVM 12, but it does come with LLVM 11. Maybe it would work to set up LLVM's apt repo, but I think this work can be done in a separate PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might also be worth backporting these changes to v11 to provide Halide 11 + LLVM 11 packages on Ubuntu 20.04.
This PR would add long-awaited Ubuntu package scripts!
Ubuntu
The Ubuntu package is split into runtime, development, and documentation components. Development naturally depends on runtime. The packages have standard names:
libhalideV
,libhalideV-dev
, andlibhalideV-doc
where V is the major version (also the SOVERSION). Naturally, they link to system LLVM.I had created a PPA we can use but apparently launchpad wants source debs instead of binary debs. These have a weird, special format that's poorly documented and---once unpacked---passes through nearly a dozen bespoke debian packaging tools to compile our sources from scratch and feed them through their packaging pipeline. So that's not happening when we can just publish our perfectly good CPack-generated debs on a private APT repo.
GitHub Actions
There is testing for the Ubuntu packages. We create a GHA VM with developer tools for building and packaging Halide, then save the packages to scratch storage before creating a second, fresh VM with a minimal set of tools. The second VM installs the packages and then tests a very basic pipeline in a wide variety of build scenarios to test that our CMake package works as expected and without any special setup. These tests are located in
test/integration
.To-dos
dpkg-shlibdeps
:Fixes #5285