158 Commits

Author SHA1 Message Date
Ingo Weinhold
111204e0d9 build_cross_tools: make the cross compiler more reuse friendly 2013-07-17 01:06:15 +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
7418499c4a Remove more optional package related left-overs 2013-07-07 11:14:28 +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
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
2ebcd86dfe Add configure option --host-only
When specified, the build will be configured for building build host
tools only.
2013-07-03 23:19:00 +02:00
Oliver Tappe
49f8422a0d Remove whole sys-include folder when cross-compiler has been built.
* at least for gcc2, we used to leave the 'os' subfolder in there,
  which may have caused problems when Haiku's headers have changed
  since the last time the compiler was built.
(cherry picked from commit 92bb2fb33e2d0f4aa766be095057fe63ff17bc8e)
2013-06-14 19:31:20 +02:00
Oliver Tappe
de2188e964 Fix #7824: failure to build a cross-compiler on Haiku.
* force creation of a cross-compiler for both gcc2 and gcc4 when
  building on Haiku (by suffixing the build and host machine with
  '_buildhost')
(cherry picked from commit df69e209bbacd07fdfea9d9efcfc8e1c0dfedaa0)

Conflicts:
	build/scripts/build_cross_tools_gcc4
2013-06-14 19:30:55 +02:00
Ingo Weinhold
8944824d1c rm_attrs: Fix for parameters with whitespace 2013-06-06 00:17:02 +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
fa962e6008 build_haiku_package: Print some progress info
Remove the output in extractFile(), though. The extracted packages are
so small that it doesn't matter anymore.
2013-06-01 00:32:07 +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
Oliver Tappe
30c2352188 Adjust buildscript for gcc4 to configure with a sysroot. 2013-05-30 00:22:06 +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
e387e24faa Move MIME DB creation from build_haiku_image to jam build system
* build_haiku_image: Remove MIME DB creation code.
* Rename beos_mime source directory to mime_db.
* Add rules to build the MIME DB in the source directory's jamfile.
* Add MIME DB directory to haiku.hpkg in data/mime_db.
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
Jérôme Duval
7e1f963596 style clean up 2013-04-11 18:09:35 +02:00
Jérôme Duval
575cfdf28a GCC4 cross tools: fixes the build with --use-gcc-graphite on another machine
* libsupc++ wasn't required, the build failed on x86_64.
* PPL: --disable-maintainer-mode configure option seems not enough to avoid an autoconf launch.
Solved by redefined AUTOCONF AUTOHEADER ACLOCAL AUTOMAKE variables to the noop command "true".
2013-04-11 17:57:42 +02:00
Jerome Duval
341c03f988 GCC4 cross tools: a static libGMP requires linking with the host libstdc++ 2013-04-10 23:25:39 +02:00
Jerome Duval
e0d1980015 GCC4 cross tools: build libGMP before PPL and CLooG
* libGMP is actually a CLooG dependency, we now build it before CLooG
and tell to GCC where to find it when Graphite build is activated.
2013-04-10 18:47:01 +02:00
Jerome Duval
024f78deeb GCC4 cross tools: disable "maintainer mode" on PPL configure.
* PPL: make could run autoconf in certain conditions, thus generating artefacts
in the source tree. Added --disable-maintainer-mode when launching
configure to avoid this situation.
* cleanup: there are no info files in CLooG and PPL.
2013-04-09 21:55:06 +02:00
Jerome Duval
0837d6c650 GCC4 cross tools: builds with ppl and cloog when --use-gcc-graphite is given 2013-04-06 14:32:12 +02:00
John Scipione
d86bc7f95e If can't find hrev tags set the version to the short hash
If no hrev tags are found the revision is blank and shows up as
0 in About System. This commit updates the revision function so that
it falls back to the current short hash instead. Only affects devel
builds and only if you've deleted your tags.
2013-01-14 19:37:56 -05:00
Matt Madia
35f3908149 Use strip provided by the cross-tools.
This allows a 32-bit host to successfully build x86_64.
2013-01-04 12:42:26 +00:00
Oliver Tappe
7c3985c617 Fix build of gcc2 on BSD (with bsdmake)
* apparently, -j1 doesn't work as intended with bsdmake, so we drop
  any multiple-job specification from MAKEFLAGS, instead
2012-11-23 21:10:24 +01:00
Alex Smith
11c9f9a1d6 Merge branch 'master' into x86_64
Conflicts:
	build/jam/FloppyBootImage
	build/jam/OptionalBuildFeatures
	build/jam/OptionalPackages
	headers/private/shared/cpu_type.h
	src/bin/ps.c
	src/bin/sysinfo.cpp
	src/kits/tracker/PoseView.cpp
	src/preferences/appearance/DecorSettingsView.cpp
	src/preferences/virtualmemory/Settings.cpp
	src/servers/input/AddOnManager.cpp
	src/servers/input/InputServer.cpp
	src/servers/input/InputServerMethod.cpp
	src/system/boot/Jamfile
	src/system/boot/platform/raspberrypi_arm/mmu.cpp
	src/system/boot/platform/u-boot/arch/arm/Jamfile
	src/system/kernel/arch/x86/arch_cpu.cpp
	src/system/kernel/arch/x86/arch_thread.cpp
	src/system/kernel/cache/block_cache.cpp
	src/system/kernel/vm/VMAnonymousCache.cpp
