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

Support for non-data manifest updates #161

Open
gasinvein opened this issue Mar 29, 2021 · 7 comments
Open

Support for non-data manifest updates #161

gasinvein opened this issue Mar 29, 2021 · 7 comments
Labels
enhancement New feature or request needs design

Comments

@gasinvein
Copy link
Collaborator

gasinvein commented Mar 29, 2021

flatpak-external-data-checker could potentially automate tasks other than external data version bumps (despite the name).
Example use-cases (as of now):

We need some sort of abstract enough internal API for that, so this functionality could be easily extended in future as new update tasks appear. Any ideas?

@gasinvein gasinvein added enhancement New feature or request needs design labels Mar 29, 2021
@gasinvein gasinvein changed the title Internal API for non-data manifest updates Support for non-data manifest updates Mar 29, 2021
@wjt
Copy link
Contributor

wjt commented Mar 30, 2021

@barthalion how would this overlap with your plan to write a linter? Maybe this tool should subsume that plan.

@barthalion
Copy link
Member

I don't think it would, at least as long as the primary focus of fedc is to perform updates or migrations like described above. The idea for linter is to automate review process, as on multiple times we've merged apps with some outstanding issues, and also allow app maintainers/submitters to fix these issues before the actual submission.

@vchernin
Copy link
Contributor

Not sure how the implementation should work, but one thing I realized is checking runtimes would probably need to be done with care.

If f-e-d-c runs and checks all repos for old runtimes, it would open a lot of PRs all at once. This would be very noticeable when a new runtime is released. This would probably overwhelm the build infrastructure. So perhaps f-e-d-c should pick 1 repo to open a PR in every time it runs (arbitrary choice). So in a day it would check and try to update 24 repo runtimes. If it can’t find any repos to update runtimes in well that’s a good thing.

f-e-d-c already seems to have a mechanism to "tell" if it’s an opened a PR or not so I guess that would help here? It would get through all repos with old runtimes within a few weeks/months maybe which I think is reasonable.

It also might be a good idea to have an opt out mechanism. Some repos for whatever reason might not want f-e-d-c often PRing about runtimes, permissions or submodules.

@vchernin
Copy link
Contributor

vchernin commented Apr 24, 2022

FYI I started working on this, at least the submodule checker seems reasonably straightforward (including only updating a submodule if a referenced Flatpak module actually changed).

I am unsure on what to call the new checkers though. Right now I am using a placeholder "nonexternaldata" so the submodule checker is a "nonexternaldatachecker". Any better ideas for the name of this new group of checkers (the group including the runtime and submodule checker)?

Also, is an updating tool the right place for permission migrations? IMO it would be better to e.g. warn about gvfs holes in a linter, with suggestions for a fix depending on the problem. With the gvfs migration flathub/flathub#2180, the correct change seems to depend on the app. Are there other examples of permission migrations where f-e-d-c could always correctly make a change?

OTOH, adding migrations here would be easier than writing a whole new tool.

@plata
Copy link

plata commented Oct 25, 2023

If f-e-d-c runs and checks all repos for old runtimes, it would open a lot of PRs all at once. This would be very noticeable when a new runtime is released. This would probably overwhelm the build infrastructure. So perhaps f-e-d-c should pick 1 repo to open a PR in every time it runs (arbitrary choice). So in a day it would check and try to update 24 repo runtimes. If it can’t find any repos to update runtimes in well that’s a good thing.

I'm not sure that this is the best approach. If there is an issue on the build infrastructure site, I believe that also the build infrastructure should handle this (e.g. by throttling/queuing the builds).

@vchernin
Copy link
Contributor

I believe that also the build infrastructure should handle this (e.g. by throttling/queuing the builds).

Well, buildbot may be able to queue everything without breaking. But then you have a considerable mass of builds queued, which are competing with user-triggered builds. Maybe a solution could be to always prioritize builds triggered by users over bot builds, but I don’t know if buildbot supports that.

@Justinzobel
Copy link

Buildbot (or whatever handles build queue) could potentially be modified to understand two queues. One for regular builds and one for lower priority updates. If the regular build queue is empty, pick up a low-priority build. Fedora's Copr infrastructure has this, and it works quite well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request needs design
Projects
None yet
Development

No branches or pull requests

6 participants