Skip to content
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

Repo Transfer Request: colcon-clean #521

Closed
ruffsl opened this issue Jul 28, 2022 · 13 comments
Closed

Repo Transfer Request: colcon-clean #521

ruffsl opened this issue Jul 28, 2022 · 13 comments
Assignees

Comments

@ruffsl
Copy link
Member

ruffsl commented Jul 28, 2022

Request Description

I've authored a colcon extension named colcon-clean to introduce a new clean verb to the colcon CLI:

An extension for colcon-core to clean package workspaces. Enables cleaning of various colcon paths, such as build or install folders, for either the entire workspace or for selected packages with advanced path globing options. In conjunction with colcon-package-selection, this extension can help maintain hygienic build environments while leveraging persistent workspaces for caching by allowing users to finely remove stale artifacts, preserving what can be cached during software development. For example, when pulling various changes into a local workspace to review pull requests, this extension can be used to wipe only the build and install paths for affected packages, ensuring subsequent builds are not cross contaminated from previous jobs.

The repo, demo, and talk for this extension can be viewed here:

Could this extension be transferred to the colcon org and be slated for release?

Additional Notes

This relates to some long standing tickets, including:

The extension's release was previously blocked in debian, but has since be resolved:

This extension is already being used in the wild:

@cottsay
Copy link
Member

cottsay commented Jul 28, 2022

From what I can tell, we will only be able to build a debian for Jammy, which is the only supported Ubuntu version where python3-scantree is released: https://packages.ubuntu.com/search?keywords=python3-scantree&searchon=names&suite=all&section=all

@cottsay cottsay self-assigned this Jul 28, 2022
@ruffsl
Copy link
Member Author

ruffsl commented Jul 29, 2022

Indeed. While I manage to upstream some python dependencies into the recent release of debian, we'd have to packing and host those in the ros apt repo if we'd want to backport these extensions to prior distros. That said, I'm unsure of the colcon version differences between distros, or if there would be any API breaks.

@kledom
Copy link

kledom commented Sep 1, 2022

I don't want to sound rude or anything. But are there any plans here for what happens next?

It's hard for me to understand why, after several years of development, colcon still can't have a "clean" command. A feature that at least any other buildtool that I've heard of has. Hopefully, the problem cannot be any dependencies on some python library?

@cottsay
Copy link
Member

cottsay commented Sep 1, 2022

I started reviewing the extension last week. I'm on vacation for the next week, but I can take a look after that.

You are 100% able to install the extension from pip right now.

@kledom
Copy link

kledom commented Sep 1, 2022

Thanks for the update.
I know that I can install the extension via pip. Maybe it's just me, but mixing apt-installed packages with pip extensions sounds dangerous to me. Also, I would argue that clean should be a basic feature of colcon and come pre-installed (or at least with colcon-common-extensions). Even if typing some rm command doesn't seem that complicated, clean offers a certain extra comfort.

@nuclearsandwich
Copy link
Contributor

Maybe it's just me

I think that this is part of the equation worth focusing on. Colcon itself, by design is not meant to be a kitchen sink system which builds in everything anyone could possibly want, instead it's built ground up as an extensible system.

To me, colcon is not meant to be "universal" like a black hole absorbing everything in its gravitional pull but universal like interlocking brick toys, allowing its users to build exactly the thing they need for a given situation.

Right now there's no set criteria for what gets included in colcon-common-extensions and I expect it will always be at the discretion of the maintainers of that package, but what you consider essential intersected with what everyone else considers essential would eventually encompass every available colcon extension. If colcon-common-extensions doesn't cover the cases you want, it's entirely possible for you to create your own similar metapackge that includes your preferred colcon extensions. I recognize that right now this is stymied by colcon-clean not yet being published in the colcon apt repositories but this is something that we'll hopefully resolve soon.

@ruffsl
Copy link
Member Author

ruffsl commented Sep 19, 2022

@cottsay , any remaining topics to review before releasing this extension?

  • Fix declared target dependencies
  • Port CI to colcon/ci
    • Fix extension for windows
  • Max out code coverage

Should I now transfer ownership to the colcon github org?

@cottsay
Copy link
Member

cottsay commented Sep 21, 2022

This one is good to go. If it won't let you do it, grant me 'owner' on the original repo and I'll transfer it.

@cottsay
Copy link
Member

cottsay commented Sep 30, 2022

@ruffsl, if you're ready, I'd like to transfer this extension into the colcon org now.

@ruffsl
Copy link
Member Author

ruffsl commented Oct 1, 2022

@ruffsl, if you're ready, I'd like to transfer this extension into the colcon org now.

Done! If you could add me back to the repo, that'd also cool.

@Niknu
Copy link

Niknu commented Nov 18, 2022

Is this closed now or not?

@cottsay
Copy link
Member

cottsay commented Nov 18, 2022

The package still needs to be tagged and released.

@ruffsl
Copy link
Member Author

ruffsl commented Dec 15, 2022

This package has been released: colcon/colcon-clean#31 (comment)

@ruffsl ruffsl closed this as completed Dec 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

5 participants