Commit Graph

168 Commits

Author SHA1 Message Date
Ingo Weinhold
85eed25cdd AddHaikuImagePackages/IsHaikuImagePackageAdded: 2ndary arch fix
For the secondary architecture the same specified package name means a
different package, so we need to use the mapped name IsPackageAvailable
returns.
2013-08-06 03:24:14 +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
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
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
7418499c4a Remove more optional package related left-overs 2013-07-07 11:14:28 +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
301f4b463a Expander: also read rules from data directories
* ExpanderSettings: Use a settings directory "expander" and rename
  settings file to "settings".
* ExpanderRules: Read expander rules from "rules" files in the settings
  directory, then from files in expander/rules subdirectories of the
  installation location data directories, and finally add the built-in
  rules. This allows packages to provide expander rules (as already
  done by the p7zip package).
* OptionalPackages: Remove AddExpanderRuleToHaikuImage invocations.
* ImageRules: Remove Expander rule file related rules.
2013-06-30 13:29:48 +02:00
Alexander von Gluck IV
67b2c0fee3 PowerPC: Transition back to CHRP script.
* After examining MacOS toolbox roms, I think i've got
  this nailed down. The MacOS Toolbox rom contains chrp
  code at the top and binary code at the bottom.
* The Raw format for the chrp seemed to cause issues with the
  OpenFirmware boot process on some systems.  NetBSD uses a '-'
  file type.
* The format of the chrp seems a lot more sensitive across machines
  than described. Ensure our returns and spaces are even.
* Booting with the 'c' key is still working on my older OpenFirmware
  machine with the chrp script. The bitmap logo is a half black, half
  white box.
* I removed the &device; alias for now for troubleshooing. It also may
  of been causing compatibility issues. More testing is needed.
2013-06-05 03:24:42 -05:00
Alexander von Gluck IV
1072a5e777 PowerPC: Fix 'c' key booting of CD on Apple hardware
* It seems like not all NewWorld OpenFirmware
  versions support booting from CHRP scripts.
* Move Haiku elf bootloader into bootloader.b
  type tbxi. As it is in the blessed directory
  it is picked up by cd:,\\:tbxi
* Adjust bootinfo.txt to point to bootloader
  &device; ensures that the image can be started
  regardless of source media
* Adjust bootinfo.txt to use \\ as base. \\ is an
  alias for the blessed folder on the boot media
* Rename ofboot.b to ofboot.chrp to avoid confusion
* Add .txt, .html to hfs.map to identify them properly
* The haiku-boot-cd-ppc.iso now boots on my G3 PowerBook
  by holding the 'c' key at startup. The boot menu colors
  are incorrect (white background) but it is a step in
  the right direction.
* New chrp script. Blank icon for the moment, if someone
  could figure out how to make a chrp icon that would be
  neat.
* Tested working on qemu and real hardware. Need to test
  on a more modern PowerPC Mac however.
