Commit Graph

221 Commits

Author SHA1 Message Date
Augustin Cavalier
b3dc16eecb build: Use xorriso instead of mkisofs or genisoimage.
It seems that not all Linux distributions ship an EFI-enabled
cdrtools (i.e. mkisofs takes -e option), Arch being one that
does not.

So instead, we now use xorriso universally, which is
as (or more, in most cases) widely available, and supports
emulating mkisofs with the EFI commands universally.

This also has the added benefit that we can drop genisoimage
support altogether.
2019-01-08 19:31:15 -05:00
Augustin Cavalier
17640964db build_haiku_image: Remove obsolete copyright concatenator.
All third-party software is now packaged and we ship the licenses
directory.
2018-11-15 20:32:22 -05:00
Augustin Cavalier
d8b0a13568 build_cross_tools: export ACLOCAL to stop GCC from trying to use it.
This should fix the build of the crosstools on Haiku, CentOS, and
other platforms with versions of autofools too old or too new for
GCC 7.
2018-11-10 14:41:55 -05:00
waddlesplash
2d9270e859 determine_haiku_revision: Properly get rid of the commit hash.
Change-Id: I3f57b1cd4d819e7f531001d747bf7b103954a918
Reviewed-on: https://review.haiku-os.org/581
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-09-18 19:50:52 +00:00
Augustin Cavalier
563a1a0da1 determine_haiku_revision: Rework "no tag on HEAD" output.
When HEAD is tagged, the output will be identical to what it was
before (the latest hrev tag and nothing else.) When HEAD is not tagged,
and the most recent tag is further back, we now use a format like this:

hrevXXXXX+N(+dirty)

... where N is the number of commits since hrevXXXXX, and +dirty is added
if the working tree is dirty. This is significantly shorter than the
previous model (as it does not have the Git revision.)

Fixes #14445.

Change-Id: Ide7f66cf0ac1c1f05402afc52b6be3b68b66d6dc
Reviewed-on: https://review.haiku-os.org/566
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-09-16 00:09:14 +00:00
waddlesplash
d28caaed68 build_cross_tools: Also touch .in files to prevent their regeneration.
Change-Id: Id893460327fd6db064c6fc0fb4de8e6ada1b1773
Reviewed-on: https://review.haiku-os.org/496
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
2018-08-28 21:27:50 +00:00
waddlesplash
d34addaf3f build_cross_tools: Compile GCC2 as 32-bit everywhere.
It is just straight up broken on most systems without this, as
the same "cast specifies signature type" appears there too.

Exactly why this fixes the problem does not appear to be any more known
than it was when this was first instated in 2012.
2018-08-27 22:25:18 -04:00
waddlesplash
2cf7d49495 build_cross_tools: Touch configure scripts so the Makefiles don't regenerate them. 2018-08-27 19:06:22 -04:00
waddlesplash
75f7932ae2 build_cross_tools_gcc4: Forcibly disable maintainer mode.
This should stop GCC from trying to reconfigure.
2018-08-26 22:24:45 -04:00
waddlesplash
d1feb7cb60 build_cross_tools: Have scripts exit on failure.
Previously they just silently continued, which meant that if part of the
cross-tools build failed, you would have to scroll back pretty far to
see what the failure was.
2018-05-19 14:54:10 -04:00
Alexander von Gluck IV
82876dc4cb build_cross_tools_gcc4: Disable TLS on PowerPC for now
Change-Id: Ib99a1a4aeeb5d17a301ffd1d9c5fcadd37261ebf
2018-02-28 21:46:24 -06:00
Augustin Cavalier
825700d34a configure: Rewrite implementation of --update.
Previously --update was kind of a hack, as it just dumped all
the variables from BuildConfig back into ./configure and attempted
to rerun from there.

Instead, now we store all of the variables and environs configure
was invoked with in the top of BuildConfig and re-call it using them.
This is much more robust, as configure will actually recompute
all of the values from the BuildConfig.

