Commit Graph

119 Commits (37b9ea8d5d321e9613997d77648ed010f07acc75)

Author SHA1 Message Date
Valentin David 37b9ea8d5d Load SDK configuration file.
Closes: #148
Approved by: alexlarsson
2018-05-07 15:26:15 +00:00
Valentin David 9d0a01eda4 Use 'libdir' build option.
Closes: #148
Approved by: alexlarsson
2018-05-07 15:26:15 +00:00
Valentin David c5b7a8e645 Add 'libdir' as build option.
Closes: #148
Approved by: alexlarsson
2018-05-07 15:26:15 +00:00
Alexander Larsson 8af638bdd8 flatpak_spawn: Always spawn children untranslated
We need this as we sometimes (like flatpak info) parse the command output.

Closes: #148
Approved by: alexlarsson
2018-05-07 15:26:15 +00:00
Alexander Larsson 1fcd849ce3 When using --download-only skip some checks
When downloading only we will not be building, so we can skip all the checks for dependencies
and for the state-dir properties.

Closes: #145
Approved by: alexlarsson
2018-05-03 15:43:41 +00:00
Alexander Larsson 2391d046c3 Set FLATPAK_BUILDER_N_JOBS in build env
This is set to what flatpak itself would otherwise use for make -jN
and can be used in e.g. buildsystem simple modules.
2018-04-26 11:51:59 +02:00
Alexander Larsson 2d80983775 Add directory source
This adds a source type that copies an entire directory, optionally skipping
some files. Additionally it also skips the .flatpak-directory dir and
the build dir to avoid weird recursion.

Since we can't really checksum an entire directory a dir source is always
rebuilt.

Closes: #136
Approved by: alexlarsson
2018-04-26 07:15:38 +00:00
Alexander Larsson fa37c55e9c cache: Add builder_cache_checksum_random()
This is helpful when you have a source that should trigger a rebuild every time.

Closes: #136
Approved by: alexlarsson
2018-04-26 07:15:38 +00:00
Alexander Larsson aa2601dbb3 flatpak_cp_a: Add support for skipping some source files
Closes: #136
Approved by: alexlarsson
2018-04-26 07:15:38 +00:00
Alexander Larsson 4510aa2359 Add SVN source type
Closes: #135
Approved by: alexlarsson
2018-04-25 17:07:44 +00:00
Alexander Larsson c9df9b89fc Always pass --unshare=network when building sandboxed
It may be the case that we've e.g. specified a custom metadata file that
has network access, so always disable it explicitly during the builds.
2018-04-25 15:41:02 +02:00
Alexander Larsson ed2eabc65b --run: bind-mount both /run/build and /run/build-runtime
We need /run/build-runtime if what we're building was a runtime, and
its not clear what we're building, so just bind both.
2018-04-23 14:19:26 +02:00
Alexander Larsson e779d3c485 Support using app-extensions during the build
This adds add-build-extensions which is similar to add-extensions
except the extension is added at build-init time, so can be
used during the build. It can also optionally be removed after
the build is done.

This depends on the flatpak work in:
  https://github.com/flatpak/flatpak/pull/1598

With this I was able to build the following app which runs 32bit binaries
in a 64bit build:

```
{
    "app-id": "org.example.Multilib",
    "runtime": "org.freedesktop.Platform",
    "sdk": "org.freedesktop.Sdk",
    "runtime-version": "1.6",
    "command": "/usr/bin/true",
    "add-build-extensions": {
        "org.freedesktop.Platform.Compat32": {
            "directory": "lib/32bit",
            "add-ld-path": "lib",
            "version": "1.6"
        }
    },
    "modules": [
        {
            "name": "test 32bit",
            "buildsystem": "simple",
            "build-commands": [
                "ln -s /app/lib/32bit/lib/ld-linux.so.2 /app/lib/ld-linux.so.2",
                "/app/lib/32bit/bin/echo echoing from 32bit world"
            ]
        }
    ]
}
```

Closes: #129
Approved by: alexlarsson
2018-04-23 07:06:07 +00:00
Alexander Larsson 0de0b8d615 Fix non-yaml build 2018-04-19 15:50:49 +02:00
Alexander Larsson 3d62f01610 Record the built extensions in the metadata
This adds a section to the main metadata like:
```
[Build]
built-extension=org.the.App.Locale;
```

This can be used to figure out what refs where built that are
related to the app, for example if you want to bundle them all.

