Commit Graph

35 Commits

Author SHA1 Message Date
Ingo Weinhold
24796718b9 Bootstrap Haiku image: add source for more required packages
* Introduce build variable HAIKU_IMAGE_ADDITIONAL_PACKAGES which can be
  set to add additional packages to the image.
* Use HAIKU_IMAGE_ADDITIONAL_PACKAGES to support specifying a list of
  additional packages via the build-package-list build profile action.
* Add htmldoc and texi2html when building the list of the packages for
  which we need source packages when building the bootstrap Haiku image.
  We don't want them on the regular image, but they are needed to build
  some packages that are on it.
2013-08-17 09:20:35 +02:00
Ingo Weinhold
c965ee60b5 bootstrap image: build needed source packages and add them
* IsPackageAvailable, FetchPackage: Add flags parameter. The only
  flag supported ATM is nameResolved, indicating that the specified
  package name does not need to be resolved with respect to a secondary
  architecture anymore.
* Add build profile action "build-package-list". As an argument the
  file to which the list of all packages needed for the image is
  written. The rule BuildHaikuImagePackageList implements the action.
* BuildBootstrapRepositoryConfig: Does now require the variable
  HAIKU_REPOSITORY_TREE_PATH to be set on the config file target instead
  of hard-coding the path. Allows reuse of the actions.
* Add rules BuildHaikuPortsSourcePackageDirectory and
  BuildHaikuPortsRepositoryConfig. The former builds all HaikuPorts
  source packages needed to build the packages for an alpha image. The
  latter generates a haikuports.conf file for use on the bootstrap
  Haiku.
* HaikuImageBootstrap: Add directory /boot/home/haikuports which
  contains a subdirectory with the source packages and a
  haikuports.conf.
2013-08-06 23:02:10 +02:00
Ingo Weinhold
d31a50eef7 Move build feature rules to separate file 2013-08-05 00:17:46 +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
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
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
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
98c6dfa41e Switch build system from optional package to repositories
* Build libsolv and the dependency solver part of the package kit for
  the build platform.
* Add build tool get_package_dependencies. Given a list of package files
  and a list of repository files it determines the additional packages
  that need to be retrieved from the repositories and prints their URLs.
* Add rules to work with external repositories in the build system
  (build/jam/RepositoryRules):
  - PackageRepository declares an external repository with all its
    packages. The URL of the repository file isn't specified. It is
    computed from a given base URL and the SHA256 hash of the list of
    package files.
  - GeneratedRepositoryPackageList generates a file containing the file
    names of all packages in a repository.
  - IsPackageAvailable returns whether a package is available in any
    repository.
  - PackageURL returns the URL for a package.
* Declare the HaikuPorts repository for x86_gcc2
  (build/jam/repositories/HaikuPorts/x86_gcc2).
* Add rule AddHaikuImagePackages to add a package to the image and rule
  IsHaikuImagePackageAdded to determine whether a package has been
  added.
* OptionalPackages: Remove all entries that just downloaded and
  installed an external package. AddHaikuImagePackages can be used
  instead and is used in the remaining entries. Also move the remaining
  optional package dependency declarations from
  OptionalPackageDependencies here.
* ExtractBuildFeatureArchives: Instead of the URL parameter a package
  name must be specified now. This allows to simplify BuildFeatures
  significantly, since there's no dealing with URLs anymore. "if" out
  the entries that aren't supported yet.
* build_haiku_image: For the packages installed in system and common
  resolve their dependencies and download and install them as well.
2013-07-05 10:51:42 +02:00
Ingo Weinhold
c663ca2171 Merge branch 'master' into package-management
Conflicts:
	build/jam/HaikuImage
	src/system/kernel/arch/x86/64/arch.S