As a side effect, if configure was originally invoked to build crosstools,
it would have done so again, so instead add a check to see if they
exist, and skip them if they do. It's easy enough to delete the
directory if you want to force a crosstools rebuild.

Briefly discussed with mmlr on IRC.
2017-12-04 20:14:18 -05:00
Jessica Hamilton
6cc6f04747 build_cross_tools_gcc4: bring in sync with native compiler.
* Previously, the cross-compiler would generate code that doesn't
  run on Haiku, particularly where TLS is concerned. It also ended
  up with a c++config.h header incompatible with the version in
  the native compiler.
* Now possible to correctly cross-compile rust for Haiku.
2017-09-05 21:41:39 +00:00
Jérôme Duval
03820c114a Update binutils_x86 and binutils for x86_gcc2 and x86_64.
* starting with 2.27, binutils defaults to initfini-array instead of init and fini,
this leads to problems in Haiku, just disable for the time being.
2017-08-06 14:12:28 +02:00
Adrien Destugues
fda0bf77fb Revert "repo rework: Re-add compatibility url field"
Revert "repo rework: Remove stubs; Breaks repo compat."
Revert "repo rework: Remove need for repos to be self-aware"

This reverts commit a2b2f4d642.
This reverts commit 602076ef82.
This reverts commit 5ffaf72c8a.

These changes break the build on Haiku and the ability to create repo
mirrors, for the lack of a replacement for the URL (an UUID was evoked
on the mailing lists, but not implemented).

We are due for a release soon, please don't break the build.
2016-12-10 12:55:56 +01:00
Alexander von Gluck IV
5ffaf72c8a repo rework: Remove need for repos to be self-aware
* See #12917 for details.
* Squashed to one commit to make revert easy if we
  run into any issues.
* pkgman is now pre-attached to the 'current' repo
  version within nightly images so they can be updated
  by default.
* This shouldn't impact us keeping older sets of package
  versions by commit hash for building older hrevs.
* There are XXX stubs with "Kill me". These will need
  to be dropped after users are given sufficent time to
  upgrade. We're dropping a previously required field (url)
  so making this a slowish roll out.
* Makes the repos a lot less restrictive which should
  help PM package building automation be a bit easier.
* Once this stuff smooths out, we'll add UUID's to the
  repo definitions for duplicate repo detection.
2016-12-02 00:41:06 -06:00
François Revol
e409118307 configure: pass proper gdb target for m68k 2016-10-20 13:30:33 +02:00
François Revol
4da6cf8403 configure: allow building GDB along with the buildtools
from a stock GDB source tree.

I was getting tired of doing it manually.

Note the prefix is not exactly the same as the buildtools since the
machine triplet is different, but it's not an issue.

Tested with arm and ppc with GDB 7.8. Might need patching gdbTarget for other archs,
as stock GDB doesn't know about Haiku.
2016-10-20 11:14:50 +02:00
François Revol
96c72d6933 typo 2016-10-20 11:14:50 +02:00
Jérôme Duval
11ece1736c build_cross_tools_gcc4: disable libatomic. 2016-05-03 21:05:31 +02:00
Adrien Destugues
d958d336a8 Try to fix the ARM cross-tools build
* Gcc5 does not allow both --with-arch and --with-cpu anymore, so use just --with-cpu.
2016-03-04 20:04:41 +01:00
François Revol
1c91ed03fa Build binutils with different extra targets depending on arch
EFI support isn't much useful for ARM.

Also add some targets to help debugging binutils on PPC.
2015-04-18 15:14:24 +02:00
Oliver Tappe
8e77a6439a Fix #11458, pt.3: invoking jam from source dir does not work.
* Adjust build_haiku_repository script to invoke package_repo without
  -C <dir>, as that is not needed and has the unintended side-effect
  of rendering relative package paths non-functional.
