* 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.
Resolving the package dependencies for system might yield packages that
are already given for common. Filter those out of the list for common
before resolving the common dependencies.
* 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.
The Haiku bootstrap image is now built with (hopefully) all required
primary and secondary architecture packages. The runtime loader is still
resisting our wish to run secondary architecture programs, though.
For the secondary architecture the same specified package name means a
different package, so we need to use the mapped name IsPackageAvailable
returns.
* Add rule FSplitPackageName. It splits a package name into port name
and package suffix.
* FSetConditionsHold: Rename to FConditionsHold and replace the set
parameter by a predicate rule parameter, thus adding more flexibility.
* FIsBuildFeatureEnabled: Use the faster check.
* Add rule FQualifiedBuildFeatureName. Given a build feature name, it
prepends the current packaging architecture to yield a qualified
feature name. Is used by the other build feature rules so that the
same build feature can be configured differently for each arch.
* ExtractBuildFeatureArchives: The supplied list is now filtered via
FFilterByBuildFeatures, allowing for build feature conditions in the
list.
* Add rule InitArchitectureBuildFeatures. It is called early for each
configured architecture, setting up some basic build features for it.
"primary" is set for the primary architecture and a "secondary_<arch>"
is set for each secondary architecture.
* BuildFeatures: Add secondary architecture support: Use the correct
paths for libraries and headers (subdir for secondary architecture)
and configure the icu and zlib sources only for the primary
architecture.
* BootstrapPackageRepository: The package lists are now filtered via
FFilterByBuildFeatures, allowing for build feature conditions in the
lists.
* IsPackageAvailable, FetchPackage: Add secondary architecture support.
* HaikuPortsCross/x86_gcc2: Add icu and zlib x86 secondary packages.
The second stage Haiku cross devel package for the secondary
architecture can now be built.
Pass --enable-hybrid-secondary to gcc's configure when building it as
a secondary compiler. Doesn't make a difference for building Haiku
itself, but makes it easier to match the Haiku cross devel package with
the compiler when building bootstrap packages with haikuporter.
gcc 4 only ATM.
* Libraries for a secondary architectures must be placed in a respective
subdir.
* Add a suffix to the package name when building for a secondary
architecture. Looks a bit weird
("haiku_cross_devel_sysroot_x86_gcc_x86.hpkg"), but is consistent.
* 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).
The goal is to do hybrid builds in a single jam (instead of calling a
sub-jam to build parts with the secondary tool chain). This changeset
adds support to configure to prepare multiple tool chains.
configure:
* Merge option --build-cross-tools-gcc4 into --build-cross-tools. The
option does now always require a packaging architecture parameter,
i.e. x86_gcc2 for the legacy tool chain.
* Multiple occurrences of the --build-cross-tools and
--cross-tools-prefix options are allowed. The first one specifies the
primary tool chain, the subsequent ones the secondary tool chains.
* All architecture dependent jam variables are now suffixed with the
name of the packaging architecture. The new HAIKU_PACKAGING_ARCHS
contains the packaging architectures for the prepared tool chains. The
first element is for the primary tool chain.
* No longer generate a separate libgccObjects file. Just put the
respective variable into BuildConfig as well.
build_cross_tools[_gcc4]:
* Replace the <haiku output dir> parameter by a <install dir>
parameter. This allows to create different cross-tools directories.
They are simply suffixed by the packaging architecture.
Jamrules:
* For the moment map the variables for the primary tool chain to the
respective suffix-less variables, so that everything still works as
before.
The next step is to actually support the secondary tool chains in the
jam build system. This will require quite a bit more butchering, though.
* Don't handle the bootstrap case in the main Jamfile. Add all bootstrap
packages to the image in the profile definition. That's less
confusing, hopefully.
* Add the missing bootstrap packages (ncurses*, libtool_libltdl). The
would normally be added in build_haiku_image when the package
dependencies are resolved, but we don't do that for the bootstrap
image, since we intentionally leave some dependencies out (e.g. perl)
because they can be built.
* 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.
DefaultBuildProfiles is now included earlier (right after BuildSetup).
This allows us to set HAIKU_BOOTSTRAP_BUILD earlier, so it can be used
for the repository selection. The actual build profile definitions,
which cannot be done that early, live in the rule
DefineDefaultBuildProfiles, which is invoked where the file was
previously included.
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.).
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.
Copy:
* packages: Haiku -> HaikuBootstrap
* images: HaikuImage -> HaikuImageBootstrap
... and remove some unncessary content.
Setting the jam variable HAIKU_BOOTSTRAP_BUILD enables using the
bootstrap files.
* 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.
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.
* 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.
* 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.
* Deskbar now uses ~/config/settings/deskbar/menu_entries for its menu,
falling back to /system/data/deskbar/menu_entries, when the former
doesn't exist. The latter always exists and is a virtual directory
merging the deskbar/menu subdirectories of ~/config/settings/ and
<any installation location>/data/. So, if a package provides a
deskbar menu symlink, it is added automatically when the package is
activated. The user can add own menu items by putting stuff into
~/config/settings/deskbar/menu/, only use their own organization by
symlinking it to menu_entries, or do fun stuff by making menu_entries
a customized virtual directory.
* HaikuImage: No longer create any deskbar menu symlinks in the user's
settings directory. Instead add them to the Haiku package.
* OptionalPackages: At least for the optional packages that do have
hpkgs, no longer create deskbar menu symlinks in the user's settings
directory.
* Move all Deskbar settings files to ~/config/settings/deskbar/ and
drop the "Deskbar_" prefix.
* 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 92bb2fb33e)
* 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 df69e209bb)
Conflicts:
build/scripts/build_cross_tools_gcc4
* 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.
* Also make use of new build feature rules.
* Since the hacky long_jump_buffer field has been removed from the
jpeg_error_mgr struct in the new package, the structure is now
wrapped in the JPEGTranslator code to achieve the same behavior.
We have to use actual targets that cause the respective download and
extract the packages. Otherwise the build fails when the packages
haven't been extracted yet.
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.
The new configure option "--use-xattr-ref" enables an xattr assisted
variant of the generic attribute emulation. Instead of using the inode
ID of a node to identify its attribute directory, we use a reasonably
unique random 128 bit number, which we generate and attach as an
attribute to the node. This way, when a node changes its inode ID
(defragmentation?) or the inode ID of a removed node with a left-over
attribute directory is reused, attributes won't get mixed up.
The old method is still used for symlinks (since on Linux only
priviledged users can write attributes on symlinks), but those usually
only have a rather boring BEOS:TYPE attribute, so mix-ups wouldn't be
that problematic anyway.
* 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.
* 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.
* this package wraps the haiku_cross_devel package (i.e. it contains
that package in /develop/cross)
* the wrapper package is meant to be installed into the system
hierarchy, from where haikuporter will fetch the contained package
when needed
* 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
* 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.
* Add new package haiku_loader.hpkg and move haiku_loader there. The
package is built without compression, so that the stage 1 boot loader
has a chance of loading it.
* Adjust the stage 1 boot loader to load the haiku_loader package and
relocate the boot loader code accordingly.
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.
* Switch bash, debugger, less, telnet[d] and top apps to use termcap
functionality provided by ncurses lib instead of GNU libtermcap.so;
* NetBSD version of tput utility replaced with ncurses' one. Fixes#9606;
* terminfo database is provided as mandatory package installed during
building target system;
* Remove libtermcap module. The termcap database source and
corresponding build rules are not removed to provide backward compatibility -
until all optional packages will be rebuild on upcoming system version
using terminfo. Note that gcc2 builds may require to provide termcap a bit
longer in the sake of binary compatibility with R5 era apps.
* add vesa.accelerant, vesa driver, ps2, isa, bios, generic_x86 for x86_64 too
* only have reiserfs, firewire, agp_gart targets for x86
* reverted hrev43950, liblocale alias shouldn't be needed anymore
This means the build tools will no longer be built against the host
platform's libbe, which avoids compatibility problems -- e.g. an
older Haiku host libbe may not have certain features the build tools
require -- and also makes the build behave more similiar on Haiku and
other platforms. The host libroot dependency still remains and is not
easy to get rid of.
Also remove some bits of BeOS/Dano/Zeta build support.
* 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.
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.
* 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.
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).
* Add optional packages Zlib and Zlib-devel.
* Simplify the build feature section for zlib and also extract the
source package.
* Replace all remaining references to the zlib instance in the tree and
remove it.
* 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.
We extract both packages to the same directory now, since the icu_devel
package depends on the base package and contains relative symlinks to
the libraries. ATM that isn't really relevant, since we link directly
against the libraries from the base package, but we might want to
change that eventually.
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.
It points to the settings directory appropriate for global settings.
When a package is installed in ~/config, we cannot use the settings/
subdirectory for global settings, since then the files could clash with
equally named user specific settings files (e.g. in case of
ssh/known_hosts). So we use ~/config/settings/global for global
settings instead.
Apparently it isn't ready yet. I haven't found a single syslog on Trac
that shows a successful initialization of the driver, and on my
machine, where it does that at least, the system freezes during boot.
Also include the freebsd_network and freebsd_wlan headers. Their final
location and which of them to include in the first place might need some
adjustments.
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.
* ... to avoid confusion with the preRelease property. It's also called
"revision" in the HaikuPorts recipes.
* Update libsolv package. Was necessary due to the BPackageVersion
change, but also includes a few more changes.
* 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".
* 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.
* Reorganize things a bit:
- BSolver is now an abstract base class.
- A libsolv based implementation, LibsolvSolver, lives in a new
add-on, which is loaded lazily.
- Get rid of libpackage_solver. Save for LibsolvSolver everything
is moved to libpackage.
- This is a nicer solution for the cyclic dependency caused by
libsolv (libsolvext to be precise) using the package kit for
reading repositories and package files.
* Add a solver result data structure and and an accessor the solver.
* Add problem reporting support to the solver. There aren't data
structures for the problem solutions yet and support for selecting
solutions and re-solving is missing as well.
* The call to the dummy actions isn't needed
* The calls to Extract{Zip,Tar,HPKG}Archive1 couldn't work like that.
The directory has to be the main target, since ExtractArchive is
potentially invoked multiple times with different extracted file
targets and the Extract*Archive1 is only invoked the first time.
Tested only with the HPKG actions, but they others should work as
well.
* Updated to version 2.0 of vendor code.
* Reliability improvements in controlling the underlying devices.
* Implement leaving networks.
* Better timeout handling.
* Usability enhancements like cancel on escape, ok button being the
default and the password field having focus on start.
* Storing of the password using BKeyStore.
It is now declared with architecture x86_gcc2, though it probably
has been built with gcc4. That issue has to be solved for real
eventually, since the package resolver won't allow mixing of gcc2
and gcc4 packages.
It's sufficient to simply check if the gcc version is 4 or higher since
we enforce the use of the latest ported compiler for the build anyways,
and these multi-level checks would fail in their current state if gcc
moved to e.g. version 5.0.
Added the optional package for system sounds that
were collected for GCI 2012. Also added the demo
packges to the "contents" at the top of OptionalPackages.
* Tried to use EFI::Header class, but there doesn't seem to be an easy
way to actually hit the disk -- which we'll have to do to find out
how large the GPT table is.
* Initialization of GPT disks is now working which is why I added the disk
system add-on to the image. However, there is a caveat, as the backup
header and table aren't written yet.
* Partitions can be deleted.
* Creating partitions does not work yet, but I don't know yet why; in
theory it could already work.
..and Haiku64Image. While I'm at it split the commands so each letter
in the alphabet gets it's own line(s). This will make these kinds of
changes more atomic in the future.
* Version of Vim package for x86_64 added;
* Version of KeymapSwitcher package for x86_64 added;
* KeymapSwitcher package fixed to preserve Cmd <-> Ctrl swap settings on
keymaps switch. Fixes#9142;
* UnRAR updated from 3.7.8 to 4.2.4, fixed for multibyte characters
support and build for x86_64. Partially fixes#4879;
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.
* Try to keep each renderer designed
the same.
* swrast will build... swpipe won't
build until we have an llvm build
package. (should in a few days once
llvm 3.2 is released)
* libmesa and libgallium no longer live in libGL
* opengl kit gets libglapi for dispatch
* swrast will get libmesa
* swpipe will get libmesagallium + gallium drivers + llvm
Work I did at Begeistert, trying to use the new driver manager and
detecting display controls. It should probably be a good example of
how a new driver is built. It currently loads and detects
display controls correctly but doesn't do any actual work yet.
Not sure when I have the time to finish the driver, it shouldn't be
that hard but I currently have have other priorities. Feel free to
work on it in the meantime.
Got rid of X86_ONLY and friends in HaikuImage, FloppyBootImage, etc.
Instead we use build feature specification annotated lists with
FFilterByBuildFeatures (either explicitly or implicitly where passing
the list directly to the image rules).
I just translated the variables to the respective annotatation in most
cases, though in some cases different annotation would be more correct
(e.g. for the OpenGL stuff).
Provides a simple framework for addressing #3798. The interested reader
may add the build features and add/adjust the annotations accordingly.
An archive (ramfs) to be loaded can be specified in the raspberry pi
config.txt with a certain base address. We can use this to put our
floppy boot archive into memory on startup.
During the start procedure we now map that archive so we can later
load the kernel from it.
* As of Mesa3D 9.0+, GLU is a seperate project
* Our in-tree GLUT builds with GLU-9.0 without
modification.
* We ignore the GLU libraries that Mesa-7.8.2 and
Mesa-8.1-devel provide and use the glu-9.0 ones
* This is kind of a limbo state, but works for now.
* Eventually we will be on Mesa 9.0 (which requires
the external GLU) and Mesa 7.8.2 (which works with
the newer external GLU) and will rip GLU out of the
7.8.2 OptionalBuildPackage.
* I don't *think* we are using the Mesa GLU headers...
we will know for sure when I pull'em out of the
OptionalBuildPackages :D
Currently hardcoded to Verdex target. Code prepared to pick up configuration
details from FDT when implemented. Only enabled in FloppyImage for ARM.
This actually enables the kernel to read the content of the image file
passed using the "-pflash" parameter to QEMU....
* Fixed issue with unwanted keymap switching in case UnZip started in
* background (expanding optional packages during Haiku build, for
* example). UnZip executable has no background application flag
* for unknown reason.
+alpha4
Introduce HAIKU_DOWNLOAD_CACHE variable that can point to a directory.
containing optional packages to check first before downloading.
Missing packages are also added to the cache.
This allows sharing and reusing them to make builds without a connection.
* Puri wouldn't work after the update to libpng 1.5
* It was still looking for libpng.so.1.4
* Not intended for r1alpha4 branch, as it's still on libpng 1.4
* These were updated again due to recent changes to the buildtools
* Packages are based on btrev43045, whereas the previous set was based on btrev43040
+alpha 4 (GCC2 package needed to match recent date versioning change to configure script)
* This package is current as of btrev43040
* Primarily did this rebuild to assure the GCC4 package was made with the latest buildtool sources
* This invalidates the need to cherry pick hrev44704 for R1A4
+alpha4
* This package is smaller in size than the previous due to the fix in btrev43038
* This package addresses issue building code with SSP due to fix in btrev43039
* This commit along with btrev43039 fixes#8931
+alpha4 (and hopefully last update to GCC before R1A4 release)
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.
* added optional feature package for libpng 1.5.12 gcc4/gcc2 x86 and ppc
* drop libpng sources and headers from the tree.
* added optional feature package for jpeg 8d gcc4/gcc2 x86 and ppc
* drop jpeg sources and headers from the tree.
The original package was cross-compiled to Haiku, turns out flex's
build system uses paths to stuff from the host system, so the package
was broken. Rebuilt from Haiku.
Added autoconf, automake, libtool, texinfo, perl, gettext and nano.
Building an image with the nightly targets should give you an image
with these included.
This adds some of the development packages for x86_64. All of the
DevelopmentBase packages (gcc, make, jam, bison, flex, m4, mkdepend)
have been built and uploaded.
* made private Catalog.h header public by moving it to
os/locale/tools/CollectingCatalog.h
* reintroduce B_COLLECTING_CATKEYS define (which is expected to be set
during a collectcatkeys session) in order to decide whether or not
to automatically include the CollecingCatalog.h header from Catalog.h
* adjust jam rule for collecting catalog keys accordingly
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"`
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.
This reverts commit 14b654326d.
Unfortunately that changeset causes a regression on GCC 2, which
makes playback of (some?) video impossible. This is due to Libavcodec
being miscompiled, which requires gcc >= 4.2
Resolves the regression of #8856, but does not fix the root issue.
* Various compilation fixes.
* Fixes to the FreeBSD compatibility layer (from comparing the x86-
specific bits with the equivalent amd64 sources in FreeBSD).
* Compile all the Ethernet drivers except for sis900 and wb840, these
require a bit more work to fix (will file a ticket soon). Tested
ipro1000 and rtl81xx, no issues.
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.
As mentioned in one of the previous commits, breakpoints don't work
properly yet, and I haven't done much extensive testing yet, but the
basic functionality works.
With this commit, app_server now compiles and runs at boot! Nothing
particularly interesting happens, just the blue background and a mouse
pointer. Remote backends are broken and not compiled in, see #8834.
Note that it won't be possible to build this quite yet, need to get
the FreeType package uploaded.
This module provides an interface for drivers to use to perform calls
to the BIOS (only really for use by graphics drivers which need to use
the VESA BIOS). It uses the x86emu library from X.org which emulates
a real mode x86 CPU. This is necessary for x86_64 as virtual 8086 mode
no longer exists there.
* This puts the registers in a better state and ensures
all model dependant defines are prefixed with card series
* Consolidate evergreen defines into single header
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).
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.
* Added x86_64 linker script and relocation code.
* Some 64-bit safety fixes to the heap code.
* Added runtime_loader, libroot and bash to the x86_64 image. The boot
script will be launched, but will panic shortly after because fork
is broken.
Added a temporary Haiku64Image file that gets included instead of
HaikuImage when building for x86_64, which I will add to as I port
stuff. Images currently only include the boot loader, kernel and
a bunch of add-ons.
This adds disk drivers, intel/session partitioning systems, and ISO9660
(+ write/attribute_overlay) modules to the CD/floppy boot image targets
for x86_64. The kernel now detects and mounts the boot CD, and runs up
to attempting to start the boot script.
Uses the x86 architecture code, made fixes to printf formats and a
couple of 64-bit fixes. Only potentially intrusive change is that I've
changed PCI.h to use uint32 rather than ulong. I don't see any way
this would cause any issues, though.
- The cdrecord port was using the wrong path for searching for SCSI
devices. This led to it failing to find SATA CD drives. Updated
package by Chris Roberts.
Added the necessary build flags for modules, and added a module (dpc)
to the floppy image for x86_64 builds for testing purposes. The module
gets loaded correctly and its code runs without issue. Only non-trivial
addition is the different method for generating kernel.so, this is
explained in the kernel Jamfile.
* Add WebKit optional package.
* Make WebKit a dependency of WebPositive
* Enable building of WebPositive from source.
Note: WebKit currently expands to lib/. Alternative gcc-subdirectories
are not taken into consideration. Though it is trivial to change.
* Use gcc and g++ rather than cc and c++, as the latter now point to
clang with recent Xcode versions and compilation of the host tools
fail for various reasons with it.
* Replace the case-sensitive filesystem check with a more basic one,
as diskutil no longer supports the behaviour of getting info for the
volume that any path is on.
* Updated ReadMe with a correct list of prerequisites for OS X.
* GCC 2 builds are still broken due to a strange error that only
occurs with a GCC 2 built on OS X 10.7
Will be merged with the x86 one later on. Requires -fno-omit-frame-pointer on
the kernel build flags, GCC defaults to not generating stack frames on x86_64.
Since x86 and x86_64 share a lot of common code, x86_64 kernel sources/headers
are going to reside under headers/private/kernel/arch/x86 and
src/system/kernel/arch/x86 along with the existing x86 code. This commit
changes the build system to handle this. A new variable, TARGET_KERNEL_ARCH,
has been added. This is the name of the kernel/boot architecture directory
name, set to x86 on both x86 and x86_64. This is now used in all places where
TARGET_ARCH was used to get to kernel arch sources/headers (I've changed
everything necessary as far as I can tell). Kernel won't build for x86_64
at the moment as the sources have not been merged, loader does.
* platform_allocate_elf_region() is removed, it is implemented in platform-
independent code now (ELF*Class::AllocateRegion). For ELF64 it is now
assumed that 64-bit addresses are mapped in the loader's 32-bit address space
as (address - KERNEL_BASE_64BIT + KERNEL_BASE).
* mapped_delta field from preloaded_*_image removed, now handled compile-time
using the ELF*Class::Map method.
* Also link the kernel with -z max-page-size=0x1000, removes the need for
2MB alignment on the data segment (not going to map the kernel with large
pages for the time being).
* set_haiku_revision doesn't currently support ELF64, don't use a
revisioned kernel image on x86_64 for now.
* Don't try to build add-ons for x86_64 yet.
The red zone is a 128-byte area below the stack pointer specified by the
AMD64 ABI that can be used by leaf functions for their stack frame without
modifying the stack pointer. It is guaranteed not to be modified by signal
handlers. This cannot be used in kernel mode code, as an interrupt handler
could overwrite it, so stop GCC from generating code that uses it.
* our current gcc can't be built with multilib for ppc anyway,
* this allows going further on real hardware, though dprintf() sends wrong data to the serial port.
* x86_64 is using the existing *_ia32 boot platforms.
* Special flags are required when compiling the loader to get GCC to compile
32-bit code. This adds a new set of rules for compiling boot code rather
than using the kernel rules, which compile using the necessary flags.
* Some x86_64 private headers have been stubbed by #include'ing the x86
versions. These will be replaced later.
* since we include BoardSetup earlier now, the TARGET_* flags were discarded. Use HAIKU_* instead.
* Add variables to hold the default entry point and the desired uimage OS emulation.
* Pi firmware was updated to note that Broadcom
had to be included with firmware blobs.
* While we have permission from Eben to have the
blobs in-tree, they are now offically on github
in a fixed location removing the need to have
these in-tree.
* Clean up BoardConfig, note firmware URL and
files needed
* Update info.txt with how Haiku boot process works