-
Notifications
You must be signed in to change notification settings - Fork 23
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 a script for generating import configurations from the live Ignition repositories. #144
base: master
Are you sure you want to change the base?
Add a script for generating import configurations from the live Ignition repositories. #144
Conversation
This setup was using manually curated groups instead of keying from the source package, which will be much more maintainable and opportunistic going forward.
No reviews yet but FYI @j-rivero @chapulina |
This should be enough for our needs 👍 |
Useful to omit transitional packages which are no longer being updated.
Someday this script will "read" this information from a canonical source. But for now thistle dew.
@j-rivero I only just learned about gazebo-tooling/gazebodistro#4 today and it looks like we thought very similarly here. What I like from the script in that repository is that it uses the gazebodistro repos files at runtime to get the base package information, and then includes all dependencies of selected packages from the packages.osrfoundation.org repository. What I like about this script is that it generates the exact configuration file reprepro-updater wants to consume and it can be run on any host platform rather than being dependent on the system repositories for state. I think we should talk through the current status of each script and see which one to concentrate our efforts on. |
Using the current generator script from #144.
I'm giving a try to the tool and can not make it work with python 3.8 and 3.9.5:
Is this kind o hinting support in newer versions or there is a bug somehow?
+1 Did not really like the gazebodistro PR so +1 to merge efforts here. |
expected_group_version = packages_file.packages[p].version | ||
elif packages_file.packages[p].version != expected_group_version: | ||
print(f'{p} in {group.packages[0]} does not match expected version {expected_group_version}', file=sys.stderr) | ||
exit(2) |
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.
exit(2) | |
group.packages.remove(p) |
The check is nice to have. However It can detect problems with versions for orphaned packages, like the bad named libgz-math6-eigen-dev
now renamed to libgz-math6-eigen3-dev
. If we keep the exit after the check, the script can not continue.
A possible path forward would be to leave the warning but remove the package from the expected imports.
Cuts down on the number of iterations required to resolve issues.
This script reads data from the packages.osrfoundation.org repository and prints out a reprepro-updater import configuration.
Caveats and addendums
-stable
repositories, and hard codes the packages in each collection (taking the info at authorship time from ignition-tooling/gazebodistro but does not support fetching the data directly from it at runtime.Packages
file is extremely rudimentary but presently sufficient in order to avoid dependencies outside the Python standard library.But that's enough with the caveats, what cool things does it do?
With a builtin list of igniton collection source packages, it will find and group up all of the binary packages generated by that source and create a valid reprepro import configuration for use in the ros_bootstrap repository. This will make it much easier to keep the bootstrap repository in sync with the current releases from the packages.osrfoundation.org repository and could eventually be run out-of-tree as part of the upstream team's release automation.
#143, #150, #152, and #153 are all created with iterations on this script