hpkg format: Add attribute for declaring post install scripts
This commit is contained in:
@@ -90,6 +90,8 @@ public:
|
|||||||
const BObjectList<BUser>& Users() const;
|
const BObjectList<BUser>& Users() const;
|
||||||
const BStringList& Groups() const;
|
const BStringList& Groups() const;
|
||||||
|
|
||||||
|
const BStringList& PostInstallScripts() const;
|
||||||
|
|
||||||
const BObjectList<BPackageResolvable>& ProvidesList() const;
|
const BObjectList<BPackageResolvable>& ProvidesList() const;
|
||||||
const BObjectList<BPackageResolvableExpression>&
|
const BObjectList<BPackageResolvableExpression>&
|
||||||
RequiresList() const;
|
RequiresList() const;
|
||||||
@@ -145,6 +147,9 @@ public:
|
|||||||
void ClearGroups();
|
void ClearGroups();
|
||||||
status_t AddGroup(const BString& group);
|
status_t AddGroup(const BString& group);
|
||||||
|
|
||||||
|
void ClearPostInstallScripts();
|
||||||
|
status_t AddPostInstallScript(const BString& path);
|
||||||
|
|
||||||
void ClearProvidesList();
|
void ClearProvidesList();
|
||||||
status_t AddProvides(const BPackageResolvable& provides);
|
status_t AddProvides(const BPackageResolvable& provides);
|
||||||
|
|
||||||
@@ -278,6 +283,8 @@ private:
|
|||||||
UserList fUsers;
|
UserList fUsers;
|
||||||
BStringList fGroups;
|
BStringList fGroups;
|
||||||
|
|
||||||
|
BStringList fPostInstallScripts;
|
||||||
|
|
||||||
ResolvableList fProvidesList;
|
ResolvableList fProvidesList;
|
||||||
|
|
||||||
ResolvableExpressionList fRequiresList;
|
ResolvableExpressionList fRequiresList;
|
||||||
|
|||||||
@@ -49,6 +49,8 @@ enum BPackageInfoAttributeID {
|
|||||||
// list of (Unix) users defined/needed
|
// list of (Unix) users defined/needed
|
||||||
B_PACKAGE_INFO_GROUPS,
|
B_PACKAGE_INFO_GROUPS,
|
||||||
// list of (Unix) groups defined/needed
|
// list of (Unix) groups defined/needed
|
||||||
|
B_PACKAGE_INFO_POST_INSTALL_SCRIPTS,
|
||||||
|
// list of scripts to be executed post-install
|
||||||
//
|
//
|
||||||
B_PACKAGE_INFO_ENUM_COUNT,
|
B_PACKAGE_INFO_ENUM_COUNT,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -77,3 +77,5 @@ B_DEFINE_HPKG_ATTRIBUTE(48, STRING, "package:user.home", PACKAGE_USER_HOME)
|
|||||||
B_DEFINE_HPKG_ATTRIBUTE(49, STRING, "package:user.shell", PACKAGE_USER_SHELL)
|
B_DEFINE_HPKG_ATTRIBUTE(49, STRING, "package:user.shell", PACKAGE_USER_SHELL)
|
||||||
B_DEFINE_HPKG_ATTRIBUTE(50, STRING, "package:user.group", PACKAGE_USER_GROUP)
|
B_DEFINE_HPKG_ATTRIBUTE(50, STRING, "package:user.group", PACKAGE_USER_GROUP)
|
||||||
B_DEFINE_HPKG_ATTRIBUTE(51, STRING, "package:group", PACKAGE_GROUP)
|
B_DEFINE_HPKG_ATTRIBUTE(51, STRING, "package:group", PACKAGE_GROUP)
|
||||||
|
B_DEFINE_HPKG_ATTRIBUTE(52, STRING, "package:post-install-script",
|
||||||
|
PACKAGE_POST_INSTALL_SCRIPT)
|
||||||
|
|||||||
@@ -326,6 +326,10 @@ struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
|||||||
printf("\tgroup: %s\n", value.string);
|
printf("\tgroup: %s\n", value.string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||||
|
printf("\tpost install script: %s\n", value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||||
printf("\tinstall path: %s\n", value.string);
|
printf("\tinstall path: %s\n", value.string);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ const char* const BPackageInfo::kElementNames[B_PACKAGE_INFO_ENUM_COUNT] = {
|
|||||||
"global-settings-files",
|
"global-settings-files",
|
||||||
"user-settings-files",
|
"user-settings-files",
|
||||||
"users",
|
"users",
|
||||||
"groups"
|
"groups",
|
||||||
|
"post-install-scripts"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -171,6 +172,7 @@ BPackageInfo::BPackageInfo()
|
|||||||
fUserSettingsFileInfos(4, true),
|
fUserSettingsFileInfos(4, true),
|
||||||
fUsers(4, true),
|
fUsers(4, true),
|
||||||
fGroups(4),
|
fGroups(4),
|
||||||
|
fPostInstallScripts(4),
|
||||||
fProvidesList(20, true),
|
fProvidesList(20, true),
|
||||||
fRequiresList(20, true),
|
fRequiresList(20, true),
|
||||||
fSupplementsList(20, true),
|
fSupplementsList(20, true),
|
||||||
@@ -194,6 +196,7 @@ BPackageInfo::BPackageInfo(BMessage* archive, status_t* _error)
|
|||||||
fUserSettingsFileInfos(4, true),
|
fUserSettingsFileInfos(4, true),
|
||||||
fUsers(4, true),
|
fUsers(4, true),
|
||||||
fGroups(4),
|
fGroups(4),
|
||||||
|
fPostInstallScripts(4),
|
||||||
fProvidesList(20, true),
|
fProvidesList(20, true),
|
||||||
fRequiresList(20, true),
|
fRequiresList(20, true),
|
||||||
fSupplementsList(20, true),
|
fSupplementsList(20, true),
|
||||||
@@ -225,6 +228,8 @@ BPackageInfo::BPackageInfo(BMessage* archive, status_t* _error)
|
|||||||
fUserSettingsFileInfos)) == B_OK
|
fUserSettingsFileInfos)) == B_OK
|
||||||
&& (error = _ExtractUsers(archive, "users", fUsers)) == B_OK
|
&& (error = _ExtractUsers(archive, "users", fUsers)) == B_OK
|
||||||
&& (error = _ExtractStringList(archive, "groups", fGroups)) == B_OK
|
&& (error = _ExtractStringList(archive, "groups", fGroups)) == B_OK
|
||||||
|
&& (error = _ExtractStringList(archive, "post-install-scripts",
|
||||||
|
fPostInstallScripts)) == B_OK
|
||||||
&& (error = _ExtractResolvables(archive, "provides", fProvidesList))
|
&& (error = _ExtractResolvables(archive, "provides", fProvidesList))
|
||||||
== B_OK
|
== B_OK
|
||||||
&& (error = _ExtractResolvableExpressions(archive, "requires",
|
&& (error = _ExtractResolvableExpressions(archive, "requires",
|
||||||
@@ -516,6 +521,13 @@ BPackageInfo::Groups() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const BStringList&
|
||||||
|
BPackageInfo::PostInstallScripts() const
|
||||||
|
{
|
||||||
|
return fPostInstallScripts;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const BObjectList<BPackageResolvable>&
|
const BObjectList<BPackageResolvable>&
|
||||||
BPackageInfo::ProvidesList() const
|
BPackageInfo::ProvidesList() const
|
||||||
{
|
{
|
||||||
@@ -779,6 +791,20 @@ BPackageInfo::AddGroup(const BString& group)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
BPackageInfo::ClearPostInstallScripts()
|
||||||
|
{
|
||||||
|
fPostInstallScripts.MakeEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
BPackageInfo::AddPostInstallScript(const BString& path)
|
||||||
|
{
|
||||||
|
return fPostInstallScripts.Add(path) ? B_OK : B_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
BPackageInfo::ClearProvidesList()
|
BPackageInfo::ClearProvidesList()
|
||||||
{
|
{
|
||||||
@@ -910,6 +936,7 @@ BPackageInfo::Clear()
|
|||||||
fUserSettingsFileInfos.MakeEmpty();
|
fUserSettingsFileInfos.MakeEmpty();
|
||||||
fUsers.MakeEmpty();
|
fUsers.MakeEmpty();
|
||||||
fGroups.MakeEmpty();
|
fGroups.MakeEmpty();
|
||||||
|
fPostInstallScripts.MakeEmpty();
|
||||||
fRequiresList.MakeEmpty();
|
fRequiresList.MakeEmpty();
|
||||||
fProvidesList.MakeEmpty();
|
fProvidesList.MakeEmpty();
|
||||||
fSupplementsList.MakeEmpty();
|
fSupplementsList.MakeEmpty();
|
||||||
@@ -947,6 +974,8 @@ BPackageInfo::Archive(BMessage* archive, bool deep) const
|
|||||||
"user-settings-files", fUserSettingsFileInfos)) != B_OK
|
"user-settings-files", fUserSettingsFileInfos)) != B_OK
|
||||||
|| (error = _AddUsers(archive, "users", fUsers)) != B_OK
|
|| (error = _AddUsers(archive, "users", fUsers)) != B_OK
|
||||||
|| (error = archive->AddStrings("groups", fGroups)) != B_OK
|
|| (error = archive->AddStrings("groups", fGroups)) != B_OK
|
||||||
|
|| (error = archive->AddStrings("post-install-scripts",
|
||||||
|
fPostInstallScripts)) != B_OK
|
||||||
|| (error = _AddResolvables(archive, "provides", fProvidesList)) != B_OK
|
|| (error = _AddResolvables(archive, "provides", fProvidesList)) != B_OK
|
||||||
|| (error = _AddResolvableExpressions(archive, "requires",
|
|| (error = _AddResolvableExpressions(archive, "requires",
|
||||||
fRequiresList)) != B_OK
|
fRequiresList)) != B_OK
|
||||||
@@ -994,6 +1023,7 @@ BPackageInfo::GetConfigString(BString& _string) const
|
|||||||
.Write("user-settings-files", fUserSettingsFileInfos)
|
.Write("user-settings-files", fUserSettingsFileInfos)
|
||||||
.Write("users", fUsers)
|
.Write("users", fUsers)
|
||||||
.Write("groups", fGroups)
|
.Write("groups", fGroups)
|
||||||
|
.Write("post-install-scripts", fPostInstallScripts)
|
||||||
.Write("provides", fProvidesList)
|
.Write("provides", fProvidesList)
|
||||||
.BeginRequires(fBasePackage)
|
.BeginRequires(fBasePackage)
|
||||||
.Write("requires", fRequiresList)
|
.Write("requires", fRequiresList)
|
||||||
|
|||||||
@@ -934,6 +934,10 @@ BPackageInfo::Parser::_Parse(BPackageInfo* packageInfo)
|
|||||||
_ParseStringList(&packageInfo->fGroups);
|
_ParseStringList(&packageInfo->fGroups);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||||
|
_ParseStringList(&packageInfo->fPostInstallScripts);
|
||||||
|
break;
|
||||||
|
|
||||||
case B_PACKAGE_INFO_PROVIDES:
|
case B_PACKAGE_INFO_PROVIDES:
|
||||||
_ParseResolvableList(&packageInfo->fProvidesList);
|
_ParseResolvableList(&packageInfo->fProvidesList);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -647,6 +647,11 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute(
|
|||||||
fPackageInfoValue.SetTo(B_PACKAGE_INFO_GROUPS, value.string);
|
fPackageInfoValue.SetTo(B_PACKAGE_INFO_GROUPS, value.string);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case B_HPKG_ATTRIBUTE_ID_PACKAGE_POST_INSTALL_SCRIPT:
|
||||||
|
fPackageInfoValue.SetTo(B_PACKAGE_INFO_POST_INSTALL_SCRIPTS,
|
||||||
|
value.string);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (context->ignoreUnknownAttributes)
|
if (context->ignoreUnknownAttributes)
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -457,6 +457,13 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList,
|
|||||||
groups.StringAt(i), attributeList);
|
groups.StringAt(i), attributeList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// post install script list
|
||||||
|
const BStringList& postInstallScripts = packageInfo.PostInstallScripts();
|
||||||
|
for (int32 i = 0; i < postInstallScripts.CountStrings(); i++) {
|
||||||
|
_AddStringAttribute(B_HPKG_ATTRIBUTE_ID_PACKAGE_POST_INSTALL_SCRIPT,
|
||||||
|
postInstallScripts.StringAt(i), attributeList);
|
||||||
|
}
|
||||||
|
|
||||||
// checksum (optional, only exists in repositories)
|
// checksum (optional, only exists in repositories)
|
||||||
_AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM,
|
_AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM,
|
||||||
packageInfo.Checksum(), attributeList);
|
packageInfo.Checksum(), attributeList);
|
||||||
|
|||||||
Reference in New Issue
Block a user