2013-06-04 22:08:25 -05: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
f666576f62 CopyDirectoryToContainer: fix typo in comment 2013-05-09 03:30:19 +02:00
Ingo Weinhold
fa4511f61b AddDriversToContainer: Handle duplicate invocations
Since the same driver can be added in more than one category, in a few
cases AddDriversToContainer was invoked twice for the same target. Avoid
adding the driver twice to add-ons/kernel/drivers/bin in such a case.
Didn't really cause any problem, but no need to copy the file twice.
2013-05-09 03:29:53 +02:00
Ingo Weinhold
d6a6e2c811 rule CopyDirectoryToContainer: Add flags isTarget
The flags indicates that the passed sourceDirectory is a target, not a
path.
2013-05-07 04:43:50 +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
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
e0f7f688f1 Extract packages' settings dir to common/settings in image
That's a somewhat crude initial approach to installing the default
settings of packages when building the image.
2013-04-29 19:38:29 +02:00
Ingo Weinhold
ece8449668 Pimp up AddTargetVariableToScript to support a list of targets 2013-04-29 17:57:37 +02:00
Ingo Weinhold
4fd280ddfa Simplify use of InstallOptionalHaikuImagePackage
When invoked for a hpkg only the installation location (i.e. "common"
or "system") has to be specified now and "common" is the default. The
rule uses AddPackageFilesToHaikuImage now.
2013-04-29 17:28:18 +02:00
Ingo Weinhold
5d41bc9af9 Add AddPackageFilesToHaikuImage rule 2013-04-29 16:13:03 +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
88f22c9768 InstallOptionalHaikuImagePackage: Remove first parameter
Instead deduce the file name from the URL. A long overdue change. Avoids
unnecessary name duplication, which only led to errors.
2013-04-16 14:39:31 +02:00
Ingo Weinhold
33c254876c ImageRules: Allow build feature annotated params in Add* rules
More precisely in the rules that take multiple targets. It doesn't make
that much sense e.g. for AddSymlinkTo*.
2012-12-09 04:07:48 +01:00
Jérôme Duval
4107ac9cda Cleanup of remains of subversion in the build system 2012-10-30 22:36:32 +01:00
Matt Madia
1a53a4d3f5 Refactored the stripping of debug symbols to be a per-archive basis.
Setting 'HAIKU_STRIP_DEBUG_FROM_OPTIONAL_PACKAGES = 1' will enable the
mechanism. By default all packages will be stripped. Passing anything
other than '1' or 'true' in the InstallOptionalHaikuImagePackage call
will disable it for a particular package.
2012-09-16 19:41:24 -04:00
Oliver Tappe
323b65468e Filtered flat import of Oliver's svn package management branch
Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
  deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
  <directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
  DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
  ~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.
2011-11-25 06:17:07 +01:00
Ingo Weinhold
19ae20e67e Merge branch 'master' into pm-flat
Conflicts:
	build/jam/HaikuImage
	build/jam/OptionalBuildFeatures
	build/jam/OptionalPackages
	build/jam/UserBuildConfig.sample
	data/bin/installoptionalpackage
	src/apps/deskbar/DeskbarMenu.cpp
	src/servers/debug/DebugServer.cpp
	src/system/kernel/fs/vfs.cpp
2011-11-05 17:00:01 +01:00
François Revol
97e22a9b50 Workaround missing mkisofs in Debian sid for ppc boot CD. It needs a rewrite anyway.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-26 00:02:02 +00:00
Ingo Weinhold
b059c5e4fc Add PropagateContainerUpdateTargetFlags rule
It propagates the HAIKU_INCLUDE_IN_IMAGE and HAIKU_INCLUDE_IN_PACKAGES
variables from one target to another.
2011-07-17 16:54:59 +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
204261b63a AddFilesToContainer: avoid unnecessary work
* If after filtering the list of targets is empty, return.
* Get the directory only afterwards.
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
dfa6888fb2 Remove InstallCommonPackage rule 2011-07-17 16:54:49 +02:00
Ingo Weinhold
a6e73cb9e8 Remove installoptionalpackage 2011-07-17 16:54:48 +02:00
Ingo Weinhold
fdc30d62ce Fix gcc2 and ICU optional packages
* InstallOptionalHaikuImagePackage: In case of hpkg packages, copy them
  to the target directory, instead of extracting them.
* Correct gcc 2 package download URL.
* The ICU gcc 2 optional packages has been repackaged as hpkg. Use that.
  For gcc 4 things are broken, now.
2011-07-17 16:54:19 +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
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
9e3bdfb0ef Generalize some image rules
Pulled generalized *ToContainer versions out of several *ToHaikuImage
rules.
2011-07-17 16:54:11 +02:00
Oliver Tappe
3dfd9cb95c Flat commit of all changes from package-management branch in svn 2011-07-17 16:54:06 +02:00
Philippe Houdoin
d28b0b06d0 Of course, when incomptability kick in, it's never limited only to
option string: FreeBSD's stat command line don't use  %s format specifier for
file size. Instead, %s specifier is unused at all and they goes with %z.
For file Zize, I guess...



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41830 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 13:31:56 +00:00
Philippe Houdoin
c3510ace83 When building floppy boot image on FreeBSD, the stat command line fail on
the -c/--format option which is unsupported on this platform.
Add a fallback, which should fix #7613.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41829 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 09:52:08 +00:00
Matt Madia
50ca9a25c9 As per Ingo's comment 13 in #7286, removed support for isGCCAgnostic.
There should be separate gcc 2 and gcc 4 packages instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40827 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-05 22:55:31 +00:00
Philippe Houdoin
d01a7e01ed Revert mistaken committed change.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 17:17:45 +00:00
Philippe Houdoin
5a2f51f20e Added WebPTranslator to Haiku image, with due credits in AboutSystem.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39516 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 15:45:37 +00:00
Philippe Houdoin
b2b54ce0f6 Check in BuildFloppyBootImage1 that haiku_loader could actually fit
before the image archive.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-10-11 10:23:22 +00:00
Andreas Färber
8b006b36e7 Allow to suppress individual Optional Packages
Add Jam rule SuppressOptionalHaikuImagePackages as a mechanism to keep
packages from being installed.