2013-05-12 00:18:19 +02:00
Jérôme Duval
215954e3e3 FFilterByBuildFeatures: fixed typo 2013-05-10 22:31:23 +02:00
Ingo Weinhold
4bee3d6fb9 Add more rules to simplify dealing with build features
* Introduce the notion of build feature attributes and add rules
  SetBuildFeatureAttribute and BuildFeatureAttribute to set respectively
  get a build feature attribute.
* Add rule ExtractBuildFeatureArchives to download and extract archives
  and set build feature attributes to extracted entries.
* Add rule UseBuildFeatureHeaders as a shorthand for getting a build
  feature attribute and adding it as a system header search directory.
2013-05-06 04:31:27 +02:00
Ingo Weinhold
25a7b01d15 Merge branch 'master' into package-management
Additional changes:
* Add src/system/kernel/lib/zlib, which builds a kernel version of zlib,
  needed by packagefs.
* BuildFeatures: Add a build feature "gcc2" to allow for easier checks.
* Referenceable.cpp: Include <OS.h> instead of <debugger.h>. The latter
  is not needed and prevents building for the build platform.
* zlib/zutil.h: Fix gcc 2 build. We really should use the external
  package instead.

Conflicts:
	.gitignore
	build/jam/BuildSetup
	build/jam/FileRules
	build/jam/FloppyBootImage
	build/jam/HaikuImage
	build/jam/ImageRules
	build/jam/KernelRules
	build/jam/NetBootArchive
	build/jam/OptionalBuildFeatures
	build/jam/OptionalLibPackages
	build/jam/OptionalPackageDependencies
	build/jam/OptionalPackages
	build/scripts/build_haiku_image
	configure
	data/bin/installoptionalpackage
	data/system/boot/Bootscript
	headers/os/app/Message.h
	headers/os/package/PackageInfo.h
	headers/os/package/PackageInfoAttributes.h
	headers/os/package/PackageInfoSet.h
	headers/os/package/PackageRoster.h
	headers/os/package/PackageVersion.h
	headers/os/package/hpkg/PackageInfoAttributeValue.h
	headers/os/storage/FindDirectory.h
	headers/os/storage/Node.h
	headers/os/support/StringList.h
	headers/private/system/directories.h
	src/add-ons/kernel/drivers/audio/ac97/es1370/Jamfile
	src/add-ons/kernel/file_systems/packagefs/AttributeIndex.cpp
	src/add-ons/kernel/file_systems/packagefs/Jamfile
	src/add-ons/kernel/file_systems/packagefs/Package.cpp
	src/add-ons/kernel/file_systems/packagefs/Package.h
	src/add-ons/kernel/file_systems/packagefs/PackageDomain.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageDomain.h
	src/add-ons/kernel/file_systems/packagefs/PackageFSRoot.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkDirectory.h
	src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageLinkSymlink.h
	src/add-ons/kernel/file_systems/packagefs/PackageLinksDirectory.cpp
	src/add-ons/kernel/file_systems/packagefs/PackageNode.h
	src/add-ons/kernel/file_systems/packagefs/ResolvableFamily.cpp
	src/add-ons/kernel/file_systems/packagefs/Version.cpp
	src/add-ons/kernel/file_systems/packagefs/Version.h
	src/add-ons/kernel/file_systems/packagefs/Volume.cpp
	src/add-ons/kernel/file_systems/packagefs/Volume.h
	src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp
	src/add-ons/kernel/file_systems/userlandfs/shared/driver_settings.c
	src/apps/deskbar/BarApp.cpp
	src/apps/deskbar/BarMenuBar.cpp
	src/apps/deskbar/BarMenuBar.h
	src/apps/deskbar/BarView.cpp
	src/apps/deskbar/BarView.h
	src/apps/deskbar/BarWindow.cpp
	src/apps/deskbar/BarWindow.h
	src/apps/deskbar/DeskbarMenu.cpp
	src/apps/deskbar/DeskbarMenu.h
	src/apps/deskbar/DeskbarUtils.cpp
	src/apps/deskbar/DeskbarUtils.h
	src/apps/deskbar/ExpandoMenuBar.cpp
	src/apps/deskbar/ExpandoMenuBar.h
	src/apps/deskbar/TeamMenu.cpp
	src/apps/processcontroller/ProcessController.cpp
	src/apps/remotedesktop/RemoteDesktop.cpp
	src/bin/bash/config-top.h
	src/bin/finddir.c
	src/bin/package/Jamfile
	src/bin/package/command_add.cpp
	src/bin/package/command_create.cpp
	src/bin/package/command_list.cpp
	src/bin/package_repo/command_list.cpp
	src/bin/pkgman/command_refresh.cpp
	src/build/libbe/support/Jamfile
	src/build/libpackage/Jamfile
	src/build/libroot/Jamfile
	src/build/libroot/fs.cpp
	src/build/libroot/remapped_functions.h
	src/kits/locale/MutableLocaleRoster.cpp
	src/kits/opengl/GLRendererRoster.cpp
	src/kits/package/PackageInfo.cpp
	src/kits/package/PackageInfoSet.cpp
	src/kits/package/PackageRoster.cpp
	src/kits/package/PackageVersion.cpp
	src/kits/package/RepositoryCache.cpp
	src/kits/package/hpkg/PackageWriterImpl.cpp
	src/kits/package/hpkg/ReaderImplBase.cpp
	src/kits/package/hpkg/WriterImplBase.cpp
	src/kits/print/PrintTransport.cpp
	src/kits/print/Printer.cpp
	src/kits/screensaver/ScreenSaverRunner.cpp
	src/kits/support/StringList.cpp
	src/kits/tracker/ContainerWindow.cpp
	src/kits/tracker/DeskWindow.cpp
	src/kits/tracker/PoseView.cpp
	src/libs/print/libprint/Transport.cpp
	src/preferences/printers/AddPrinterDialog.cpp
	src/preferences/screensaver/ScreenSaverWindow.cpp
	src/servers/debug/DebugServer.cpp
	src/servers/input/AddOnManager.cpp
	src/servers/media_addon/MediaAddonServer.cpp
	src/system/boot/Jamfile
	src/system/boot/loader/Jamfile
	src/system/boot/loader/loader.cpp
	src/system/boot/loader/vfs.cpp
	src/system/kernel/fs/vfs.cpp
	src/system/kernel/fs/vfs_boot.cpp
	src/system/libroot/os/find_directory.cpp
	src/system/runtime_loader/runtime_loader.cpp
	src/tools/package/Jamfile
