History log of /haiku/headers/os/package/PackageInfo.h
Revision Date Author Comments
# 8b5f785b 27-Mar-2024 X512 <danger_mail@list.ru>

kits/package: allow to set BPackageResolvable to parsed string

Change-Id: I8ebb46b12a8af229d05994eb3cdd2d8180edc903
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7555
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# a22fa0c9 04-Jun-2019 Alexander G. M. Smith <agmsmith@ncf.ca>

package kit: Add pre-uninstall scripts feature.

Just like post-install scripts which run shortly after a package is
installed, pre-uninstall scripts are run just before a package is
removed. Implements enhancement #13427

* Fix script exit code handling vs script launch errors.
* Bump package and repo file version numbers due to new attribute,
unfortunately makes new .hpkg files not backwards compatible.
* Add pre-uninstall functionality, mostly cloning the post-install
except in a few places.
* Discover that _RunQueuedScripts() is never called, a future TODO:?
* Update package documentation for pre-uninstall scripts, and use of
the boot/post-install directory.

Change-Id: I45596255ce74bc102f6e5b606cbf83e4e4347a17
Reviewed-on: https://review.haiku-os.org/c/haiku/+/1504
Reviewed-by: Alexander G. M. Smith <agmsmith@ncf.ca>
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 01adde85 27-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add ArchitectureName()


# 88706cfa 20-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

package kit: Add API for parsing resolvable expression strings

* Add BPackageInfo::ParseResolvableExpressionString().
* Add BPackageResolvableExpression constructor and SetTo() taking an
expression string.


# 6692db5c 29-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add fileName property

The property is archived and unarchived, but otherwise not yet stored.
If not set, FileName() returns CanonicalFileName(). Can be used for
packages like haiku.hpkg etc. that don't have a properly qualified file
name (yet).


# bc0491ae 27-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add Matches()

Checks whether the package satisfies the given
BPackageResolvableExpression.


# 4489c88b 05-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Generalize user/global settings file attributes

* For all identifiers: Rename global settings file to global writable
file. We want to use the respective attribute also for other writable
files, not only settings files.
* User settings file/global writable file info/attribute: Add
isDirectory property/child attribute. This allows declaring global/
user settings directories associated with the package.


# c0ab1409 24-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attribute for declaring post install scripts


# 0f4e11e7 23-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attributes for declaring users and groups


# fe707a23 23-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attributes for declaring settings files

Global and user settings files can be declared. For global ones an
update policy can be specified. If not specified, the settings file is
not included in the package, but created by the program (or user) later.
If an update type is specified, it defines what to do with the settings
file when updating the package to a newer version.

User settings files are never included in the package; they are always
created by the program or the user. If the package contains a template/
default settings file, it can be declared, but for informative purposes
only.


# bc306e21 21-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Declare some string constants actually const


# 7adfd76b 13-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add "base package" package attribute


# dd0b33cb 12-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Support reading both HPKG format versions


# be8f5e00 20-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add CanonicalFileName()

The name of the package file is not part of the package-info.
CanonicalFileName() constructs the name the file should have (not
enforced anywhere (yet)).


# 7a27bcd1 19-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Make use of BMessage::{Add,Find}Strings()


# 202c1daa 15-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageVersion: Rename property release to revision

* ... 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.


# 8a4ebe2c 14-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Make BPackageInfo archivable


# 6c6460e1 10-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add GetConfigString() and ToString()


# a3dd6caf 02-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add public package version parsing API

* BPackageVersion: Add respective constructor and SetTo().
* BPackageInfo: Add static ParseVersionString() utility method. It's
only there because the parser lives in the BPackageInfo
implementation.


# dfb5fa8b 01-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add convenience methods BPackageInfo::ReadFromPackageFile()


# 9968845d 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Use BStringList in package kit

Replace all instances of BObjectList<BString> by BStringList.


# 6ae0ecd4 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a package info "install-path" attribute

The attribute is intended for simplifying package building. The
package's install path will be used for the package's .self package
symlink, allowing installation to a temporary directory when building
the package.


# cd8f03a8 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo::ReadFromConfigFile() BFile& version


# c29492a2 29-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix gcc 2 build by making Parser a friend


# eb7e8951 28-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add url and sourceURL properties to BPackageInfo

Also extend the parser to accept "url" and "source-url" attributes.


# 2021c984 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Use BStringList in package kit

Replace all instances of BObjectList<BString> by BStringList.


# f19957b8 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a package info "install-path" attribute

The attribute is intended for simplifying package building. The
package's install path will be used for the package's .self package
symlink, allowing installation to a temporary directory when building
the package.


# bfbb410d 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo::ReadFromConfigFile() BFile& version


# df18eb87 29-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix gcc 2 build by making Parser a friend


# ee453e8b 28-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add url and sourceURL properties to BPackageInfo

Also extend the parser to accept "url" and "source-url" attributes.