2014-11-16 15:58:03 +01:00
Ingo Weinhold
96a321df07 bootstrap image: Add remote command execution script
In order to automate the complete bootstrap build process we need a
mechanism to control the second phase which builds the final packages
on the booted bootstrap Haiku. To avoid additional dependencies
(buildbot slave, ssh, rsh,...) we'd have to cross-build, there's now a
pair of simple python scripts that allows executing commands on a remote
machine. The server script (bootstrap_daemon.py) is added to the
bootstrap image and started automatically during the boot.
2014-10-30 16:43:54 +01:00
Oliver Tappe
11ae3c5fe7 Cleanup build system and configuration.
* Drop unused variables from build system that refer to the system
  libraries.
* Drop unused lists of libgcc objects.
* Drop no longer used variables from configuration script.
* Remove no longer needed building of kernel-libgcc and -libsupc++ from
  build_cross_tools_gcc4, only the boot-specific (32-bit) libs are
  built for a x86_64 target.
* Explicitly disable threads and TLS support when building the cross
  compiler, as the only libraries that are used by Haiku's build system
  is the 32-bit libgcc and libsupc++ for the bootloader on x86_64 (and
  for that neither is wanted).
2014-08-13 13:32:45 +02:00
Jessica Hamilton
1a6ec00140 Re-enable TLS on x86_64 when cross-building.
Building gcc on x86_64 with TLS enabled has been fixed,
so this is to keep cross-builds and native builds in
sync.
2014-07-22 21:26:57 +12:00
Arvind S Raj
6d345e6c9d Fixed hrev47542 changeset to become sh compatible.
Signed-off-by: Jessica Hamilton <jessica.l.hamilton@gmail.com>
2014-07-22 14:45:19 +12:00
Arvind S Raj
d1e057eefb Disable building gcc with TLS support since ARM build fails due to undefined references 2014-07-22 02:03:32 +12:00
Jonathan Schleifer
e0650f25c3 Build libsupc++-kernel without TLS 2014-07-20 20:32:34 +02:00
Oliver Tappe
c90d405154 Disable TLS support on x86_64 explicitly.
* Building gcc-4.8.3 on x86_64 with TLS support fails with an internal
  compiler error. Until that problem is fixed, don't use TLS on x86_64,
  which (due to libstdc++ compatibility) requires the same for the
  host cross compiler.
2014-07-03 19:43:24 +02:00
Adrien Destugues
2b103ca8be Enable TLS support in gcc.
Since hrev47198 we have ELF-based TLS support in Haiku. When building
gcc with haikuporter, this is detected by the configure script, but when
cross compiling gcc we need to manually enable it, as no runtime check
can be performed to detect the feature.

This should fix #10938 by avoiding the mix of TLS and non-TLS libstdc++.
2014-06-16 15:19:11 +02:00
Oliver Tappe
d4563ace72 Improve handling of Haiku clone without any tags.
* Error out early with a hint about how to solve the problem (by setting
  HAIKU_REVISION explicitly).