Extend the UserBuildConfig.ReadMe document to cover the new command.

Closes ticket #6260.

Changes from v1:
* Simplified IsOptionalHaikuImagePackageAdded as suggested by Ingo.
* Added example as documentation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-08-14 16:43:55 +00:00
Matt Madia
61fae90060 Some improvements for installoptionalpackage
* copy the needed jam files during compile time. This ensures the correct data
 files are used, for example in non-trunk builds
 * -f now only removes the generated at runtime listing of available packages


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37465 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-07-10 22:38:47 +00:00
Matt Madia
4676058003 Record the installed optional packages to common/data/InstalledPackages.
This will be utilized by installoptionalpackage, to determine which packages
are already installed in the system and thus should not prevent the
installation of other packages.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-06-23 21:27:45 +00:00
Matt Madia
4a71fc35b6 InstallSourceArchive now copies source archives to _sources_/, which in turn
is ignored by Installer. Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-28 13:38:49 +00:00
Matt Madia
4eb0a8c2fd Enhance InstallOptionalHaikuImagePackage to accept a new parameter, which
indicates the archive to be usable with either GCC. When utilized, the
packages shared libraries will automatically be symlinked in the alternative
gcc subdir, eg common/lib/gcc4. At the moment, packages that set isCDPackage
are not supported, as Installer needs to be enhanced.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36456 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-04-24 19:52:36 +00:00
Matt Madia
18a69c72f6 Condensed build_zip_archive & build_zip_archive into a single script,
build_archive. Updated ImageRules accordingly. Tested on the following:
 * jam -q -sTARGET_BOOT_PLATFORM=pxe_ia32 pxehaiku-loader haiku-netboot-archive
 * jam -q haiku-boot-floppy
 * jam -q haiku-alternative-gcc-archive


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36005 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-30 05:32:50 +00:00
Ingo Weinhold
f29f258224 * DoCatalogs:
- Cleaned up and prepared automatic globbing of the catkeys files.
    Currently commented out as it breaks the build.
  - Removed the AddFilesToHaikuImage invocation, which doesn't belong there.
    Instead we set the variable HAIKU_CATALOG_FILES on the target and
    automatically add the catalogs of a target in AddFilesToContainer.
* LinkApplicationCatalog: Pass the language name to the actions via variable.
  Fixes the "independent target" warning.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-29 21:36:00 +00:00
Matt Madia
0e82d313d6 Allows AddOptionalHaikuImagePackages and OptionalPackageDependencies to work in
arbitrary order. Follow-up to r35830.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35867 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-15 16:11:47 +00:00
Matt Madia
b353282928 Extended AddWifiFirmwareToHaikuImage to support a boolean, which determines
whether to extract the firmware archive onto Haiku Image or to simply copy
it intact. This allows the ipw2100 and iprowifi2200 firmware archives to be
copied onto the default images. Fixes #5523


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35738 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-03 17:23:06 +00:00
Oliver Tappe
bbaf002932 * fixed copy'n'paste bug in comment
* automatic whitespace cleanup

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35729 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 22:27:14 +00:00
Matt Madia
0010ec111c Expander checks B_USER_DATA_DIRECTORY and B_COMMON_DATA_DIRECTORY for
expander.rules, not B_COMMON_ETC_DIRECTORY.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35723 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 17:39:14 +00:00
Matt Madia
ce811940ba Moved the optionalpackage P7zip's code for creating expander.rules into a new
rule AddExpanderRuleToHaikuImage.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35720 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-03-02 14:41:06 +00:00
Ingo Weinhold
fc5e13e931 Enforced 80 columns limit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35636 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-27 18:23:52 +00:00
Ingo Weinhold
c7b1040cde From: Matt Madia
* Added "extractedSubDir" parameter to ExtractArchiveTo{Container,HaikuImage}.
  If given it specified the path of the subdirectory in the archive that
  shall be extracted.
