* those packages need to be installed on any system that wants to build
for the respective target architecture, so they need to have the
package architecture 'any'
* adjust to not require 'haiku', as that isn't needed and wouldn't be
available either
* use concatenation by macro to inject the target architecture into the
provides definition
* 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
We generally want to skip the contents of the packagefs volumes (save
for the shine-through directories). That makes Installer usable again.
In what direction we want to develop it (e.g. integrate some PM support,
so that a subset of packages can be selected) needs further discussion.
* Move message constants to InstallerDefs.h.
* Determine the source and target partition ID already in
InstallerWindow and pass those to WorkerThread instead of fiddling
with menu items in _PerformInstall(). And instead of the window object
pass a messenger to the constructor.
* Add interface EntryFilter, an instance of which can be passed to the
CopyEngine. The object is asked whether to copy entries/clobber
directories.
* Move the _ShouldCopyEntry()/_ShouldClobberFolder() code to new
WorkerThread::EntryFilter.
... when reading non-inline attribute data. Generally the package should
already have been opened by the PackageNode owning the attribute (in
InitVFS()), but that isn't the case for queries, which can read
attributes from entirely unsuspecting nodes.
Together with the QueryParser fix that should fix queries involving
non-indexed attributes.
When reading an attribute of a directory there was no guarantee that the
underlying package would be open. When it wasn't reading an attribute
would fail, unless the attribute data were already cached. The reasons
for this are:
* UnpackingDirectory didn't forward the {Init,Uninit}VFS() calls to the
underlying PackageDirectory.
* Only PackageFile was actually opening the package in InitVFS().
Now we forward the {Init,Uninit}VFS() calls in all cases -- even in
{Add,Remove}PackageNode(), when the active package node changes -- and
opening/closing the package is now done in
PackageNode::{Init,Uninit}VFS().
* 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.
AttributeDescriptor: Don't use dup() directly. Check, if the given FD is
one we track and clone it respectively. This allows use with symlink FDs
which we have to fake on Linux (since symlinks cannot be opened). Fixes
extraction of packages containing symlinks with attributes.
... the one expected for the respective attribute. Before it was
possible that e.g. a uint was read and then interpreted as a
const char*, if a string was expected for that attribute.