Ettore Di Giacinto
1c1bdca343
Add only-target-package option to luet build
2020-10-06 17:57:57 +02:00
Ettore Di Giacinto
74246780d4
Support templated packages
2020-10-04 19:33:15 +02:00
Daniele Rondina
93187182e5
pkg/compiler: Fix typo on error message
2020-08-19 19:24:46 +02:00
Ettore Di Giacinto
66513955c7
Compute image diffs internally
...
Is it more faster in this way as we already have all the needed folders
to the comparison extracted. In this way we don't repeat I/O operation
twice by calling container-diff.
Do not depend on container-diff anymore
2020-08-05 19:09:45 +02:00
Ettore Di Giacinto
07a1058ac1
Add cli option to skip packages if only metadata is present (without checking the image)
2020-07-17 22:42:03 +02:00
Ettore Di Giacinto
5dcf77c987
Add package buildtimestamp and luet upgrade --sync
...
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`
2020-07-12 15:29:38 +02:00
Ettore Di Giacinto
16e9d7b20c
Use packageImage as builder image fingerprint
...
This allows to have an unique identifier for the builder image id against
different depgraphs combinations. The package fingerprint is not enough,
as an atom could have a difference deptree depending on the requires
constraints.
TODO: Don't use the full image name, but only the hash as a salt
(currently the salt contains ALSO a reference of the image-repository,
as such it doesn't allow to port a tree in a different docker registry)
2020-06-23 18:59:18 +02:00
Ettore Di Giacinto
90a25406a0
Add --full option to build
...
Don't compile dependencies when computing all the compilation specs from
a tree if are among the target deps
Fixes #41
2020-06-06 08:58:18 +02:00
Ettore Di Giacinto
9e0e1199df
Check if image exists before skipping compilation
2020-06-03 21:00:30 +02:00
Ettore Di Giacinto
9971fe9f45
Unique hashes for packages without deps
2020-05-18 19:57:01 +02:00
Ettore Di Giacinto
51711dafba
Add package_dir to pack a spec dir as the main artifact
2020-05-16 21:34:27 +02:00
Ettore Di Giacinto
528f481a7b
Annotate package files in metadata
...
Fixes #87
2020-04-13 10:52:41 +02:00
Daniele Rondina
c2e9176ab2
solver.Order now return error
2020-04-09 17:07:57 +02:00
Ettore Di Giacinto
5e31d940f0
Introduce Packages for []Package
2020-04-04 14:29:08 +02:00
Ettore Di Giacinto
fab2d21ac1
Drop unused function
2020-03-19 22:39:22 +01:00
Ettore Di Giacinto
487239334f
Treat base case with same algorithm of dependencies
2020-03-19 22:37:39 +01:00
Ettore Di Giacinto
69477a0c36
Make uniform build of seeds and packages
2020-03-19 22:34:26 +01:00
Ettore Di Giacinto
67362a3bc1
Drop unused condition
2020-03-19 22:29:34 +01:00
Ettore Di Giacinto
302d18e749
Tag the target image with the computed hash
2020-03-19 22:28:33 +01:00
Ettore Di Giacinto
e3ebfd6bfe
Respect ImageRepository with build --nodeps
2020-02-26 19:00:22 +01:00
Ettore Di Giacinto
07610bc216
Add build option to remove backend artifacts
...
Add keep-exported-images to build to instruct to remove backend artifacts (docker images)
2020-02-21 22:33:18 +01:00
Ettore Di Giacinto
7e16e0cdb6
Add HashFingerprint() to Package and consume it while generating image names
...
In this way we don't depend on the package fingerpint characters while generating images, allowing
to support completely semver (e.g. + character is not allowed in docker images tag).
This change is not backward compatible with images currently already built and will invalidate the cache
2020-02-19 18:28:29 +01:00
Ettore Di Giacinto
2ce427d601
Add Nodeps, Onlydeps and Force options to Compiler
...
See #41
2020-02-18 18:36:44 +01:00
Ettore Di Giacinto
26b94888c3
Skip image building if we pulled them successfully
2020-02-15 22:53:00 +01:00
Ettore Di Giacinto
fcec6c5699
Add Push to hub feature
...
Add to the backends the Push capabilities to push images that were correctly built.
Also expose them to the CLI, along with KeepImg which was hidden.
2020-02-15 14:45:05 +01:00
Ettore Di Giacinto
f329e1d5e0
Add retrieve to compilation spec
...
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
2020-02-13 14:15:43 +01:00
Ettore Di Giacinto
07a154474b
Consume SolverOptions in compiler
2020-02-12 11:21:55 +01:00
Ettore Di Giacinto
d5fd14bceb
Merge branch 'build_clean' into develop
2020-01-05 16:27:31 +01:00
Ettore Di Giacinto
d2abaa9cc1
Add message asserting skip. Also return pointer to allow to edit Options
2020-01-05 16:26:42 +01:00
Ettore Di Giacinto
1d1efad18b
Skip building if artifact already exists
2020-01-05 15:30:16 +01:00
Ettore Di Giacinto
bcc6ce19ea
Move compiler options to its own struct
...
Also add Clean attribute, to handle a future build clean method
2020-01-05 14:32:26 +01:00
Daniele Rondina
7ec36da059
Add --fatal option
...
Close #8
2020-01-03 15:41:45 +01:00
Ettore Di Giacinto
f71c9937c4
Add compression to build CLI
...
Also handle how concurrency is set now.
Adds also an accessor to compiler to set the desired compression type
Refers to #33
2019-12-30 16:35:21 +01:00
Ettore Di Giacinto
475b63be95
Consume concurrency from compiler
...
Refers to #33
2019-12-30 16:35:18 +01:00
Ettore Di Giacinto
d2d72c3fc4
Add package compression type
...
TODO: Handle the path substitution in a separate field
Adds GZip support and allows the compiler to switch compression type.
It also adds Concurrency as a compiler attribute (not consumed yet)
Refers to #33
2019-12-30 16:34:41 +01:00
Ettore Di Giacinto
2fa9c754ae
Move archive helpers to artifact
...
This allow in the future to swap and provide archive/compression methods without hijacking the code.
Refers to #33
2019-12-28 16:48:05 +01:00
Ettore Di Giacinto
15250bd991
Add support for Package provides
...
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 .
2019-12-17 19:32:31 +01:00
Ettore Di Giacinto
fe608469d8
Do not call solver multiple times, reuse same assertion
...
Introduce Cut(), it allows to filter in the assertion to achieve the same hashes
2019-12-14 15:00:16 +01:00
Ettore Di Giacinto
556668fcc4
Make Expand and Revdeps consume a database
2019-12-06 16:28:42 +01:00
Ettore Di Giacinto
097f2ec827
Support includes also on packages coming from unpacked images
2019-12-03 18:15:07 +01:00
Ettore Di Giacinto
2f9d12a248
Add KeepImg and PullFirst options
...
They allow to keep a cache,define an endpoint and pull it first.
Also slim logic in favor of more freedom on backend side
2019-12-02 16:36:55 +01:00
Ettore Di Giacinto
55fa7265e5
Move selection logic to a db accessor #19
...
In this way the compiler consume such accessor, and make it possible to expand whenever used
2019-12-01 19:11:31 +01:00
Ettore Di Giacinto
d0c84d24a0
Expand also when ordering assertions
2019-11-29 19:01:52 +01:00
Ettore Di Giacinto
4031a4ae81
Marshal JSON of package without escapes
...
Otherwise >, < get escaped as JSON does that in favour of browsers
2019-11-29 19:01:50 +01:00
Ettore Di Giacinto
fa46601638
Adapt compiler and installer to Tree removal
2019-11-29 19:01:49 +01:00
Ettore Di Giacinto
1cf5f2eb74
Enhance compile output
2019-11-26 20:11:51 +01:00
Ettore Di Giacinto
caca3fbf8c
Return immediately in case of deps failures
2019-11-26 20:11:27 +01:00
Ettore Di Giacinto
3b9337a03b
Keep the path around after writing the yaml, otherwise compile specs couldn't be found
2019-11-23 18:41:15 +01:00
Ettore Di Giacinto
df78308e98
Annotate artifact metadata after compiling
2019-11-22 21:01:29 +01:00
Ettore Di Giacinto
a39f596e8f
Do not compute diff when package is unpacked
2019-11-17 15:59:52 +01:00
Ettore Di Giacinto
d0b128000d
Clean build dirs for each package after build
2019-11-17 15:59:52 +01:00
Ettore Di Giacinto
dea8ea7f9a
Respect unpack also when compiling images #15
2019-11-17 15:59:48 +01:00
Ettore Di Giacinto
32dea6f7fd
Add Best() to solver for package selection based on version
2019-11-16 14:40:58 +01:00
Ettore Di Giacinto
602f5c68d5
Use emojis for icons
2019-11-16 14:16:59 +01:00
Ettore Di Giacinto
b2060c82e3
Make DB Switchable
...
Fixes races conditions and make the DB Switchable. Also prepare inside
the CompilationSpec the tree of the deps to be built, and parallelize
only the building jobs.
Closes #7
Signed-off-by: Ettore Di Giacinto <mudler@gentoo.org>
2019-11-16 13:26:33 +01:00
Ettore Di Giacinto
c95e0ed91d
Add revdep calculation
...
Add CompilationSpecs type to handle slices of CompilationSpec, to
perform operation such as Unique() and Remove().
Add also dependencies and the spec associated to the Artifact, to track
how the artifact was generated.
Add revdeps compilation wrapper, and unit tests
2019-11-15 18:11:26 +01:00
Ettore Di Giacinto
ccdca66420
Small fixes and enhance output
...
Fixes a small issue with the Spinner which prevented to update the
spinner style. Also respect the temp folders of the output when
extracting the rootfs.
2019-11-14 20:22:49 +01:00
Ettore Di Giacinto
0eef18d75c
Add 'includes' to CompileSpec
...
The includes field is an array of regexp used to indicate what include
inside the packag. It can be omitted to default behavior (all)
2019-11-14 17:43:47 +01:00
Ettore Di Giacinto
08944a22ac
Add unicode icons
2019-11-14 00:14:43 +01:00
Ettore Di Giacinto
d752c0572b
Add unpack field to specify a package used as layer
...
Closes #9
2019-11-13 09:43:54 +01:00
Ettore Di Giacinto
747d0ef9ac
Do not fail in case we cannot remove cached images
...
Add a TODO, we should have a cli flag to treat warnings as fatal
2019-11-12 22:17:51 +01:00
Ettore Di Giacinto
2bbca653fd
Add tree test and minor comment fixups
2019-11-12 17:31:50 +01:00
Ettore Di Giacinto
a7a20358ef
Search in world instead of db (or solver would mismatch)
2019-11-12 17:26:00 +01:00
Ettore Di Giacinto
8c36580722
Use image tags for cache instead of names
2019-11-12 17:24:24 +01:00
Ettore Di Giacinto
b64cf677c6
First order, then drop - or hash would mismatch
2019-11-12 17:24:00 +01:00
Ettore Di Giacinto
4c1c7451e7
Resolve deps before compiling
2019-11-12 08:48:07 +01:00
Ettore Di Giacinto
e7a328bca7
Fix compilation and hash image calculation. Tests fails on spec (installing d)
2019-11-12 00:13:03 +01:00
Ettore Di Giacinto
af49696aff
WIP Compiler for images by solving the deptree
2019-11-11 19:19:13 +01:00
Ettore Di Giacinto
ebd4cfc318
Make Compile work in parallel
...
Also make the spinner thread-safe
2019-11-11 10:22:55 +01:00
Ettore Di Giacinto
ea2a51ce66
Implement compilation with images
...
A compilespec with an image defined (and no seed) can now be compiled,
and an artifact delta is provided at the end of the process.
2019-11-10 10:48:07 +01:00
Ettore Di Giacinto
0672dd792e
Add WIP Compiler steps for rootfs
2019-11-08 19:57:23 +01:00
Ettore Di Giacinto
4ea8f26878
Define a generic Artifact object for now
2019-11-08 19:57:04 +01:00
Ettore Di Giacinto
b2d305bb8d
Add docker service to travis
2019-11-08 18:32:56 +01:00
Ettore Di Giacinto
ff88ff67c2
Add Separate tree for build dependency
...
Reuse the Recipe and extend it to read a separate tree for build
dependencies.
Also add accessors to compilespec to produce dockerfile image format.
2019-11-05 17:36:22 +01:00
Ettore Di Giacinto
b62966ca35
Consume CompilerBackend in Compiler
2019-11-04 17:21:19 +01:00
Ettore Di Giacinto
add0021cfd
Add compiler interfaces and build definition skeleton
...
Create compiler interface with switchable backends. For now it can resolve and
parse a `build.yaml` which is in the same folder as in `definition.yaml`
Add also tests to cover this and new fixtures
2019-11-04 17:21:19 +01:00