2013-05-05 15:03:26 +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
ffa0014b8e MiscRule: Add new rules to deal with build features
* EnableBuildFeatures: Enables build features.
* FIsBuildFeatureEnabled: Checks whether a build feature is enabled.
* FMatchesBuildFeatures: Checks more complex build feature
  specifications.
* FFilterByBuildFeatures: Filters lists annotated with build feature
  specifications.
2012-12-09 04:07:48 +01: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
Axel Dörfler
364de37ea7 * Added Ingo's explanations as comments to the MakeLocate variants.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-08 17:26:08 +00:00
Matt Madia
9f10e7acc7 Added some documentation about the anyboot images. Verification appreciated.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36601 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-05-03 21:51:58 +00:00
Matt Madia
26b5ececca Create "anyboot-image" and define build profile rules to utilize it.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35871 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-15 23:51:45 +00:00
Ingo Weinhold
0b58d8440c * Prefixed the INCLUDE_GPL_ADDONS variable by "HAIKU_". configure needs to
be run again or generated/build/BuildConfig needs to be adjusted manually.
* Removed bochs debug hack.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-20 13:55:45 +00:00
Ingo Weinhold
a84f41d8a0 Patch by Matt Madia: Added "cd-image" build profile type and "alpha-cd" build
profile. Small changes by myself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30832 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-23 22:19:30 +00:00
Ingo Weinhold
35d0aeac70 Added rule SetupFeatureObjectsDir that simplifies using different output
directories when a certain feature is enabled/disabled/configured a certain
way.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 09:51:01 +00:00
Ingo Weinhold
37aefc9c6f * Moved jam argument processing to new build/jam/CommandLineArguments.
* Check the first argument for "help" as well. If given print a somewhat
  helpful text. Consider this my excuse to close ticket #1883. :-)