Closes: #128
Approved by: alexlarsson
2018-04-19 12:54:02 +00:00
Ryan Gonzalez e24c2218f1 Add YAML support as an alternative to JSON (closes #2)
Closes: #127
Approved by: alexlarsson
2018-04-19 12:44:38 +00:00
Sam Spilsbury 8eabc27920 manifest: Add support for "extension-tag"
This passes an --extension-tag to flatpak build-init which will
set the "tag" option on the ExtensionOf section in the metadata.

Closes: #126
Approved by: alexlarsson
2018-04-19 11:25:13 +00:00
Alexander Larsson cbca5b5dce Fix --install to not pass --subpath= to flatpak install
This isn't really right, as install doesn't handle an empty subpath
like that. In fact, doing so will break exports.

Closes: #124
Approved by: alexlarsson
2018-04-06 14:25:39 +00:00
Alexander Larsson c844563f7d Don't warn for // and __ key prefixes
This means you can make valid json comments like so:

 "//": "Some comment",

Closes: #122
Approved by: alexlarsson
2018-03-27 14:12:39 +00:00
Alexander Larsson 1619ef1861 Add inherit-sdk-extensions property
This is similar to inherit-extensions, but the extensions
are not also inherited into the platform when it is created.

Closes: #121
Approved by: alexlarsson
2018-03-27 14:10:15 +00:00
Alexander Larsson 7b042c61e6 Add --no-shallow-clone for git mirroring
This is useful e.g. when doing mirroring only, or if your git
has issues with shallow clones.

Closes: #120
Approved by: alexlarsson
2018-03-27 13:41:42 +00:00
Alexander Larsson b9a143cc9c build options: Add prepend-*-path options
This is useful for example if you're using a sdk-extension that
is supposed to override some binaries from /usr/bin.

Closes: #119
Approved by: alexlarsson
2018-03-27 13:18:09 +00:00
Alexander Larsson cd32a386fb ccache: Enforce disabled if not enabled
This makes sure that ccache is disabled if you don't enable
it on the commandline. This makes sense, because we don't
have any persistant location for the ccache files anyway.

Additionally this is done to work around a race condition initializing
~/.ccache/ccache.conf that causes meson builds to error out.

Closes: #118
Approved by: alexlarsson
2018-03-27 12:54:11 +00:00
Alexander Larsson 099bb87b77 git: Look for the correct cache
When cloning a new repo the mirror_dir has a temporary basename, so
use real_mirror_dir when looking for the cached repo.
2018-02-16 11:39:09 +01:00
Alexander Larsson 52c17219eb Add support for -y, passed on to all install commands
This allows you to run --install-from-deps=foo -y to always install all
dependencies. Useful for auto-builders like flathub.

Closes: #107
Approved by: mwleeds
2018-02-16 07:49:17 +00:00
Alexander Larsson 9f72237f3f Update to latest libglnx 2018-02-14 18:46:20 +01:00
Alexander Larsson 1f15907893 Add --socket=fallback-x11 support
This requires a recent flatpak to actually work.
2018-02-14 11:49:33 +01:00
Christian Hergert dce8981162 utils: use g_debug() for debug information
Closes: #100
Approved by: alexlarsson
2018-01-12 10:06:12 +00:00
Christian Hergert 551d245207 manifest: run flatpak on the host if inside of flatpak
This allows us to be run from inside of a flatpak application and
successfully build by proxying the flatpak commands to the host.

Closes: #100
Approved by: alexlarsson
2018-01-12 10:06:12 +00:00
Christian Hergert 1bb6925481 utils: don't pass stderr if silence was requested
Closes: #100
Approved by: alexlarsson
2018-01-12 10:06:12 +00:00
Christian Hergert 897fe1b768 utils: add GSubprocessFlags parameter
This allows us to pass it through in the case we're running in the same
pid namespace as the flatpak-builder process.

Closes: #100
Approved by: alexlarsson
2018-01-12 10:06:12 +00:00
Christian Hergert 1929fd1cc6 utils: clear GUnixFDList before entering main loop
If we do not clear the FDList before entering the main loop, the splice
async command may not complete because the pipe fd is still held. This
fixes an issue where builder_maybe_host_spawnv() hangs indefinitely when
run inside a Flatpak application.

Closes: #100
Approved by: alexlarsson
2018-01-12 10:06:12 +00:00
Alexander Larsson 63e0722cb0 git: When mirroring a new repo, use a temporary destination
This way, if anything fails during the initial pull we can remove it
and not be confused by a partial repo on the next run.

Closes: #98
Approved by: alexlarsson
2018-01-11 09:30:42 +00:00
Alexander Larsson 9b4f14cd45 Add flatpak_file_rename
Closes: #98
Approved by: alexlarsson
2018-01-11 09:30:42 +00:00
Alexander Larsson cd0c9da8f3 Fix --disable-updates for git sources
We lost the ability to not update if a git repo was already checked out.
This fixes that again.

Closes: #98
Approved by: alexlarsson
2018-01-11 09:30:42 +00:00
Alexander Larsson 543f25e8e3 --install: Fix path != NULL assertion when not using --repo
Closes: #86
Approved by: alexlarsson
2017-12-20 10:18:27 +00:00
Alexander Larsson d869c778ce --install: Fix double unref when --repo is not installed
export_repo is an autopr, so we have to ref it.

Closes: #86
Approved by: alexlarsson
2017-12-20 10:18:27 +00:00
Alexander Larsson 5305a17915 --install: Always pass --reinstall
Otherwise the second --install failes

Closes: #85
Approved by: alexlarsson
2017-12-15 13:04:20 +00:00
Alexander Larsson 07240bf3a7 --install: Warn if --require-changes and --install interact badly
If there were no change we didn't export and there might be nothing
to install, so print a notice that we're ignoring the install.

Closes: #85
Approved by: alexlarsson
2017-12-15 13:04:20 +00:00
Alexander Larsson be191a57f1 --install: Don't pass relative path to flatpak install
That is parsed as a remote name, so ensure we pass the absolute pathname.

Closes: #85
Approved by: alexlarsson
2017-12-15 13:04:20 +00:00
Alexander Larsson 050feb1294 Add --install argument
This allows you to build and install the result in a single operation.
If a --repo is given the app is installed from there, otherwise we
build-export it to the flatpak-builder cache repo, which already has
all the objects that are needed in it, so this will not increase
disk-use.

Closes: #81
Approved by: alexlarsson
2017-12-14 09:27:59 +00:00
Alexander Larsson 39ad84c499 flatpak_compose_ref: Remove unused error argument
Closes: #81
Approved by: alexlarsson
2017-12-14 09:27:59 +00:00
Alexander Larsson 61ae14a6b8 Switch to bare-user-only cache repo mode
This means we can build without xattrs

This only affects new caches, old ones will work fine with the
bare-user repo though.

Closes: #80
Approved by: alexlarsson
2017-12-14 08:53:58 +00:00
Alexander Larsson 6a8e2af98f Store cache in canonical format
This stores the cache in the canonical format (i.e. uid/gid 0 and no
weird permissions). This has two advantages, first of all it matches
what flatpak build-export will produce, so diff:ing with the final
result will make things easier to read, shared repos will be smaller,
etc. Secondly, it will allow us to switch to bare-user-only mode which
means we don't need/use xattrs for the build filesystem.

Note: We bump the cache format as the cache will change affecting
e.g. ostree diff between different cachepoints, so this will rebuild
everything once.

Closes: #80
Approved by: alexlarsson
2017-12-14 08:53:58 +00:00
Alexander Larsson c421beb086 cache: Use force_copy instead of hack
We used to have a hack where we used a bare-user cache
and a non-user-mode checkout to force a copy. But these
days ostree has a force_copy mode, so lets just use that.

This doesn't really change anything for now, but it will allow
us later to canonicalize the uid/gid in the cache without then
failing to check out due to permission issues.

Closes: #80
Approved by: alexlarsson
2017-12-14 08:53:58 +00:00
Alexander Larsson 960c36ab88 appdata: Only rename complete matches of the id
We don't want to rename partial hits of the desktop id, nor
inside any other tag.

Fixes https://github.com/flatpak/flatpak/issues/1118

Closes: #83
Approved by: alexlarsson
2017-12-14 08:47:51 +00:00
Alexander Larsson 6529c39083 Support including json snippet for sources
This allows inclusion of sources from an external json source similar
to how we do it for modules.

For example, you can use:

"sources": [
    {
        "type": "shell",
        "commands": [ "echo BEFORE include" ]
    },
    "include.json",
    {
        "type": "shell",
        "commands": [ "echo AFTER include" ]
    }
]

with include.json containing:
[
    {
        "type": "shell",
        "commands": [ "echo Shell 1" ]
    },
    {
        "type": "shell",
        "commands": [ "echo Shell 2" ]
    }
]

This is very useful in the case where the included file is
auto-generated from some other source, such as an npm lockfile.

Closes: #77
Approved by: alexlarsson
2017-12-08 15:00:56 +00:00
Alexander Larsson c572831b21 Add g_autoptr(BuilderObjectList) support
This is a deeply freed GList of GObjects.

Closes: #77
Approved by: alexlarsson
2017-12-08 15:00:56 +00:00
Alexander Larsson 5a6a3a830b Don't require checksum for inline data
This fixes a regression from ac38819106

Closes: #79
Approved by: pwithnall
2017-12-08 11:14:06 +00:00
Alexander Larsson ac38819106 Fix file sources that have no sha256 checksums (but have others)
This was missing from the previous commit, and makes file sources
work just like archive sources.

Closes: #78
Approved by: pwithnall
2017-12-08 09:54:46 +00:00