-
Notifications
You must be signed in to change notification settings - Fork 3.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
Generate Debian packages for the ROS packages in Autoware.core and Autoware.universe #3222
Comments
I made some changes to actions to support a differential build. I would like to decide a release operation of Autoware and propose features to upstream to support it. https://github.com/tier4/autoware-apt-testing/tree/main The features I think we need are:
So first, we need to decide how to release Autoware and how to manage the package version. |
My idea is that each package will only build when the version tag in package.xml is changed, and the repository keeps all previously built versions. |
@isamu-takagi thanks for listing all the features, really nice. I prefer to follow what MoveIt is doing: https://github.com/moveit/moveit2_packages/blob/main/.github/workflows/build.yaml#L6 it runs once every day (in MoveIt's case, at 1:17am), so there's no need for differential builds, because it doesn't runs when a new branch is merged. But I think using the version from package.xml would be a useful alternative to using tags, though it's strongly encouraged for ROS packages/repositories to use tags for every new release. |
@isamu-takagi I tried adding you as an assignee to this issue, but for some reason your username does not show up on the list. @kenji-miyake do you know why I can't add @isamu-takagi ? |
My concern is that the build takes a long time. If the dependent packages have not changed, it is efficient to use the released ones.
I think there is a request to use the old package version. in this case, If the package has not changed, the same binary will be generated as a different version. |
@esteve Hmm, sorry I'm not sure. I believe you have Maintain access to this repository. |
I measured about a minute for a package that is already in ccache on the free Github VMs. We can speed it up by using a ram disk if we have more powerful VMs. Also we think about parallelizing the build.
Currently the package includes the date as a Debian revision to make sure new version are recognized as an update by apt. This is the same for the OSRF buildfarm. Generating a Debian revision only in case of a change is not trivial but we can discuss that. Can you please send relevant patches upstream so we can discuss them? |
We will when we feel like we have something that can be upstreamed, until then we'll continue with our experiments here. |
isamu-takagi/ros-deb-builder-action#1
The autoware.universe repository contains a lot of packages, so versioning with tags is not suitable. Multiple versions of deb packages for each tag is generated even if the code of stable package hasn't changed. So in current repository structure, we need versioning for each package. If versioning by tag, the autoware.universe repository should be divided into multiple small repositories. This allows the repository/package maintainers to set the version at their release timing.
|
Fine with me. I'm also open to a video call if you are interested.
I think that is a good idea in general (though unrelated to packaging) as monorepos do not work well with git.
Not sure I got you here but it is also possible to pass extra apt repositories to sbuild via SBUILD_CONF. |
What do you think about this? @mitsudome-r @yukkysaito @kenji-miyake @xmfcx |
We can do that, @isamu-takagi is based in Japan and I'm in Spain, I'll send you an email. |
@isamu-takagi Are you considering a repository split for each package? Or per component? Or instead of splitting the repository and releasing them separately, how about deb-package and release each one at the time of semantic version release on autoware? |
@isamu-takagi I think flexible ways are better ways. I mean, reading the version in |
Note that the |
What is the difference between tag and package.xml? New commits will have the same version unless a new tag is created. I think it can be replaced by just updating the package.xml instead of creating the tag. Did I miss something? |
Using |
Note that this is mostly relevant when creating packages for non tagged versions such as nightly builds. For tagged release builds |
I understood. At least, if it has a build time suffix as debian version, either tag or package.xml is fine. But using |
Interesting, can you share a log when it works for you? |
CUDA / TVM dependent packages
Oh it's even better then.
Yes, I understand, thanks.
I have 3 reasons to not move them into another repository:
But if everyone agrees, I'm ok with having a separate repository containing CUDA dependent repositories. |
A few notes. The current state of TVM support in Autoware doesn't allow to run inference using CUDA backend (at least not in the CI-enabled way we currently do it). There is a blocker in the deployment of the runtime TVM library that needs to be compiled with CUDA support, but then it prevents using the CUDA-enabled runtime library in a non-CUDA environment. Which goes against the plan of having a single tvm_vendor package (see this discussion for more info). The currently supported backends (for Autoware packages) are: CPU, Vulkan and OpenCL (but not ROCm).To my knowledge, we don't have any performance figures between different backends. Vulkan is nice in that it has a software-only driver with llvmpipe. Although it hasn't been tested for compatibility with the Autoware packages, it could allow to have a release of the TVM packages with something than can run both on CPU-only platforms and on GPU-accelerated platforms. Vulkan is also nice because it is supported by multiple GPU vendors. In the future, as part of OpenADKit, the plan would be to allow compiling several backends as part of the package, with a runtime selection of which to use, but it will take some time before I am able to complete this. cc @kasperornmeck |
@jspricke Bummer, it didn't work. The packages in Nevertheless, would it make sense to add |
I was debating that with myself already, can you open a PR for that so we can discuss? |
|
UpdatesUnsigned pacmod3 repositoryIt's now possible to build
ONNX model filesIn addition to the problems with perception packages depending on CUDA, one thing I forgot to mention is that the following packages download the ONNX models via CMake's
And I presume the We discussed this issue a while ago and decided to leave the |
Create issues:
|
|
I've created the following issues:
Unfortunately, the velodyne repository (https://github.com/tier4/velodyne_vls) does not have an issues tab, @kenji-miyake could you or any of the owners of that repository enable that? Thanks. |
@esteve Thanks for creating all the issues 🙏 I think we can keep the https://github.com/tier4/velodyne_vls as is, and fork it under autowarefoundation with a different name. I will do it right now. Edit: https://github.com/autowarefoundation/velodyne_awf is forked now. And created the issue for it: |
@xmfcx you're welcome 🙂
Thanks, but I think it'd be better to transfer the repository instead of forking it, so that the current maintainers of the TierIV fork can continue working on it. If we fork the TierIV fork, I worry we'll end up with two separate repositories with different commits and again we'll have to reconcile the changes at some point. |
Plan is to archive that TIER IV repository. That way old code will keep working if anyone depends on it. But new development can only be done on the AWF version. Also this will give us time to transition to the new version in the launch files of Autoware. |
Transferring the repo in the Github web interface will add redirects from the old to the new address so everything keeps working. It makes it also easier to discover and is generally preferred. |
Ok tomorrow we can move the repo with @mitsudome-r then. |
Do you have any plans to migrate to Redhat? |
Hello @jiangqii , we don't have any plans for it just yet. But you might try the Docker Installation Method of the Autoware. |
Thank you for your reply. I will try it on non Ubuntu platforms. |
@esteve I've been going over all the issues in the Autoware repository. This issue is massive 😲 and thanks for all your efforts throughout this work. Could you summarize what still needs to be done, what steps are left? I would like to help if possible. |
@xmfcx work on generating Debian packages using the GitHub action is happening at https://github.com/autowarefoundation/autoware-deb-packages, we have packages for all of Autoware, but I'm currently working on adding support for CUDA. However once we have a 1.0 release it'd be useful for users and for us to submit the packages in the Autoware repositories to the official ROS buildfarm so they can be included in future ROS distros and to offload the work to the ROS buildfarm. |
Checklist
Description
Given that Ubuntu is the platform of choice for developing and running Autoware, providing binary Debian packages will help users deploying Autoware
Purpose
Provide Debian packages for our users and developers
Possible approaches
Integrate https://github.com/jspricke/ros-deb-builder-action into our GitHub actions workflow
Definition of done
Debian packages are generated for all ROS packages and can be downloaded from our repositories
build(obstacle_avoidance_planner): added libopencv-dev dependency autoware.universe#2936fix: add pacmod3_msgs repository for pacmod_interface #3287Related issues:
The text was updated successfully, but these errors were encountered: