Commit Graph

32 Commits

Author SHA1 Message Date
Oliver Tappe
3d9c3125ac Create packages_build folders per build type.
* The content of the preprocessed package-info files and the package
  contents depend on the build type, so we use a different folder for
  each build type.
2014-05-01 13:00:46 +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
Oliver Tappe
a8c098a3ba Replace HAIKU_{BOOTSTRAP,MINIMUM}_BUILD with HAIKU_BUILD_TYPE.
* Instead of separate variables, HAIKU_BUILD_TYPE is set to one of
  'bootstrap', 'minimum' or 'regular'.
* Adjust uses of HAIKU_BOOTSTRAP_BUILD accordingly.
2014-03-22 20:24:07 +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
Ingo Weinhold
af559cd6ee Add DetermineEffectiveHaikuRevision rule
Simplifies PreprocessPackageInfo a bit.
2014-01-19 00:49:10 +01:00
Ingo Weinhold
495b360b6b Add support for explicitly preventing rebuilding packages
Due to depending on dynamically built files, package files will always
be rebuilt when they are needed (e.g. when an image is built). The build
variable HAIKU_DONT_REBUILD_PACKAGES can be defined to prevent
rebuilding existing package files (even ones that are out-of-date).

Main target for this change is buildbot. We want to make sure that the
packages in the repository it builds are exactly identical to the ones
in the images, which may not be the case when the packages are rebuilt
(due to different timestamps of contained files). The respective build
order should be:

1. Build repository.
2. Without cleaning the generated directory, build different image types
   with HAIKU_DONT_REBUILD_PACKAGES defined.
2014-01-18 16:08:57 +01:00
Ingo Weinhold
577411006e Update requires entries for the packages we build
* Add build tool update_package_requires. Given a package info file and
  a repository cache file, it updates the minimum versions of the
  requires entries of the package info file according to what is
  provided by the repository.
* PreprocessPackageInfo rule: Use update_package_requires (with the
  HaikuPorts repository file).
2013-10-30 02:16:14 +01:00
Ingo Weinhold
97d30f2cfb Encode the hrev revision into the package versions 2013-10-10 21:38:07 +02:00
Ingo Weinhold
897d5af7ff Don't code the Haiku version into all the package infos 2013-10-06 01:37:13 +02:00
Ingo Weinhold
2910d9a7e0 PreprocessPackageInfo: add substitution
... HAIKU_SECONDARY_PACKAGING_ARCH_SUFFIX. It's "_<arch>" for a
secondary architecture and "" for the primary one.
2013-08-10 15:04:48 +02:00
Ingo Weinhold
384230184e Filter package infos through sed
%HAIKU_PACKAGING_ARCH% and %HAIKU_SECONDARY_PACKAGING_ARCH% in the
package infos are replaced before filtering them through the C
preprocessor.
2013-08-06 04:11:44 +02:00
Ingo Weinhold
779b940a74 PreprocessPackageInfo: define macro for secondary architecture 2013-08-05 23:25:09 +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
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
ff2e520912 Remove the old "CVS" package rules
... and all their invocations.
2013-06-30 18:59:11 +02:00
Ingo Weinhold
444b035d5d BuildHaikuPackage rule: Locate extract script
Missed that when adding the script. Therefore it would be created in the
current directory and when building multiple packages concurrently the
script would be overwritten.
2013-06-08 00:20:24 +02:00
Ingo Weinhold
48581f9891 FHaikuPackageGrist: Avoid potential package name clashes 2013-06-04 23:59:37 +02:00
Oliver Tappe
59e2e2f3a7 Adjust handling of package infos.
* add HAIKU_PACKAGING_ARCH, which is set to the target packaging 
  architecture
* introduce support for generic package infos, which are package infos
  that are the same for all architectures, except for the declaration
  of the package architecture itself
* move package info files underneath architecture-specific or generic
  folder
2013-06-04 00:24:37 +02:00
Ingo Weinhold
ba96552b6a Support extracting archives to the packages we build
* BuildHaikuPackage rule: Create the script that contains the extraction
  commands.
* build_haiku_package: Add extractFile() function (stripped down version
  from build_haiku_image).

In build_haiku_image the functionality was mainly used to extract the
optional packages, which is no longer done. We still need it e.g. for
the Wifi firmware packages that want to be extracted.
2013-06-01 00:32:07 +02:00
Ingo Weinhold
01c03710f0 BuildHaikuPackage rule: Add grist to package info file
... to avoids clashes with equally named targets.
2013-05-25 01:12:30 +02:00
Ingo Weinhold
06f5437c21 Add HAIKU_PACKAGE_COMPRESSION_LEVEL build variable
It allows to control the compression level used for package creation
and update. The default (9) is *very* slow, so developers may want to
use a smaller level during the regular development process to keep
turn-around times low.
2013-05-25 01:12:26 +02:00
Ingo Weinhold
518840e305 Complete MIME related support for image/package creation
* Update MimeSet rule to use the MIME DB the build system creates.
* Add CreateAppMimeDBEntries rule and call it from Link for targets that
  might be applications that need to be registered with the MIME DB. For
  the target the rule is invoked with it creates a directory into which
  the entries for the types to be registered are written. The directory
  is associated with the target via the HAIKU_MIME_DB_ENTRIES variable.
