2177 Commits

Author SHA1 Message Date
Ingo Weinhold
69c69a7d2a Replace build system vars [PRIVATE_]SYSTEM_LIBS by rules
... HaikuImageGetSystemLibs and HaikuImageGetPrivateSystemLibs.
2013-08-05 23:25:08 +02:00
Oliver Tappe
d20975d920 Fix negated predicate relating to input_server.
* without a secondary arch, jam would complain about not knowing how
  to build <x86_gcc>input_server
2013-08-05 21:44:12 +02:00
Oliver Tappe
0b171ae44a Fix two problems when building without secondary architecture. 2013-08-05 21:36:25 +02:00
Ingo Weinhold
b2b6052e40 ArchitectureSetup: fix library name map
It's too early to use the MultiArch* rules yet, since the TARGET_*
variables haven't been initialized yet.
2013-08-05 18:52:33 +02:00
Ingo Weinhold
93cfb72270 build features/bootstrap repo: support secondary arch
* Add rule FSplitPackageName. It splits a package name into port name
  and package suffix.
* FSetConditionsHold: Rename to FConditionsHold and replace the set
  parameter by a predicate rule parameter, thus adding more flexibility.
* FIsBuildFeatureEnabled: Use the faster check.
* Add rule FQualifiedBuildFeatureName. Given a build feature name, it
  prepends the current packaging architecture to yield a qualified
  feature name. Is used by the other build feature rules so that the
  same build feature can be configured differently for each arch.
* ExtractBuildFeatureArchives: The supplied list is now filtered via
  FFilterByBuildFeatures, allowing for build feature conditions in the
  list.
* Add rule InitArchitectureBuildFeatures. It is called early for each
  configured architecture, setting up some basic build features for it.
  "primary" is set for the primary architecture and a "secondary_<arch>"
  is set for each secondary architecture.
* BuildFeatures: Add secondary architecture support: Use the correct
  paths for libraries and headers (subdir for secondary architecture)
  and configure the icu and zlib sources only for the primary
  architecture.
* BootstrapPackageRepository: The package lists are now filtered via
  FFilterByBuildFeatures, allowing for build feature conditions in the
  lists.
* IsPackageAvailable, FetchPackage: Add secondary architecture support.
* HaikuPortsCross/x86_gcc2: Add icu and zlib x86 secondary packages.

The second stage Haiku cross devel package for the secondary
architecture can now be built.
2013-08-05 07:09:45 +02:00
Ingo Weinhold
f7d5e4c647 ArchitectureSetup: fix library map for secondary arch
The libraries where resolved to the library targets for the primary
architecture.
2013-08-05 06:39:10 +02:00
Ingo Weinhold
de799f73c0 MultiArch* rule: support optional architecture parameter 2013-08-05 06:37:56 +02:00
Ingo Weinhold
d31a50eef7 Move build feature rules to separate file 2013-08-05 00:17:46 +02:00
Oliver Tappe
f30881d7fe Replace makeinfo_bootstrap with texinfo_bootstrap.
* using texinfo_bootstrap has the advantage of allowing implicit
  mapping between _bootstrap packages and the corresponding 
  non-bootstrap packages
2013-08-04 21:05:24 +02:00
Ingo Weinhold
833b6688aa cross devel hpkg: use suffix/subdir for secondary arch
* Libraries for a secondary architectures must be placed in a respective
  subdir.
* Add a suffix to the package name when building for a secondary
  architecture. Looks a bit weird
  ("haiku_cross_devel_sysroot_x86_gcc_x86.hpkg"), but is consistent.
2013-08-03 05:26:25 +02:00
Ingo Weinhold
b0944c78b0 More work towards hybrid support
* All packaging architecture dependent variables do now have a
  respective suffix and are set up for each configured packaging
  architecture, save for the kernel and boot loader variables, which
  are still only set up for the primary architecture.
  For convenience TARGET_PACKAGING_ARCH, TARGET_ARCH, TARGET_LIBSUPC++,
  and TARGET_LIBSTDC++ are set to the respective values for the primary
  packaging architecture by default.
