| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
By default, GitLab CI fetches the artifacts of all previous stages.
Be explicit about which artifacts we do and don't want.
|
| |
|
|
|
|
|
| |
Should we pick up the same runner in another job, artifacts will be
reused from this path.
|
|
|
|
| |
Allows us to only perform the tasks required for each tool.
|
| |
|
|
|
|
|
|
|
|
|
| |
With the previous attempt, storing files in the cache worked OK but
restoring from the cache did not. The symlink workaround wasn't enough
as the symlink gets created /after/ the cache is restored.
Now the whole /builds tree is on a separate Docker volume, so we should
be able to really store the cache inside the build directory.
|
|
|
|
|
|
|
|
|
|
| |
It turns out that downloaded sources have never been shared between
builds. Each container running a build has a `/cache` volume, but
a new volume is created for each container so nothing is shared.
We listed certain paths inside `/cache` to be saved by GitLab CI
between runs using the "distributed runners cache" feature, but
because the paths were outside the build directory it would just ignore
them.
|
|
|
|
|
| |
These are still needed, but are set correctly in the Docker image now so
we don't need to repeat them here.
|
|
|
|
| |
This should give a massive performance improvement.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is possible since this change: https://gitlab.com/BuildStream/buildstream/commit/00e08459c4
Older versions of BuildStream will fail to parse the project.conf file
with this change; I think it's acceptable to force everyone to update
as we are still in the development stage of the BuildStream migration.
If you want to override the configuration for whatever reason you'll
now need to put this in your ~/.config/buildstream.conf file:
projects:
baserock:
artifacts:
pull-url: ...
push-url: ...
If you set a "global" artifacts configuration by doing this...
artifacts:
pull-url: ...
... it'll be ignored because the project-specific config from this
project.conf file will take precedence.
Overriding seems to be done for the whole config block, so if you
only set push-url in your buildstream.conf file it will be interpreted
to mean "set push-url, and unset pull-url" rather than "set push-url
and use the existing value of pull-url."
|
|
|
|
| |
Change-Id: Ia72f4cc835fea6ecc72ab0704f877905f104bc40
|
|
|
|
| |
Change-Id: I767fc41d3336bb7a0fd14d74b7a7ee082ca03193
|
|
|
|
| |
Change-Id: Ifd32ee4809552bf52986431d48ed0e200d7f239d
|
|
|
|
|
|
|
|
|
|
|
| |
In order to bypass:
Cloning repository...
Cloning into '/builds/gitlab/omnibus-gitlab'...
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 104
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
|
|
|
|
|
| |
We don't want to error out here, otherwise builds will only pass on
protected branches.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Builds with BuildStream are intermittently failing with a message like
this:
libtool: install: /usr/bin/install -c .libs/libsvn_delta-1.a /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: install: chmod 644 /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: install: ranlib /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: install: /usr/bin/install -c .libs/libsvn_delta-1.lai /buildstream/install/usr/lib/libsvn_delta-1.la
/usr/bin/ld: cannot find -lsvn_delta-1
collect2: error: ld returned 1 exit status
libtool: install: /usr/bin/install -c .libs/libsvn_delta-1.a /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: install: chmod 644 /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: install: ranlib /buildstream/install/usr/lib/libsvn_delta-1.a
libtool: error: error: relink 'libsvn_ra_serf-1.la' with the above command before installing it
build-outputs.mk:1321: recipe for target 'install-serf-lib' failed
make: *** [install-serf-lib] Error 1
make: *** Waiting for unfinished jobs....
|
|
|
|
|
|
|
|
|
|
|
|
| |
The stage2 elements were all using the default strip-commands which
don't take into account the fact that we might be cross-compiling.
An `objcopy` build for one architecture will ignore binaries for
other architectures that it doesn't understand, so in practice no
stripping was taking place for the stage2 components when we were
doing cross-builds.
With this change, a stage2 sysroot containing just the 'runtime' and
'devel' domains has gone from 889MB to 306MB.
|
|
|
|
|
|
| |
The "downloadable" state is the one we need to special-case. The
"cached" state means that the artifact is cached *locally*, and
BuildStream will already avoid rebuilding it in this case.
|
|
|
|
|
|
|
|
|
|
|
| |
We shouldn't download artifacts to the CI workers every time somebody
pushes just to throw them away again. This should speed up no-op builds.
The functionality is implemented in two shell scripts. Context is here:
https://gitlab.com/BuildStream/buildstream/issues/77
It would be possible to do this with a single script, but I wanted to
avoid doing any argument parsing code in shell.
|
|
|
|
|
|
| |
This is a Fedora 26 image which has BuildStream's dependencies
pre-installed, which saves us waiting to `dnf install` everything
at the start of every CI job.
|
| |
|
|
|
|
|
|
|
| |
There hasn't been a release since v2.2.52, but there are fixes in
'master' which are useful. In particular the build system is now
standard Autotools, and it no longer breaks if /lib64 is a symlink
to /usr/lib64 (upstream commit cd76644ce9b9814a fixes that).
|
|
|
|
|
|
|
|
|
|
|
| |
This is required at least for armv8l64, otherwise the glibc.bst
element installs a symlink in /usr/lib/ld-linux-aarch64.so.2 that
points to a missing file (it expects /usr/lib64/ld-linux-aarch64.so.2
to exist, but if /lib64 is a directory rather than a symlink then
that file ends up only in the /lib64/ directory).
This also makes our filesystem hierarchy more consistent with other
GNU/Linux operating systems.
|
| |
|
| |
|
|
|
|
|
| |
We gained this file when we imported Tristan's gnu-toolchain project, we just
need to update it for building the Baserock reference systems.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
sam/buildstream-autoconvert
This branch contains a manual conversion of the Baserock bootstrap
process to BuildStream. The original branch can be found here:
https://gitlab.com/BuildStream/buildstream-tests/tree/gnu-toolchain
It's not possible to automatically convert the existing Baserock
bootstrap due to differences in how BuildStream works.
|
| |\
| | |
| | |
| | |
| | | |
Update toolchain and allow cross-building
See merge request !9
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
We cannot do long GCC builds using the default GitLab CI runners, we'll
need to provide our own.
|
| | |
| | |
| | |
| | |
| | | |
This is primarly to avoid hitting the 1 hour timeout that seems to be
hardcoded into the CI system. It's also a bit clearer this way.
|
| | |
| | |
| | |
| | |
| | |
| | | |
With an empty cache, every worker must spend 10 minutes pulling all of
the sources that are required. There's no point having 5 workers pulling
the same things in parallel, so the first stage now contains only 1 job.
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This requires a feature recently added to BuildStream (in commit
03906221) that adds a framework for elements to support being
cross-compiled.
To build an armv8l64 native toolchain and sysroot on an x86_64 build
machine, for example, you can do this:
bst build --target-arch=armv8l64 gnu-toolchain/stage2.bst
You can then run `bst checkout` to get at the resulting binaries and
copy them onto an armv8l64 machine where they can be executed.
|
| | | |
|
| | | |
|
| |/ |
|
| |
| |
| |
| |
| |
| |
| | |
o Use the org.freedesktop.BasePlaform and org.freedesktop.BaseSdk
for building instead of the whole GNOME runtime.
o Some minor renames
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This required making sure that fhs-dirs is depended on by anything
which would stage on top of it, as the directory symlinks must come
first.
In this commit the dependencies are listed explicitly, probably
there is a way to do this without being as wordy.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
This is because otherwise we end up using the sysrooted
/tools/sbin/ldconfig, causing the gcc build to fail as it
does not find libz.so which is otherwise properly located
if /sbin/ldconfig is used.
|
| |
| |
| |
| |
| | |
Because the GNOME sdk is no longer there, and ldconfig from stage2
is in /tools/sbin.
|
| |\
| | |
| | |
| | |
| | | |
Don't use ssh urls in the aliases when not needed
See merge request !1
|
| |/ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This huge commit is a manual conversion, notes on what was
needed:
o project.conf defines the arch specific stuff which was
previously hardcoded into YBD, so the stage1 target and target
etc are all defined by the build-essential project.conf
o Direct and easy changes for git source representation
o Added stage1.bst & stage2.bst "stacks", everything built in
stage2 build-depends on stage1.bst, and the final build-essential
products build-depend on stage2.bst (note build-depend means
to depend _only_ for building, not propagated forward).
o Instead of using host tools we build on the GNOME flatpak
sdk/platform bundles
o Some build-essential morph files use $(dirname $(pwd)) for a sysroot,
which is weird, it means the morph files rely on building at one directory
below the slash sysroot - in buildstream we build in /buildstream/build
which is two - had to replace these with $(dirname $(dirname $(pwd))) instead
o Remove the devices sections from the fhs-dirs elements, not allowed
to create static device nodes in buildstream.
|