* AddFilesToContainer: If a target is added that has MIME DB entries,
  also add those to the container.
* build_haiku_package: Call mimeset for the package contents.
2013-05-09 03:38:10 +02:00
Ingo Weinhold
fa5dff5529 Replace various boolean rule parameters by flags
Instead of the boolean alwaysUpdate, isCDPackage, and stripDebugSymbols
parameters use a uniform flags parameter which can contain any of the
respectively supported flags (alwaysUpdate, cdPackage,
stripDebugSymbols, !stripDebugSymbols).
2013-05-07 04:43:50 +02:00
Ingo Weinhold
7c092d4d86 Add build profile action update-packages
Equivalent to "jam <list of all hpkgs> && jam @... <list of all hpkgs>",
i.e. it makes sure all hpkgs that are supposed to be in the image are
rebuilt respectively downloaded and copied to the image. It doesn't
remove old packages nor the activation files -- that still has to be
done manually.
2013-04-21 01:44:21 +02:00
Ingo Weinhold
fd03be4838 ExtractArchiveToContainer: Add update support
Add an alwaysUpdate parameter like the ExtractArchiveTo{Image,Package}
rules have and do the handling in the base rule.
2011-07-17 16:54:58 +02:00
Ingo Weinhold
161d45feb5 Support for package "update" build profile action
* Add global HAIKU_PACKAGES_UPDATE_ONLY build system variable, which is
  set for the "update" and "update-all" build profile actions.
* Change the HAIKU_INCLUDE_IN_CONTAINER_VAR variable on packages to
  HAIKU_INCLUDE_IN_PACKAGES for all packages. The variable is also
  set for the "update" and "update-all" build profile actions.
* Introduce HAIKU_CONTAINER_INHERIT_UPDATE_VARIABLE on container
  variable. If set, the contained variable will be set on the container
  when one or more files in it are updated. It is set on packages so an
  update of a file in a package causes the package to be updated in the
  image.
* Introduce HAIKU_CONTAINER_ALWAYS_CREATE_DIRECTORIES on container
  variable. If set, directories will be created also in update mode. It
  is set on packages.
2011-07-17 16:54:58 +02:00
Ingo Weinhold
ba65f94667 Fix image rules wrt system/ relative entries
* Introduce on-container jam variable HAIKU_CONTAINER_SYSTEM_DIR_TOKENS
  containing the directory tokens relative to the container root to
  refer to system.
* Use the variable in *ToContainer rules that need to put something in
  system.
* AddFilesToContainer: Fix overlooked reference to AddFilesToHaikuImage.
* AddBootModuleSymlinksToContainer: Use relative symlinks. This avoids
  special-casing in the boot loader for packagefs.
2011-07-17 16:54:17 +02:00
Ingo Weinhold
2bda1e84fe Package rule: introduce current package notion
The HaikuPackage rule now sets the variable
HAIKU_CURRENTLY_BUILT_HAIKU_PACKAGE to the given package and all
*ToPackage rules use that instead of a parameter. This saves passing the
package in each of those rule invocations.
2011-07-17 16:54:13 +02:00
Ingo Weinhold
dcdeed6176 AddDirectoryTo{HaikuImage,...} refactoring
Move common code from AddDirectoryToHaikuImage/AddDirectoryToPackage to
AddDirectoryToContainer. AddDirectoryToPackage was incorrect, using an
incorrect search directory for the attribute files.
2011-07-17 16:54:12 +02:00
Ingo Weinhold
355b8ba755 Build a system Haiku package
* Create rules (build/jam/PackageRules) and a script,
  build_haiku_package, to build hpkg files.
* Move all rule invocations that copy files and created symlinks and
  directories in the "system" directory from HaikuImage to
  HaikuPackages, which creates a package "haiku.hpkg".
* build_haiku_image: Comment out adding the copyrights info to
  AboutSystem for the moment.
2011-07-17 16:54:11 +02:00
Ingo Weinhold
fa2a531aa8 The Copy rule respects an already set SEARCH path now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16262 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-02-06 23:04:01 +00:00
Ingo Weinhold
338b8dc301 Merged changes from branch build_system_redesign at revision 14573.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14574 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-29 16:27:43 +00:00