* Introduce a set of MultiArch* rules to help with building targets for
  multiple packaging architectures. Generally the respective targets are
  (additionally) gristed with the packaging architecture. For libraries
  the additional grist is usually omitted for the primary architecture
  (e.g. libroot.so and <x86>libroot.so for x86_gcc2/x86 hybrid), so that
  Jamfiles for targets built only for the primary architecture don't
  need to be changed.
* Add multi-arch build support for all targets needed for the stage 1
  cross devel package as well as for libbe (untested).
2013-08-01 08:54:06 +02:00
Ingo Weinhold
159663ceba Remove no longer needed HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES 2013-08-01 08:54:05 +02:00
Ingo Weinhold
30f0d45ff7 Remove unused Haiku64Image 2013-08-01 08:54:05 +02:00
Ingo Weinhold
c0e8cc1a13 configure: prepare for hybrid support
The goal is to do hybrid builds in a single jam (instead of calling a
sub-jam to build parts with the secondary tool chain). This changeset
adds support to configure to prepare multiple tool chains.

configure:
* Merge option --build-cross-tools-gcc4 into --build-cross-tools. The
  option does now always require a packaging architecture parameter,
  i.e. x86_gcc2 for the legacy tool chain.
* Multiple occurrences of the --build-cross-tools and
  --cross-tools-prefix options are allowed. The first one specifies the
  primary tool chain, the subsequent ones the secondary tool chains.
* All architecture dependent jam variables are now suffixed with the
  name of the packaging architecture. The new HAIKU_PACKAGING_ARCHS
  contains the packaging architectures for the prepared tool chains. The
  first element is for the primary tool chain.
* No longer generate a separate libgccObjects file. Just put the
  respective variable into BuildConfig as well.

build_cross_tools[_gcc4]:
* Replace the <haiku output dir> parameter by a <install dir>
  parameter. This allows to create different cross-tools directories.
  They are simply suffixed by the packaging architecture.

Jamrules:
* For the moment map the variables for the primary tool chain to the
  respective suffix-less variables, so that everything still works as
  before.

The next step is to actually support the secondary tool chains in the
jam build system. This will require quite a bit more butchering, though.
2013-07-25 23:52:49 +02:00
Oliver Tappe
5bb173cf50 Add STXT-translator to the bootstrap image
* without this, StyledEdit wouldn't work
2013-07-24 21:24:07 +02:00
Ingo Weinhold
48b1ed4242 Add all bootstrap packages in DefaultBuildProfiles
* Don't handle the bootstrap case in the main Jamfile. Add all bootstrap
  packages to the image in the profile definition. That's less
  confusing, hopefully.
* Add the missing bootstrap packages (ncurses*, libtool_libltdl). The
  would normally be added in build_haiku_image when the package
  dependencies are resolved, but we don't do that for the bootstrap
  image, since we intentionally leave some dependencies out (e.g. perl)
  because they can be built.
2013-07-23 22:44:32 +02:00
Ingo Weinhold
81bd962f27 Add haikuporter and python to Haiku bootstrap image 2013-07-21 23:58:37 +02:00
Ingo Weinhold
26b0aa1ccd HaikuPortsCross repository: fix binutils, gcc revision mismatch
I don't think it makes that much sense to increment the revisions in
the cross recipes anyway, since there isn't any actual package
repository.
2013-07-21 21:34:02 +02:00
Ingo Weinhold
7b2174a27d BootstrapPackageRepository: serialize package creation
Since haikuporter uses a common directory for building the ports, we
can't build them concurrently. This makes jamming with multiple jobs
safe again.
2013-07-21 19:39:40 +02:00
Ingo Weinhold
a7ab22a0c0 HaikuPortsCross repository: icu_bootstrap is now available 2013-07-21 18:23:45 +02:00
Ingo Weinhold
e173a1ec1c Integrate building the HaikuPorts bootstrap packages
* Add configure option --bootstrap which allows specifying the
  haikuporter and HaikuPorts repository paths.
