summaryrefslogtreecommitdiff
path: root/elements
Commit message (Collapse)AuthorAgeFilesLines
* gnu-toolchain: Use binaries from Baserock releases repo to bootstrapSam Thursfield2017-10-266-51/+20
| | | | | | | | | | | This replaces the previous approach of using the Freedesktop SDK binaries. We need to support more architectures than just x86_32 and x86_64, and in general it's better to bootstrap from a minimal sysroot that we build and control. The binaries are hosted at https://ostree.baserock.org/releases and are produced by a manual (but automatable) process that I will document in subsequent commits from the `bootstrap/stage3-sysroot.bst` element.
* Disable debug section compression in stage3Sam Thursfield2017-10-2611-0/+44
| | | | | | The objcopy tool that we built in stage2 doesn't have zlib support, so it can't handle the `--compress-debug-sections` flag that BuildStream passes by default.
* Add 'stage2-sysroot' and 'stage3-sysroot' elementsSam Thursfield2017-10-252-0/+40
| | | | | | | | | | | | | | | | | | | These each produce a minimal (~300MB) sysroot containing BusyBox, the GNU C/C++ toolchain, and a couple of other components necessary for bootstrapping Baserock reference systems from the ground up. Morph and YBD used tools from the host to bootstrap, which usually worked fine but was occasionally disasterous (such as when GLIBC broke ABI between releases). BuildStream is more strict and requires you to provide binaries to seed its sandbox. The stage2 sysroot can only be used to build the stage3 sysroot, as the stage2 components are configured with a non-standard /tools prefix and the stage3 build instructions have some special casing that is necessary to work with that. The stage3 sysroot can be used to build pretty much anything and is used to seed Baserock reference builds on each platform.
* gnu-toolchain: Fix armv8l64 looking in the wrong place for librariesJonathan Maw2017-10-252-7/+7
|
* gnu-toolchain: Rework linux-api-headers arch conditions and support ppc64bSam Thursfield2017-10-252-36/+78
| | | | | | It's better to use BuildStream arch conditionals than to use shell code, because in the latter case any change will trigger rebuilds for all architectures regardless of which ones it actually affects.
* gnu-toolchain: Remove PATH hack in glibcSam Thursfield2017-10-251-6/+0
| | | | | | | | | | | We now have /tools at the *end* of the PATH rather than the start (which is how it should have been all a long in stage 3) so glibc's configure script will always find `bash` in /usr/bin before it looks in /tools/bin. This also fixes stage3 glibc building against a stage2 sysroot when there's no symlink from /tools/bin -> /usr/bin. This is required for the current cross-bootstrap method.
* gnu-toolchain: Fix ld.so.conf from stage2-eglibc to include lib64Sam Thursfield2017-10-251-0/+3
|
* gnu-toolchain: Set correct sysconfdir for stage2-glibcSam Thursfield2017-10-251-6/+9
| | | | | | | | | | We install the ld.so config to /etc/ld.so.conf in the stage2-glibc element, but the ldconfig tool would look for /tools/etc/ld.so.conf. This caused no problems for a long time, I suppose because we always built on top of sysroots that had an existing /etc/ld.so.cache file. But if `ldconfig` hadn't already been run in the sysroot, builds depending on stage2-glibc would fail as various things would no longer be able to find libz.so due the ldconfig command failing to find its config file.
* gnu-toolchain: Fix libgcc_s.so being installed with a bad symlinkJonathan Maw2017-10-251-3/+3
| | | | | | | | | | | This is currently because fhs-dirs makes /lib a symlink to /usr/lib, and buildstream mangles symlink paths from absolute paths to relative paths. The symlink ../tools/lib/libgcc_s.so ends up in /usr/lib, breaking things. This fixes that by explicitly installing the symlink to /usr/lib
* gnu-toolchain: Make stage2-glibc symlink ld for armv8*64Jonathan Maw2017-10-251-0/+5
| | | | Needed to fix build on armv8
* gnu-toolchain: Make fhs-dirs symlink lib64 on ppc64 archesJonathan Maw2017-10-252-0/+24
| | | | Needed to fix build on ppc64.
* Add a "generic" BSP stackSam Thursfield2017-10-252-0/+310
| | | | This means we no longer try to build syslinux on non-x86 platforms.
* gnu-toolchain: Use new composition operators correctlybenbrown/sam/fix-ciSam Thursfield2017-10-252-12/+18
| | | | | | | | The default behaviour of BuildStream is now for lists to overwrite the previous value when composing them. In the fhs-dirs elements our goal is extend the install commands in certain cases, so we now need to use the (>) operator to cause it to append to the list instead of overwriting.
* gnu-toolchain: Fix debug stripping for cross-builds of stage2Sam Thursfield2017-08-316-0/+24
| | | | | | | | | | | | 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.
* gnu-toolchain: Add /lib64 -> /usr/lib64 symlink on 64-bit archesSam Thursfield2017-08-243-6/+47
| | | | | | | | | | | 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.
* gnu-toolchain: Update components in line with build-essential stratumSam Thursfield2017-08-245-7/+7
|
* Proper support for powerpc64 (little and big endian)Sam Thursfield2017-07-071-4/+10
|
* Support cross-building the stage1 and stage2 componentsSam Thursfield2017-07-078-16/+16
| | | | | | | | | | | | | | 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.
* Update GCC to 7.1.0, and GLIBC to 2.25Sam Thursfield2017-07-077-15/+16
|
* Correct 'track' field for stage2-fhs-dirsSam Thursfield2017-07-071-1/+1
|
* Reworking the gnu toolchain projectTristan Van Berkom2017-04-117-53/+49
| | | | | | | o Use the org.freedesktop.BasePlaform and org.freedesktop.BaseSdk for building instead of the whole GNOME runtime. o Some minor renames
* Moved all elements under the elements directoryTristan Van Berkom2017-03-2230-0/+1323