* Track available and added optional packages and fail, if an optional package
  is requested that doesn't exist. Closes ticket #3332.
* Check for duplicate build profile definitions and fail if encountered.
  Closes ticket #3333.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29298 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-23 22:33:09 +00:00
Ingo Weinhold
937f717ced Quote the command line arguments, so arguments with whitespace will
work.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27769 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-28 13:45:36 +00:00
Axel Dörfler
29ad53f16a * Added an "update-all" build profile action that updates all files. This can
be used to update an installation without erasing the whole volume (ie. it
  works like install-haiku on BFS capable platforms).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26435 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-15 17:54:58 +00:00
Ingo Weinhold
a0a9d225d3 Added a new fancy build system feature called "build profiles".
Especially people building various kinds of images with different
settings may want to have a look at the respective section in the
UserBuildConfig.ReadMe.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24757 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 20:29:43 +00:00
Ingo Weinhold
be8a6e43ff * Added JAMFILE to the config variables.
* Added additional parameters to DeferredSubInclude. It's now possible
  to specify an alternative Jamfile name.
* Added DeferredSubInclude example to UserBuildConfig.ReadMe showing the
  new feature.
* Moved ExecuteDeferredSubIncludes in the root Jamfile before the
  inclusion of HaikuImage, NetBootArchive etc., so that targets defined
  in the subdirectories are already known there.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24680 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-30 15:34:30 +00:00
Axel Dörfler
7fe764cce5 bonefish: Fixed bug #1346. The relative output directory for the root directory was
computed as '.' which resulted in output path ending with '/.', causing mkdir to choke.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21778 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-07-31 22:37:21 +00:00
Ingo Weinhold
4ce381e26c Fixed "jam run" feature for older shells.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-30 16:55:27 +00:00
Ingo Weinhold
315cfc48ca The ":" to identify a target for the "run" feature must be at the
beginning of the string; it was formerly matched anywhere.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20610 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-08 02:21:10 +00:00
Ingo Weinhold
2c24a1a9f6 New handy build system feature: It is now possible to pass a command
line to jam that contains build targets and that will be executed by
the build system after building the targets and replacing their
occurrences in the command line by their paths. The keyword indicating
such a command line is "run", targets are marked by a leading ":".
E.g.:

  jam -q run ':<build>xres' -l :libtracker.so

This builds the xres tool for the host platform and libtracker.so for
Haiku, and afterwards lists the resources libtracker.so contains. Note,
that this feature requires using Haiku's jam version.

The functionality is implemented by the new RunCommandLine rule, which
can, of course, also be used in the UserBuildConfig.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 03:14:58 +00:00
Ingo Weinhold
f51c147043 Added rules NextID, which returns an numerical ID incremented with each
invocation, and NewUniqueTarget, which returns a unique target name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20597 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-04-06 02:39:37 +00:00
Ingo Weinhold
3f2a43554a * Moved the DeferredSubInclude rules into MiscRules.
* Added new rule HaikuSubInclude for more comfortable subdirectory inclusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20352 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-07 16:01:19 +00:00
Ryan Leavengood
9c55633809 Removing the now unneeded SearchAndReplace and Sed rules. They can always be
added back if need be. There were some building bugs anyhow in these versions.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19507 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-14 00:10:53 +00:00
Ryan Leavengood
dd481a03fc Added a few new rules that do some search and replacing using sed. AFAIK all
our build platforms should have sed support (it is built into Jambase at
least.) I use these rules to do some code generation in my soon to be committed
MarkAs Tracker add-ons.

This works pretty nifty if I do say so myself.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19481 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-13 08:04:23 +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