* Add rules for supporting a second repository type. The
  PackageRepository rule is now private and RemotePackageRepository is
  used for remote repositories. The new BootstrapPackageRepository rule
  is for defining a bootstrap repository (there will probably be only
  the HaikuPorts cross repository) whose packages can be built as needed
  via haikuporter.
* Rename DownloadPackage to FetchPackage.
* Define repository HaikuPortsCross.
* HaikuCrossDevel package(s): There are now two sets of packages: A
  "stage1" set with the same content as before and a final set
  additionally containing the libraries libbe, libnetwork, libpackage.
  Those are needed for building the libsolv bootstrap package while for
  building them we need other bootstrap packages (ICU, libz).

This is basically all that's required to build a bootstrap Haiku
completely from sources, with a few caveats:
* There's no ICU bootstrap recipe yet (so one has to cheat and use the
  prebuilt package ATM).
* Probably doesn't work on Haiku yet (tested on Linux only).
* A 32 bit environment must be used (otherwise building the gcc 2
  bootstrap package fails).
* Building with multiple jobs doesn't work yet, since haikuporter uses
  common directories for building different packages and there's no
  explicit serialization yet.
* Haven't tested the resulting image save for booting it. So it probably
  needs a bit more work before it can actually build the final
  HaikuPorts packages.
2013-07-21 04:10:48 +02:00
Ingo Weinhold
33f23ea80f Remove more stuff from the Haiku bootstrap packages/image
Namely GL/Mesa and libtiff.
2013-07-21 03:34:35 +02:00
Ingo Weinhold
b9eec5192d Include DefaultBuildProfiles earlier
DefaultBuildProfiles is now included earlier (right after BuildSetup).
This allows us to set HAIKU_BOOTSTRAP_BUILD earlier, so it can be used
for the repository selection. The actual build profile definitions,
which cannot be done that early, live in the rule
DefineDefaultBuildProfiles, which is invoked where the file was
previously included.
2013-07-21 03:20:26 +02:00
Ingo Weinhold
d1fe5b98d9 BuildFeature: get rid of hard-coded package versions
... using the new placeholder feature of ExtractBuildFeatureArchives.
2013-07-21 03:13:58 +02:00
Ingo Weinhold
67e84002a1 rule ExtractBuildFeatureArchives: implement placeholders
Add support for placeholders in the attribute values. The values of the
currently supported placeholders depend on the package file name
(package version, actual package and port name, etc.).
2013-07-21 03:12:45 +02:00
Ingo Weinhold
fc8967f1a6 Determine HAIKU_CPU and HAIKU_PACKAGING_ARCH in configure
... instead of in BuildSetup.
2013-07-20 01:01:21 +02:00
Ingo Weinhold
21b3820e86 Add libbsd to cross devel package 2013-07-19 15:14:07 +02:00
Ingo Weinhold
ebb857698e Update bootstrap image/package
Should have been part of the recent merge.
2013-07-15 16:34:41 +02:00
Ingo Weinhold
916e7e75a3 Add debug info packages to HaikuPorts repository 2013-07-12 13:28:17 +02:00
Ingo Weinhold
38f07871ce rule AddRepositoryPackages: add debugInfoPackage parameter
It works just like the sourcePackages parameter.
2013-07-12 13:27:56 +02:00
Ingo Weinhold
3e58289628 DownloadLocatedFile: fix use with older wget version
The option "--no-use-server-timestamps" is apparently newer than
Haiku's wget.
2013-07-11 14:21:47 +02:00
Ingo Weinhold
f20d944bea Update packages grep, ncurses, sed, tar 2013-07-11 14:21:46 +02:00
Ingo Weinhold
7e78b434f4 Merge remote-tracking branch 'haiku/master' into package-management
Conflicts:
	build/jam/HaikuImage
	build/jam/OptionalPackageDependencies
	build/jam/OptionalPackages
	build/scripts/build_cross_tools_gcc4
	src/add-ons/translators/icns/Jamfile
	src/add-ons/translators/jpeg/Jamfile
