51 Commits

Author SHA1 Message Date
Christoph Reiter
3c569263fd Make ExtInfo.version optional instead of special casing an empty version
In case the version is an empty string it is considered newer by pacman
than for example "r123".

Instead make it optional and handle the None version everywhere.

Fixes #68
2024-03-26 13:41:57 +01:00
Christoph Reiter
1c1d538324 pkgextra: get rid of internal flag 2024-01-24 08:36:46 +01:00
Christoph Reiter
eab53769bd Split up the code for the different external sources 2024-01-12 17:40:21 +01:00
Christoph Reiter
76d4b4d39b Run pyupgrade
upgrade everything to 3.10+
2023-11-01 19:28:08 +01:00
Christoph Reiter
f2ed76293f Rename pkgmeta to pkgextra
So things are consistent
2023-09-17 18:59:12 +02:00
Christoph Reiter
22c2b00ac2 Add a basic API for getting a list of package that need to be updated 2023-07-03 20:14:17 +02:00
Christoph Reiter
5ce37b851f oops 2023-04-11 16:43:36 +02:00
Christoph Reiter
d8de6db6e6 Update Python dependencies 2023-04-09 17:23:44 +02:00
Christoph Reiter
3886b42af0 buildqueue: don't take dependencies of replacments
In case a package that is to be built is also replaced we would take
the dependencies of the replacement instead of the real one.
While this usually never happens, as the resulting package will be removed
on upgrades, it is wrong to do so. Don't resolve the package like
pacman would and just use them as is instead
2023-01-04 16:55:00 +01:00
Christoph Reiter
4d5cc2c498 Makedep on base too
Doesn't change anything since it's part of base-devel,
but why not.
2022-12-22 09:14:04 +01:00
Christoph Reiter
073e2db502 Make every package makedepend on base-devel
base-devel is the set of packages makepkg potentially needs,
so always depend on it so things get (1) installed and (2)
built first.

This potentially leads to more cycles, but we can try to clean
up base-devel a bit more.. or just deal with them manually when needed.
2022-12-22 09:10:50 +01:00
Christoph Reiter
76cd6ec28a buildqueue: include the repo version
So we can show the version change in autobuild. Might be usefull
when deciding how to break dep cycles.
2022-04-01 14:30:41 +02:00
Christoph Reiter
b7fe1d8097 buildqueue: drop build sorting
This was initially used to decide the build order, which in turn
decided how dep cycles were broken up.

Cycles are not handled in autobuild, so the order no longer matters.
2022-04-01 14:15:11 +02:00
Christoph Reiter
c3ed2d7227 make sure packages don't depend on themselves 2022-02-23 10:10:32 +01:00
Christoph Reiter
3c41af895f buildqueue: don't throw out dependencies when there is a cycle
ideally we want autobuild to deal with that, somehow..
2022-02-23 09:59:26 +01:00
Christoph Reiter
6e75bd1e28 buildqueue: only look at deps in the queue when breaking a cycle
This doesn't help with the c-ares, nghttp2 problem, but makes it easier
to debug
2022-02-23 09:57:23 +01:00
Christoph Reiter
5913b1f98b Don't mark packages for removal if they still have rdeps
Not perfect, but a start
2022-01-06 16:10:23 +01:00
Christoph Reiter
0e655531d5 buildqueue: also handle packages replacing others
In case a package provides and replaces another one it has higher priority
than the provided package, if that exists.
2022-01-06 15:26:11 +01:00
Christoph Reiter
9784333a0d buildqueue: clean up provides handling
Now that the pkgsrcinfo parsing matches pacman we can depend on it as the only
source and drop the DB fallbacks.

Instead of resolving provides at the end do it right away based on the targeted
DB state (real packages win, then fall back to providers)
2022-01-06 14:35:14 +01:00
Christoph Reiter
fa1bc945be buildqueue: split out some code 2022-01-06 13:50:54 +01:00
Christoph Reiter
13fb300840 Remove the old buildqueue API
No longer used by autobuild
2021-08-26 08:07:42 +02:00
Christoph Reiter
8d011d0e72 api: start using pydantic models for the responses 2021-08-22 10:14:14 +02:00
Christoph Reiter
61ff97a5c8 api: add buildqueue2
Keep the old one for now to make porting easier