2012-11-18 14:02:07 +00:00
Oliver Tappe
29468041f9 Explicitly use -j1 when building gcc2
* specifying -j1 guards against potential multi-job arguments in
  MAKEFLAGS
2012-11-07 21:56:20 +01:00
Oliver Tappe
d006487564 Force POSIX-locale when building the buildtools
* using a non-POSIX locale may break the build (especially makeinfo),
  so we explicitly set the locale to POSIX
2012-11-07 21:54:02 +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
Alex Smith
aaeadfcb02 Do a separate libgcc build for the kernel as well.
Turns out that libgcc is needed, for some reason building the kernel
with -O0 does not end up referencing libgcc but -O2 does. A separate
build of it is done with -mno-red-zone, same reason as for libsupc++.
Ended up being easy to rebuild with different CFLAGS: previously I'd
tried doing `CFLAGS="-mno-red-zone" make` in the libgcc dir which
didn't override, the correct way is `make CFLAGS="-mno-red-zone"`
2012-08-16 17:38:01 +01:00
Alex Smith
c864ba1a2d Build a separate libsupc++ for the kernel with correct flags.
Kernel mode code on x86_64 needs to be built with -mno-red-zone as
interrupts would corrupt the red zone if it were in use. However, the
kernel is linked with libsupc++, which was not compiled with
-mno-red-zone. If an interrupt occurred in libsupc++ code the red zone
would get corrupted. This was causing random panics, particularly under
heavy system load. Therefore, on x86_64 a separate build of libsupc++
with -mno-red-zone is now done for the kernel to use. Note: this commit
will require a rerun of configure and rebuild of cross tools.
2012-08-16 13:57:04 +01:00
Alex Smith
5084d0d451 Added more things to x86_64 image.
Some preference apps, mount_server and AboutSystem. Removed the check
for x86_64 in the boot script, the normal path through the script will
work now. Also removed a temporary hack to workaround AboutSystem not
being there in build_haiku_image.
2012-08-10 09:32:54 +01:00
Alex Smith
666b46e2e3 Added libbe, ICU and consoled to the image.
The boot script now launches consoled instead if app_server does not
exist, so there is now an interactive Bash prompt! libbe requires ICU,
which is an optional package, so I've built the packages and they've
been uploaded to haiku-files.org (thanks umccullough).
2012-07-30 21:42:49 +01:00
Alex Smith
e715eca04c Worked around broken GCC 2 on OS X hosts.
GCC 2 built for OS X 10.7/10.8 was broken, the Haiku build would fail
with some strange errors. Forcing compilation of GCC 2 in 32-bit mode
results in a working GCC.
2012-07-29 21:03:14 +01:00
Jérôme Duval
3af8da0ef8 use system zlib when cross building gcc4 to fix #8242
* this add a dependency on package zlib1g-dev for Linux systems.
2012-04-15 13:28:50 +02:00
Alex Smith
81eb68f280 Fixed a compilation failure for the x86_64 toolchain.
This appears to be a problem with GCC's build system: it defaults to having
multilib enabled, but if it is explicitly enabled with --enable-multilib,
the build fails.

Signed-off-by: Ingo Weinhold <ingo_weinhold@gmx.de>
2012-04-05 13:15:24 +02:00
Jérôme Duval
c59b279b71 Added workarounds and options for gcc 4.6.2
* add -Wno-unused-but-set-variable for gcc 4.6.x with a TODO
* fix warnings about wrong size of pointer cast in ioapic.cpp and AudioBuffer.cpp
2012-01-19 19:44:42 +01:00
Oliver Tappe
cdb7744bc7 Avoid warning about missing math.h.
* Apparently caused by the fact that we no longer run fixincludes,
  math.h is not being generated anymore. I haven't removed the rm
  from the script in order to be compatible with older compilers.
2011-11-23 17:02:23 +01:00
Oliver Tappe
25389523bd Touch c-gperf.h before building legacy gcc. 2011-11-22 22:28:09 +01:00
Oliver Tappe
489c0689ec Fix typo in build_cross_tools. 2011-11-22 16:21:06 +01:00
Ingo Weinhold
2f7b75b323 Fix the gcc bison issue for real
Also touch cp/parse.{c,h}, which apparently are the culprit.
2011-11-15 20:22:23 +01:00
Ingo Weinhold
4f23d85e4f Work around issue with newer bison versions
Touch the source files generated by bison, so that make won't try to
have them updated.
2011-11-15 19:49:25 +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
Ingo Weinhold
530590d3b9 * Document that the haikuRequiredLegacyGCCVersion variable is
influencing this script.
* If haikuRequiredLegacyGCCVersion has not been specified, assume that
  the script was called manually and just use the version string from
  the gcc sources.
* Make error output a bit more consistent.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43163 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-11-03 14:22:31 +00:00
Oliver Tappe
312e961c5d Closing #8063:
* touch all .info files before trying to build the gcc4
  buildtools in order to avoid the dependency on makeinfo.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43012 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-30 19:39:12 +00: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
32081667b1 Make use of package create -i option 2011-07-17 16:54:51 +02:00