2013-07-08 14:01:00 +02:00
Ingo Weinhold
c01380b1b7 Move package info pre-processing to jam build system
Also, pre-process all package infos (not only the generic ones) and
define the macro HAIKU_BOOTSTRAP_BUILD, if building a package for a
bootstrap image.
2013-07-07 15:02:29 +02:00
Ingo Weinhold
ec945b7f0d ReleaseBuildProfiles -> Default*, add bootstrap profiles 2013-07-07 14:21:51 +02:00
Ingo Weinhold
78f4c163d4 Beginnings of support for building a bootstrap Haiku image
Copy:
* packages: Haiku -> HaikuBootstrap
* images: HaikuImage -> HaikuImageBootstrap
... and remove some unncessary content.

Setting the jam variable HAIKU_BOOTSTRAP_BUILD enables using the
bootstrap files.
2013-07-07 13:45:38 +02:00
Ingo Weinhold
7aa46ed97d Move common image building code to HaikuImageCommon 2013-07-07 13:21:26 +02:00
Ingo Weinhold
db11a1104c Move common image building code to HaikuImageCommon 2013-07-07 12:32:45 +02:00
Ingo Weinhold
7418499c4a Remove more optional package related left-overs 2013-07-07 11:14:28 +02:00
Ingo Weinhold
2bab2851aa Remove OptionLibPackages 2013-07-07 10:49:20 +02:00
Ingo Weinhold
e8c5236a9c Move image definition jamfiles to build/jam/images 2013-07-07 10:44:43 +02:00
Ingo Weinhold
056e9bb620 Add some more packages to the HaikuPorts repository 2013-07-06 18:06:22 +02:00
Ingo Weinhold
014eed80e2 Change repository directory layout
* Under the base URL there are supposed to be the repository files and a
  subdirectory "packages".
* Fix the repository URL related confusion introduced earlier. The URL
in
  the repository info (and thus in the repository file) is supposed to
  be the base URL for the repository. It is not a (potentially)
  different base URL for the package files. Package and repository
  files were supposed to live in the same directory. Now, by requiring
  the package files to live in a subdirectory -- which can also be a
  symlink -- we gain some flexibility.
  The URL in the repository config is usually the same as the in the
  repository info, unless it refers to a mirror site. This allows for
  mirrors to copy the original repository verbatim.
* Remove the PackageURL rule and introduce a DownloadPackage rule
  instead. The URL for a package file cannot be computed in the jam
  parsing phase anymore, as it contains the hash value of the package
  list.
* BRepositoryConfig: Add PackagesURL() for convenience.
2013-07-06 18:06:02 +02:00
Ingo Weinhold
2afaeda8b7 Copy repository config files to the image
... to common/settings/package-repositories. This way the used
repositories are already known to pkgman.
2013-07-06 02:31:31 +02:00
Ingo Weinhold
d72ce06673 Adjust to changed HaikuPorts repository layout
The package kit actually requires the files "repo", "repo.info",
"repo.sha256" to be located under the repository base URL, so the
approach to name the repository file "repo-<hash>" doesn't work.
Now there's a directory "<hash>" which contains the files.

This commit moves the computation of the hash and downloading the
repository file from the build_haiku_image script to the jam build
system. The repo.info is also downloaded and a repository config file
is generated.
2013-07-06 02:29:51 +02:00
Ingo Weinhold
531a3d42bc Add rule ChecksumFileSHA256 2013-07-06 02:19:51 +02:00
Ingo Weinhold
46686fe6c0 Download*File rules: add optional source target
If specified the path to the source target can be used in the URL via
"$source".
2013-07-06 02:19:38 +02:00
Ingo Weinhold
3758560637 BuildSetup: remove obsolete dir variables 2013-07-06 02:10:10 +02:00
Ingo Weinhold
627626afd4 GeneratedRepositoryPackageList: defeat localization
Set LC_ALL=C, so "sort" produces useful results.
2013-07-05 14:28:09 +02:00
Ingo Weinhold
458b56a68c Also install the be_book package in system 2013-07-05 14:09:09 +02:00