See #41
2021-08-21 11:23:04 +02:00
Christoph Reiter
9da32766cd This should be even faster
we compare makedepends count when breaking, so compare two ends of the sorted list
2021-07-12 08:07:48 +02:00
Christoph Reiter
d67bc4a207 sort to break cycles early 2021-07-12 07:05:45 +02:00
Christoph Reiter
0a1435a88f Some cleanups for the update trigger
Use an Event() so we can queue an update during an update as well.
Use lru_cache() for the singleton event.
2021-05-16 19:54:05 +02:00
Christoph Reiter
dca64c5797 api: add an endpoint for triggering an update
Rate limited to once every 5 minutes.
Can be called from GHA for example.
2021-05-16 15:40:45 +02:00
Christoph Reiter
30f6b5a2cc Revert "buildqueue: rework API result structure"
This reverts commit a64b7145a92cc6a959f4bddbb69175bab73189c8.
2021-05-14 14:01:10 +02:00
Christoph Reiter
a64b7145a9 buildqueue: rework API result structure
Add a "builds" map, separating the info for each build type

This is a breaking change.
2021-05-14 13:55:10 +02:00
Christoph Reiter
f83dec1783 api: mark builds as new if their result isn't in the repo yet 2021-05-14 11:44:38 +02:00
Naveen M K
54d8fe06ac Add search API 2021-04-30 06:50:31 +02:00
Christoph Reiter
4f3f3854c1 mypy fixes 2021-04-02 11:02:52 +02:00
Christoph Reiter
d2265bac70 api: expose if we should build a soruce package
In case we only added a new build for the same version there is no need
to build a source package, since it likely already exists in the repo.
2021-04-02 10:53:11 +02:00
Christoph Reiter
02cbcafdd2 Don't give up when breaking cycles 2021-03-27 14:51:28 +01:00
Christoph Reiter
79b082442e buildqueue: break dependency cycles
instead of giving up and using a random order
2021-02-20 07:59:19 +01:00
Christoph Reiter
5634f178e5 Merge the package removals in the update queue
And add an API for it as well
2021-01-23 10:16:38 +01:00
Christoph Reiter
0e95b6bc66 buildqueue: remove query parameters
no longer used/needed
2021-01-17 12:58:58 +01:00
Christoph Reiter
5b30b5971f api: remove include_vcs param
autobuild can deal with them now
2020-10-01 19:03:37 +02:00
Christoph Reiter
63c772b878 api: properly implement dependency sorting
we don't have a transitive relation, so simple sorting doesn't work
2020-10-01 18:40:49 +02:00
Christoph Reiter
321447ab08 Don't fill in provides for existing package names
Fixes #31
2020-09-21 09:08:53 +02:00
Christoph Reiter
87e97f1d07 buildqueue: group all package information by the containing repo
This will allow us to build them one repo/environ at a time
2020-09-15 20:47:08 +02:00
Christoph Reiter
882ad76791 buildqueue: handle multiple packages in the queue providing the same package
Say we have foo and foo-git, both providing foo, then we have to depend on both
and let pacman figure out which to install if it's required in a build.
2020-09-14 08:46:42 +02:00
Christoph Reiter
fff2ee593b buildqueue: Default to not include vcs packages again
Most of them are broken and don't produce the version they advertise,
which makes it hard to deal with them in an automated fashion.
2020-09-14 08:38:44 +02:00
Christoph Reiter
63a4725bb8 Include VCS packages in the buildqueue API 2020-09-13 10:50:13 +02:00
Christoph Reiter
ddbd827d7d api: look at pkgname and not pkgbase for finding new packages
this made PKGBUILDs gaining new packages not show up those packages
2020-08-27 22:16:30 +02:00
Christoph
9dc052cf91 api: expose dependencies between packages in the build queue
The list is still returned in the order in which it should be built
but now also contains a list of dependencies. This allows us to
install them from staging or skip sets of packages if one fails to build.
2020-08-01 14:15:51 +02:00
Christoph Reiter
20aeeb15b9 api: expose pkgbase 2020-07-31 19:43:05 +02:00
Christoph Reiter
8c8597234a Refactor dependency container types 2020-07-11 12:32:46 +02:00
Christoph Reiter
0f769150e2 buildqueue: fix package list missing entries for new packages 2020-07-11 10:12:44 +02:00
Christoph Reiter
0e57b832e5 Add some API for getting the packages to build
This is just a first draft.
2020-07-10 09:45:49 +02:00