2014-05-31 15:35:24 +02:00
Jérôme Duval
c6d5c94217 Fix test in build_haiku_image. 2014-05-25 23:45:22 +02:00
Oliver Tappe
590b95e96e Add variable noDownloads to build_haiku_image.
* If noDownloads is set, show an error when a download is requested.
2014-05-01 19:45:19 +02:00
Oliver Tappe
8c54af563c Whitespace cleanup in root and 'build' folder.
* Removed trailing whitespace and empty lines at top of files.
2014-05-01 12:55:41 +02:00
PulkoMandy
574dbabb00 Configure the ARM compiler to default to Cortex-A8
Ideally, we would only need to set this in build/jam/board/*, but the
flags set there are not passed to the build of packages. The default is
using some early ARM variant, for which gcc lacks some more atomic
operations and emits calls to helper functions we don't implement.

Setting the default architecture avoids this, as all packages will now
be built to target the Cortex-A8.

Also set the proper VFP version in BeagleBoard config file.

Note this breaks the Verdex and Pi builds, but ARMv7 is what we should
focus on for now. We can try to make older archs work after finishing
the m68k port.
2014-04-22 09:49:32 +02:00
PulkoMandy
b8058ea8ee Disable multilib for the ARM compiler build.
* This avoids mixup of the soft/hard float libs
* It also means we can use the hard-float libs for targets that supports
it
* Again, we could introduce an arm_softfp compiler for targets that
don't have floating point support, with a different gcc build.
2014-04-21 21:21:28 +02:00
Jérôme Duval
b3ece9056d configure: --use-gcc-pipe now affects build_cross_tools_gcc4. 2014-02-09 10:06:43 +01:00
Jérôme Duval
4f57b13404 build_cross_tools_gcc4: enable posix threads.
* build kernel libgcc and libsupc++ with disabled posix threads for all
architectures. We currently change the configuration manually, as gcc
doesn't easily let us reconfigure without a full rebuild.
2014-02-05 23:38:18 +01:00
Jérôme Duval
1e93288e65 build_cross_tools_gcc4: unbreak --use-gcc-graphite.
* added -pipe to CFLAGS, builds are faster and /tmp usage is avoided at the
cost of more memory used.
* replaced ppl by isl as required by gcc 4.8
2014-01-28 19:18:14 +01:00
Ingo Weinhold
12c19e6362 Move creating the Haiku repo info to jam
* PreprocessPackageInfo rule: Pull out new rule
PreprocessPackageOrRepositoryInfo which does the sed substituation and
optionally the filtering through the C preprocessor.
* HaikuRepository rule: Generate the repository info file (from the
given template). No longer do that in the build_haiku_repository
script.
2014-01-19 00:49:10 +01:00
Matt Madia
9f1425e2f4 Use rsync instead of scp for uploading hakiu repository packages. 2013-12-01 07:17:48 -05:00
Matt Madia
62ee6508dd Tweak scp command, to prevent uploading repositoryDir as a subdir of $version.
If for some reason (e.g., a forced rebuild), Buildbot rebuilds the same hrev,
it was possible for the scp command to place the repositoryDir as a subdir
in $arch/$version/, instead of as $arch/version. This should ensure that the
contents of repositoryDir are placed in $arch/$version/.
2013-11-30 20:26:39 -05:00
Matt Madia
c738ee78e9 Added script for uploading the generated haiku repository.
The plan is for Buildbot to utilize this script and upload the packages
for each and every successfully built hrev. That portion is still in
progress.
2013-11-29 22:18:35 -05:00
Jeroen Oortwijn
467f4ab3a8 Fix for whitespace in paths
Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
2013-11-26 02:06:09 +01:00
Ingo Weinhold
d85bab41bd Add target for building a Haiku package repository
* Add rule HaikuRepository to build a repository from a repository info
  file and a list of package files. It calls a build_haiku_repository
  script which does all the work.
* Add target <repository>haiku for building the Haiku package
repository.
  It should be built via "jam -q @alpha-raw build <repository>haiku";
  the build profile is only needed to activate all build features.
2013-11-23 01:46:04 +01:00
Ingo Weinhold
a27d687e2a Name the generated HPKG files properly
* rule AddPackageFilesToHaikuImage: Add "flags" parameter. The only
  supported flag is "nameFromMetaInfo". It causes the packages to be
  copied under their canonical file name onto the image.
* Use the new flag for all generated packages save haiku_loader.hpkg.
2013-10-09 03:48:26 +02:00
Ingo Weinhold
50ffb21291 update-{all,packages} build profile action: empty packages dir
... before copying the new contents to the image. This caters to the
typical use case of updating an existing Haiku, making manual
intervention to get the new packages activated unnecessary. The downside
is that manually added packages will be removed as well.
2013-10-05 22:49:48 +02:00
Ingo Weinhold
f73f5d4c42 Initial changes to remove /boot/common
* find_directory() and hard-coded paths use /boot/system instead of
  /boot/common.
* The build system creates the writable directories in /boot/system
  instead of /boot/common.
* The build system no longer installs any packages in /boot/common.
2013-10-03 21:52:25 +02:00
John Scipione
a7e9ce676f Use uname -s instead of uname -o
...since BSD uname (on OS X at least) doesn't have a -o param, only a -s,
Haiku has both, and both print "Haiku".
2013-09-17 14:40:22 +02:00