3376ed1a72
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>
99 lines
3.5 KiB
C++
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_
|