* Added AddWifiFirmwareToHaikuImage rule for extracting Wifi firmware
  archives onto the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35635 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-27 18:15:47 +00:00
Ingo Weinhold
05bbc668af From: Matt Madia
* InstallOptionalHaikuImagePackage: Made the first argument an actual file
  name, i.e. the extension ".zip" is no longer appended by it.
* Renamed rules UnzipArchiveTo{Container,HaikuImage} to
  ExtractArchiveTo{Container,HaikuImage} and generalized them to support
  tgz/tar.gz archives (implemented in build_haiku_{image,cd}).
* Removed DownloadOptionalPackage. DownloadFile is used instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-27 17:48:12 +00:00
Ingo Weinhold
76fa0be374 Patch by Matt Madia:
* Renamed DownloadFile to DownloadLocatedFile.
* Pulled a generalized rule DownloadFile out of DownloadOptionalPackage.
* Added InstallSourceArchive rule which can be used in OptionalPackages to
  add sources for installed packages to the image.
* Added configure option --include-sources to enable including the sources
  for third party software in the image.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35617 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-25 16:13:22 +00:00
Oliver Tappe
783930d916 * reverted the part of r35362 that introduced support for minor ABI versioning - my evil twin made
me do that!

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 23:41:44 +00:00
Oliver Tappe
418b8758bf * added support for minor ABI versions to the SharedLibrary rule, as otherwise updating libz.so
could prove to be a major PITA (because of all the dependencies that would need to be rebuilt)
* when adding a library to the image, its optional minor abi version is taken care of, too (i. e. a
corresponding link is created).
* the ABI-related links in /system/lib are now replicated in /boot/develop/lib/<arch>

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35362 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-31 20:53:29 +00:00
Oliver Tappe
291785f88f * added support for library (API-)versioning and private system libraries to
build system
* declared ICU-libs as private system libraries, which causes them to no longer
  be available for building software (they no longer are linked from the 
  development lib folder, so the linker won't find them)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35323 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-27 23:13:49 +00:00
François Revol
f175afefc3 Use the amiga-specific checksum fixing tool when building the Amiga boot floppy image (not usable yet).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-01-11 00:17:10 +00:00
Ingo Weinhold
42f2c2d099 Added TODO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34741 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-12-22 15:02:35 +00:00
Axel Dörfler
492dd892ce * Removed /system/etc directory.
* /etc now points to /boot/common/etc/, and the remaining contents of the former
  "etc" are put there now, as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33986 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-11-10 14:26:42 +00:00
Oliver Tappe
84eac0b07c closing #4453:
* fixed precedence problem in jam rule that caused an if to evaluate to true, no matter
  if a cd or an image was being built


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33007 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-08 21:07:27 +00:00
Stephan Aßmus
6ab71ad3b7 Introduced new buildsystem feature that places certain packages into _packages_
on the target image instead of extracting them, but only if the target image
is a CD image. This then speeds up installing a great lot, at the expense of
certain applications not being available in LiveCD mode. This affects
* the revision control tools and their dependency libraries,
* autotools
* texinfo
* perl and python


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32996 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-09-08 11:45:52 +00:00
Ingo Weinhold
6c25a957e0 Fixed the corruptions of the generated image scripts that could happen with
multiple jobs. The problem was that the dummy targets used to compose the
scripts were independent from each other and jam could thus execute their
respective actions concurrently. We do now create a dependency chain between
the dummy targets of each script, so that jam is forced to execute the actions
sequentially.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31419 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-07-06 12:24:17 +00:00
Ingo Weinhold
e20c80b57f Added new optional parameter to AddSymlinkToHaikuHybridImage allowing to create
the symlink in a subdirectory for the alternative gcc.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-06-21 10:57:01 +00:00
Ingo Weinhold
1b56bd2b40 * Added rule CopyDirectoryToAlternativeGCCArchive, analogous to
CopyDirectoryToHaikuImage just for the alternative GCC.
* Added rules Add{Files,Symlink}ToHaikuHybridImage. Those call both the
  Add{Files,Symlink}toHaikuImage and Add{Files,Symlink}toAlternativeGCCArchive
  rules, the latter with an optionally slightly changed parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30873 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-27 00:42:04 +00:00
Ingo Weinhold
a474455132 Changed the way the zip archive with the alternative gcc libraries is built.
Now that's done like building the network boot archive, which gives us a lot
more flexibility for defining its contents.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-05-25 01:21:32 +00:00
François Revol
9c08ace28c Add the checksum required step for atari_m68k on the boot floppy.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-27 20:00:28 +00:00
François Revol
4eae7ffa1e Use arch specific floppy image size, Atari machines don't know about 2.88kB... plus it still fits in.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30469 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-27 19:28:13 +00:00
Michael Lotz
4585fda629 The bootfloppy image has become so fat that it simply doesn't fit the 1.44 size
anymore. This was the case for GCC4 already but is now also true for GCC2. We
might want to look into that again, or we can just ignore it as noone is really
using floppies anymore and for eltorito boot we can live with the 2.88 floppy
emulation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30312 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-22 00:17:22 +00:00
Ingo Weinhold
d339b68bef * Added UnzipArchive rule which unzips a zip file into a target directory.
* Added DownloadOptionalPackage which is mainly a wrapper around DownloadFile
  preventing the package from being downloaded twice, even if invoked more
  than once.
* InstallOptionalHaikuImagePackage uses DownloadOptionalPackage now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30020 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-08 09:55:33 +00:00
Axel Dörfler
317bd7dda3 * Changed directory structure as suggested on the mailing list.
* Made the TimeZoneView less error prone, and also actually use Haiku code (the
  previous check didn't work since it used #if, not #ifdef).
* Also took the liberty to rename our boot loader to haiku_loader, since I had
  to update the nasm binary anyway. Updated the assembly sources to nasm 2.0.
* I haven't found where the synth location in the MIDI code is specified,
  though.
* Also, NetBootArchive, and FloppyBootImage haven't been updated yet. Will do
  so next.
* Some optional packages still put their license to beos/etc/licenses. I didn't
  update them yet, as we'll probably do so anyway at some point. Also, I think
  we might want to introduce a common/data/licenses instead for those.
* If you encounter any problems, please tell!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-04-03 09:02:44 +00:00
Ingo Weinhold
d15b54c97f Removed HAIKU_ADD_ALL_OPTIONAL_PACKAGES build variable. It did more harm than
good lately.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29608 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-03-19 12:15:13 +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
Michael Lotz
f96525f73f The GCC4 built boot floppy archive is too large, it doesn't fit on a 1.44 image.
Therefore we switch to building a 2.88 floppy image in that case so it's at
least usable to build a bootable CD.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29211 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-15 14:54:05 +00:00
François Revol
1c532eedf1 Make the tgz archive offset in floppy image settable. Set it to 270k for now, until zbeos gets some diet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28657 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-15 03:30:00 +00:00
François Revol
76778d1e14 Add missing rules for floppy images...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-14 20:26:17 +00:00
François Revol
0d1f354d28 Fix typo.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-11 19:26:58 +00:00
François Revol
47577f1cba Add COFF loader to ppc ISO.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28612 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-11 19:22:16 +00:00
François Revol
14ff3a6a54 Finally found a hack to get the iso bootable in QEMU SVN (with some patching to get OpenHackware happy)...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28583 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-09 21:36:07 +00:00
François Revol
df6e910b47 Try harder with PReP boot, still no go.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28553 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-07 19:15:55 +00:00
François Revol
360ca11440 - tried making an HFS CD, doesn't boot either in qemu yet.
- add an HFS map file


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28552 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-07 16:45:29 +00:00
François Revol
c7d3cf5b8a First attempt at a PPC bootable iso, doesn't work yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-11-07 02:35:46 +00:00
Axel Dörfler
c5134b4758 * When updating all targets, symlinks and directories are now also recreated.
* Removed superfluous white space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26439 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-15 19:23:34 +00:00
Jérôme Duval
0afec1917e added AddNewDriversToHaikuImage to replace AddDriverRegistrationToHaikuImage: it places drivers which supports the new device architecture at the right place
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-09 20:32:54 +00:00
Ingo Weinhold
3c504a317e Added rules F{Files,Symlinks}In{Container,HaikuImage}Directory returning
the targets/symlinks added to a container/Haiku image directory.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25535 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-17 23:31:04 +00:00
Ingo Weinhold
5f78d261a2 Added rules AddOptionalPackageDescriptionToHaikuImage and
AddLicenseToHaikuImage that can be used in optional package definitions
to add a copyright entry in AboutSystem and add a license file to
/etc/licenses.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25313 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-05-04 16:06:41 +00:00
Ingo Weinhold
5b420b6d10 Replaced "echo -n >" by "touch" as it's more portable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24781 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-03 19:52:43 +00:00
Ingo Weinhold
f8cb30712e * Replaced the dummy implementations of the <grp.h> and <pwd.h>
functions by ones reading /etc/{group,passwd}.
* Added quasi-standard getpwent_r() and getgrent_r().
* Added _SC_GETGR_R_SIZE_MAX and _SC_GETPW_R_SIZE_MAX sysconf()
  constants.
* Moved initgroups() and getgrouplist() definition to grp.cpp. They use
  the same backend as the <grp.h> functions.
* Set the permissions of files created by the build system to what they
  should be on the image (executables: 755, others: 644). Otherwise only
  root could do anything under Haiku.
* Added build system variables HAIKU_ROOT_USER_NAME and
  HAIKU_ROOT_USER_REAL_NAME to customize name and real name of Haiku's
  root user.
* Added build system rules AddUserToHaikuImage and AddGroupToHaikuImage
  for adding additional users and groups (by default only root user and
  group and a "users" group are created).
* Adjusted BIND port and coreutils config.h files according to what
  features have become available.
* Fixed HAIKU_DOCUMENTATION_OBJECT_DIR definition. Untested, but it used
  a wrong variable name before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24750 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-02 14:02:52 +00:00
Ingo Weinhold
d4954058b5 Added OptionalPackageDependencies rule to specify dependencies between
optional packages, i.e. installing one will install all its
dependencies, too.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24658 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-29 15:15:18 +00:00
Ingo Weinhold
c904fe377e * Added new optional parameter to AddHeaderDirectoryToHaikuImage,
specifying the name of the header directory on the image.
* Renamed the "gnu" header directory on the image to "3rdparty" and
  created a "gnu" symlink for compatiblity.
* Added zlib and libpng headers to the "3rdparty" header dir.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 23:48:41 +00:00
Ingo Weinhold
88c4c6627b * Added new rule CopyDirectoryToHaikuImage which recursively copies a
directory to the image. It supports exclude patterns.
* Changed Add{Source,Header}DirectoryToHaikuImage to use the
  CopyDirectoryToHaikuImage rule. The special handling in the
  build_haiku_image script is gone now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24586 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-26 04:14:25 +00:00
Ingo Weinhold
d41c97f7a5 Append the .zip extension to the package name rather than to replace the
suffix or otherwise package names with dots in them would be mangled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24566 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-25 01:58:41 +00:00
Ingo Weinhold
0ba49c35b3 * BuildPlatformMain supports overriding HOST_LIBROOT on the target now,
so one can set it to the static libroot, if desired.
* Generic attribute emulation:
  - Added build tool rm_attrs, a simple "rm" replacement, which also
    removes the attributes directory for a given file.
  - Added build/scripts/rm_attrs shell script, which wraps the
    invocation of the rm_attrs tool. If it doesn't exist yet, the
    ordinary rm is used.
  - The RM jam variable refers to the rm_attrs script now, i.e. whenever
    something is removed by the build system, the attributes are removed
    too (if the build tool has already been built, that is).
  - Removed the shell function attrrmrf() in build_haiku_image. We use
    the rm_attrs tool instead, if necessary.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-22 21:05:03 +00:00