# 0d68f6af 09-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented repository writing:
* fleshed out RepositoryWriterImpl
* renamed BRepositoryHeader to BRepositoryInfo (in accordance with
BPackageInfo)
* adjusted BRepositoryInfo to be able to parse itself from a
driver_settings file
* added package_repo binary (only 'create' works as of yet)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40405 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d77c6cd2 08-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

* implemented checking of licenses, such that it is no longer possible
to create a package that refers to a license that is not a system
license or contained in the package
* added package-info flags (currently only approve_license and
system_package)
* adjusted package-reader/writer and pkgman accordingly

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40393 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f0278cd 04-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented reading of package info attributes from hpkg file
* added kernel-compatible datatypes for reading package info attribute
values (PackageInfoAttributeValue.h) - these will be used at a later
stage by the package-fs to transport those attributes to userland
when asked to do so (by ioctl)
* implemented parsing of package info attributes in PackageReaderImpl
* added support for compressed package attribute section to
PackageReaderImpl
* completed the writing of package info attributes in PackageWriterImpl
and fixed a couple of bugs exposed by parsing
* adjusted 'package list' to show the package info attributes as they
are found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40354 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3aeae97f 29-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* added type-support to BPackageResolvable
* split BPackageResolvable, BPackageResolvableExpression
and BPackageVersion into separate files


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40316 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 30222ff1 28-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Completed PackageInfo-parser and fleshed out BPackageVersion, BPackageProvision and BPackageRequirement.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40313 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d6b3b20 27-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

More work on package kit:
* added class BPackageInfo, which contains packaging attributes of
a package (the values relevant for package management)
* implemented parser (mostly) for reading a BPackageInfo from a config
file (.PackageInfo) in order to pass them on to the PackageWriter
when creating a package
* pulled hpkg-related stuff from bin/package into the package kit
* adjusted packagefs-Volume to skip .PackageInfo files when populating
the mountpoint, as those files shouldn't appear as part of an
activated package


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40301 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 01adde8502485b01e08f3e108d980866e763f5ce 27-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add ArchitectureName()


# 88706cfaa5b04a0fe4f24aabcd3e2f74b80ab6f4 20-Nov-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

package kit: Add API for parsing resolvable expression strings

* Add BPackageInfo::ParseResolvableExpressionString().
* Add BPackageResolvableExpression constructor and SetTo() taking an
expression string.


# 6692db5c1c028bd7a08333d0df4b27122dd43513 29-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add fileName property

The property is archived and unarchived, but otherwise not yet stored.
If not set, FileName() returns CanonicalFileName(). Can be used for
packages like haiku.hpkg etc. that don't have a properly qualified file
name (yet).


# bc0491ae52c1b1375129de52d96fc5698671ff46 27-Aug-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add Matches()

Checks whether the package satisfies the given
BPackageResolvableExpression.


# 4489c88b61bd4b70ff3a91d24ef5a0088e9c4691 05-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Generalize user/global settings file attributes

* For all identifiers: Rename global settings file to global writable
file. We want to use the respective attribute also for other writable
files, not only settings files.
* User settings file/global writable file info/attribute: Add
isDirectory property/child attribute. This allows declaring global/
user settings directories associated with the package.


# c0ab14096139c4e72a501bc6e82ab92d0e9e48f3 24-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attribute for declaring post install scripts


# 0f4e11e75c244fd61da150011f1eae5fe79fc2a9 23-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attributes for declaring users and groups


# fe707a23fc6dc0bccb3e80201bf3e4146dcde74e 23-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

hpkg format: Add attributes for declaring settings files

Global and user settings files can be declared. For global ones an
update policy can be specified. If not specified, the settings file is
not included in the package, but created by the program (or user) later.
If an update type is specified, it defines what to do with the settings
file when updating the package to a newer version.

User settings files are never included in the package; they are always
created by the program or the user. If the package contains a template/
default settings file, it can be declared, but for informative purposes
only.


# bc306e210fdad4d7c6d7fe2ecd17177627f0e503 21-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Declare some string constants actually const


# 7adfd76b17adc78b0646a835711d3cd935bfb02b 13-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add "base package" package attribute


# dd0b33cb6330ac9c9e8430d2a8f94396474c8128 12-May-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Support reading both HPKG format versions


# be8f5e00f136fdc45f58c4a1c4d802eac9a6e96c 20-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add CanonicalFileName()

The name of the package file is not part of the package-info.
CanonicalFileName() constructs the name the file should have (not
enforced anywhere (yet)).


# 7a27bcd1132c79d60658b7424990b1ad632886a9 19-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Make use of BMessage::{Add,Find}Strings()


# 202c1daaed2556eaccea80643e58d498594f2506 15-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageVersion: Rename property release to revision

* ... 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.


# 8a4ebe2c469333d0cabc9a9a6d353d4b42f61d6c 14-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Make BPackageInfo archivable


