summaryrefslogtreecommitdiff
path: root/elements/gnu-toolchain
Commit message (Collapse)AuthorAgeFilesLines
* Update buildstream to 1.1.3franred/point-to-Update-buildstream-1.1.3Francisco Redondo Marchena2018-06-047-12/+12
| | | | | | | | | | Set up/Hard code STAGE2_SYSROOT to the root directory instead of calculating it depending on the current directory because buildstream has changed the default value of "build-root" directory and this was causing issues in the stage2 packages. See https://gitlab.com/BuildStream/buildstream/issues/414 for more information. Bump also the SHA of bst-external to fcd1fc365d0250bffe02937c89dcc31d11c299cf
* gnu-toolchain: Split rule improvementssam/split-rulesSam Thursfield2017-12-048-3/+153
| | | | | | | | | | | | | | | | | | | | | | This includes many fixes that result in us being able to produce a minimal OS image or initramfs of a reasonable size. I have built an initramfs of 16MB uncompressed with this change: still a bit bigger than necessary, but much better than the comical ~700MB thing complete with kernel source code and C++ compiler that I got before these changes. Note that the gnu-toolchain stack now puts all the toolchain binaries into the 'devel' artifact. The 'runtime' artifact just contains libraries needed to run programs that are built with that toolchain. We should split this up further in future so that C programs don't depend on libstdc++. Special care is taken for GCC and GLIBC to handle the lib/ and lib64/ split that they do on some 64-bit platforms. We also globally put /usr/src into the devel artifact, which is only useful for the linux.bsp element at present but makes sense as a global rule.
* gnu-toolchain: Use correct target names in Binutils and GCCSam Thursfield2017-12-042-2/+8
| | | | | | | | | | | | | We intended to set the architecture triplet for systems we build to something like x86_64-baserock-linux-gnu. This wasn't actually happening though as nobody had passed the message on to the GCC and Binutils build systems, so we got mixed defaults of x86_64-pc-linux-gnu and x86_64-unknown-linux-gnu. Both GCC and Binutils install files that have the target name in their path, and it's useful when writing split rules if we know in advance what that's actually going to be. Plus it looks neater if we set the vendor field in the architecture triplet correctly!
* gnu-toolchain: Fix comment in base.bstsam/base.bst-commentSam Thursfield2017-11-081-1/+5
|
* Replace use of architecture conditionals with generic project conditionsSam Thursfield2017-11-0510-250/+212
| | | | | | | | | | | | The initial implementation of architecture conditionals has been removed, as the same behaviours can be implemented using the more generic mechanism for conditionals that is being introduced for BuildStream 1.0. We now have two architecture options: build_arch and arch. They are documented in project.conf. The first one controls the build sandbox while the second controls the host and target of the binaries we produce.
* gnu-toolchain: Use new version of base sysrootsam/bootstrap-from-baserock-binariesSam Thursfield2017-10-301-1/+1
|
* gnu-toolchain: Be specific about which `ldconfig` we useSam Thursfield2017-10-301-1/+1
| | | | | | Otherwise, cross builds can try and run a version of `ldconfig` that is built for the target architecture rather than the host, resulting in brokenness.
* 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.
* 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.
* 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-2229-0/+1303