haiku/headers/private/package/DaemonDefs.h
Alexander G. M. Smith 3376ed1a72 Package Kit: Proper Installation for First Boot Packages
Do the final installation operations for all the packages in the
/system/packages directory when the OS is booted for the first time.

This will run their post-install scripts, create users, groups and generate
settings files (marked with a package version attribute).  Previously we just
ran all the shell scripts found in the /system/boot/post-install directory
(don't do that as much now).

Fixes bug #14382

This patch has simpler code flow in CommitTransactionHandler::_ApplyChanges
Tested on 32 and 64 bit systems.  Once it's official, need to remove the
open_ssh redundant post-install script that creates users etc. from HaikuPorts.
Now we can notice bugs like package version attributes on settings files aren't
fully working. :-)

Didn't remove special case for add_catalog_entry_attributes.sh since it
still does stuff that the build system doesn't do.  Might be able to add
that script as part of the Haiku.hpkg.  See change 3751 for removing it,
https://review.haiku-os.org/c/haiku/+/3751

Change-Id: I3807b78042fdb70e5a79eca2e2a45816ece0236f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2342
Reviewed-by: Alexander G. M. Smith <agmsmith@ncf.ca>
Reviewed-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
2021-03-14 09:10:18 +00:00

99 lines
3.5 KiB
C++

/*
* Copyright 2013, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Ingo Weinhold <ingo_weinhold@gmx.de>
*/
#ifndef _PACKAGE__PRIVATE__DAEMON_DEFS_H_
#define _PACKAGE__PRIVATE__DAEMON_DEFS_H_
namespace BPackageKit {
namespace BPrivate {
#define B_PACKAGE_DAEMON_APP_SIGNATURE "application/x-vnd.haiku-package_daemon"
// message codes for requests to and replies from the daemon
enum {
B_MESSAGE_GET_INSTALLATION_LOCATION_INFO = 'PKLI',
// "location": int32
// the respective installation location constant
B_MESSAGE_GET_INSTALLATION_LOCATION_INFO_REPLY = 'PKLR',
// "base directory device": int32
// "base directory node": int64
// "packages directory device": int32
// "packages directory node": int64
// "change count": int64
// "active packages": message[]
// archived BPackageInfos of the active packages
// "inactive packages": message[]
// archived BPackageInfos of the inactive packages
B_MESSAGE_COMMIT_TRANSACTION = 'PKTC',
// "location": int32
// the respective installation location constant
// "change count": int64
// the expected change count of the installation location; fail,
// if something has changed in the meantime
// "transaction": string
// name of the transaction directory (subdirectory of the
// administrative directory) where to-be-activated packages live
// "activate": string[]
// file names of the packages to activate; must be in the
// transaction directory
// "deactivate": string[]
// file names of the packages to activate; must be in the
// transaction directory
// "first boot processing": bool
// if true then runs the package installation processing for
// specified (in the activate list) packages on the volume.
// Doesn't actually add the packages. Package_daemon preemptively
// deletes an empty transaction directory when done.
B_MESSAGE_COMMIT_TRANSACTION_REPLY = 'PKTR'
// "error": int32
// a BTransactionError describing how committing the transaction
// went
// "system error": int32
// a status_t for the operation that failed; B_ERROR, if n/a
// "error package": string
// [error case only] file name of the package causing the error,
// if any in particarly; optional
// "path1": string
// [error case only] first path specific to the error
// "path2": string
// [error case only] second path specific to the error
// "string1": string
// [error case only] first string specific to the error
// "string2": string
// [error case only] second string specific to the error
// "old state": string
// [success case only] name of the directory (subdirectory of the
// administrative directory) containing the deactivated packages
// "issues": message[]
// A list of non-critical issues that occurred while performing the
// package activation. On success the user should be notified about
// these. Each contains:
// "type": int32
// a BTransactionIssue::BType specifying the kind of issue
// "package": string
// file name of the package which the issue is related to
// "path1": string
// first path specific to the issue
// "path2": string
// second path specific to the issue
// "system error": int32
// a status_t for the operation that failed; B_OK, if n/a
// "exit code": int32
// a exit code of the program that failed; 0, if n/a
};
} // namespace BPrivate
} // namespace BPackageKit
#endif // _PACKAGE__PRIVATE__DAEMON_DEFS_H_