# 6c6460e1f644e5b48e7fc4528d33219fe13f270e 10-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo: Add GetConfigString() and ToString()


# a3dd6caf55b8862747542069f3bf116e92723eab 02-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add public package version parsing API

* BPackageVersion: Add respective constructor and SetTo().
* BPackageInfo: Add static ParseVersionString() utility method. It's
only there because the parser lives in the BPackageInfo
implementation.


# dfb5fa8ba3da4fe01df1cab7a233b9ce145c06ac 01-Apr-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Add convenience methods BPackageInfo::ReadFromPackageFile()


# 9968845d6988000a9235d7eb09031e80d997f31d 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Use BStringList in package kit

Replace all instances of BObjectList<BString> by BStringList.


# 6ae0ecd49a584abd81f3fa0fb0c0dd5b7a3ddb71 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a package info "install-path" attribute

The attribute is intended for simplifying package building. The
package's install path will be used for the package's .self package
symlink, allowing installation to a temporary directory when building
the package.


# cd8f03a8cc9f8859fba9a1072c56cf6d3ab9f99f 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo::ReadFromConfigFile() BFile& version


# c29492a252e0e48bb2224bc68c703ef951a01f8b 29-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix gcc 2 build by making Parser a friend


# eb7e89518a520a972f8005c7fbedba5c730d960c 28-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add url and sourceURL properties to BPackageInfo

Also extend the parser to accept "url" and "source-url" attributes.


# 2021c9842e1e61a3bf0f6550725ec3baf53d44b1 16-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Use BStringList in package kit

Replace all instances of BObjectList<BString> by BStringList.


# f19957b8e5311ffc5b802032e4f24cdda81f9b50 11-Jul-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add a package info "install-path" attribute

The attribute is intended for simplifying package building. The
package's install path will be used for the package's .self package
symlink, allowing installation to a temporary directory when building
the package.


# bfbb410d1a0c26a5c39fbaeb10bfbd69ccf0cb1a 30-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

BPackageInfo::ReadFromConfigFile() BFile& version


# df18eb8718898fb7e41b9e08e213a5ea36ee137f 29-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix gcc 2 build by making Parser a friend


# ee453e8bbccd77988e5c422a4e3d76058bd95fb2 28-Jun-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Add url and sourceURL properties to BPackageInfo

Also extend the parser to accept "url" and "source-url" attributes.


# 0d68f6afb34d8e01421123b216e34771d1c7fbfe 09-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented repository writing:
* fleshed out RepositoryWriterImpl
* renamed BRepositoryHeader to BRepositoryInfo (in accordance with
BPackageInfo)
* adjusted BRepositoryInfo to be able to parse itself from a
driver_settings file
* added package_repo binary (only 'create' works as of yet)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40405 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d77c6cd26a5cf3863ba4258a063d7d8645abf1e3 08-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

* implemented checking of licenses, such that it is no longer possible
to create a package that refers to a license that is not a system
license or contained in the package
* added package-info flags (currently only approve_license and
system_package)
* adjusted package-reader/writer and pkgman accordingly

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40393 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6f0278cdc9a22a1e22c3ac3f480beffd6bb5fcff 04-Feb-2011 Oliver Tappe <zooey@hirschkaefer.de>

Implemented reading of package info attributes from hpkg file
* added kernel-compatible datatypes for reading package info attribute
values (PackageInfoAttributeValue.h) - these will be used at a later
stage by the package-fs to transport those attributes to userland
when asked to do so (by ioctl)
* implemented parsing of package info attributes in PackageReaderImpl
* added support for compressed package attribute section to
PackageReaderImpl
* completed the writing of package info attributes in PackageWriterImpl
and fixed a couple of bugs exposed by parsing
* adjusted 'package list' to show the package info attributes as they
are found


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40354 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3aeae97f65ba61b4d012c6489514eb47ef9a3825 29-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

* added type-support to BPackageResolvable
* split BPackageResolvable, BPackageResolvableExpression
and BPackageVersion into separate files


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40316 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 30222ff14182264804cf1361fcd6db5d7d537155 28-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

Completed PackageInfo-parser and fleshed out BPackageVersion, BPackageProvision and BPackageRequirement.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40313 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d6b3b20e15fe2cbeb5e81749f888c26ca289338 27-Jan-2011 Oliver Tappe <zooey@hirschkaefer.de>

More work on package kit:
* added class BPackageInfo, which contains packaging attributes of
a package (the values relevant for package management)
* implemented parser (mostly) for reading a BPackageInfo from a config
file (.PackageInfo) in order to pass them on to the PackageWriter
when creating a package
* pulled hpkg-related stuff from bin/package into the package kit
* adjusted packagefs-Volume to skip .PackageInfo files when populating
the mountpoint, as those files shouldn't appear as part of an
activated package


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40301 a95241bf-73f2-0310-859d-f6bbb57e9c96