This is currently not a valid use case. Virtuals are empty packages and
if the `build.yaml` is completely empty, nothing could depend on them.
Let's try to not be too smart and build the package image if a source
image is supplied, and fail hardly when we depend on a virtual in build
time.
We don't generate anymore images if packages are empty - those are now
virtuals which just generates empty artifacts.
Virtuals are not meant to be required by other packages in build time,
because it would violate the virtual packages purpose (they are just
useful for runtime).
This test was used to verify version selection of the best match during build
time, not to actually test any build process. Inject steps so images are
actually generated, and they can depend on each others.
When we are swapping packages, we do not run the solver to gather things
to install, but we trust the given list when calling computeInstall. In this case, the assertion
returned by computeInstall is empty, as we force l.Options.NoDeps.
This change generates the assertion list while calling computeSwap so
it's available later when we call ExecuteFinalizer.
This is a breaking change as changes the way packages can be given as
arguments to luet.
From this change, the following applies:
- If a package string contains @, the right part is parsed as version
(e.g. foo/bar@1.1)
- If a package contains "/" and no "@", cat/name is applied (e.g.
foo/bar)
- If a package doesn't contain either, is implied its just a name
without category
- If a package contains "=" at the beginning, the gentoo parsing default
is being used ( e.g. =foo/bar-1.1 )
Fixes#154
- Allows to override the system db and create/remove entries as desired.
The input format is the same metadata as the one generated by the
artifacts. It contains the Package and the file list that we need.
- Add integration test
Closes#47
Annotate the package build time when compiling, and use that from the
client to force upgrade of packages that changed the artifact, but
didn't changed any version.
The client can trigger this behavior with `luet upgrade --sync`
- Adds upgrade --universe and upgrade --universe --clean. It will
attempt to bring the system as much close as the content available in
the repositories. It differs from a standard upgrade which checks
directly that what is pulled in doesn't conflict with the system. In
this new way, we just query the SAT solver to decide that on our
behalf.
- Add uninstall --full-clean. It uses only the SAT solver to uninstall
the package and it will drop as many packages as required (including
revdeps of packages too.
In this way, finalizer in strict environment can override the default
shell used to run commands.
The shell keyword is a list, as it needs to contain the full command +
args.
* cmd/search: Add support for search of the packages
with a specific label.
* review Search method of Repositories for permit
different search modes.
* labels are k/v attributes and could be matched
through label key (with HasLabel method) or through
regex that use "$key" + "=" + "$value"
- Don't sign installed packages during finalizer execution
- Enforce solver constraints: build ALO and AMO rules taking into account
that the current package might not be selected at all.
- Force uninstalls on upgrade
- Enable option to tell uninstall to ignore conflict with the analized system state,
as we don't want any conflict with the installed to raise during the upgrade.
In this way we both force uninstalls and we avoid to check with conflicts
against the current system state which is pending to deletion.
This is due to the fact that now the solver enforces the constraints
and explictly denies two packages of the same version installed.
- Adapt test as now we generate more constraints, which makes the solver more
noisy on the package that are explictly selected or not
It allows to copy build artifact during buildtime. In this way
artifacts between different seed images can be shared
```
retrieve:
- a-test-1.0.package.*
- https://...
```
They will be available under WORKDIR
Add "provides" field in packages (which affect both runtime and buildtime deps).
It replaces all the occurences in the deptree before solving, actually
allowing to swap packages and provide virtuals. Along with a mechanism
for package rename #25.