hpkg format: Add attribute for declaring post install scripts
This commit is contained in:
parent
927e070869
commit
c0ab140961
@ -90,6 +90,8 @@ public:
|
||||
const BObjectList<BUser>& Users() const;
|
||||
const BStringList& Groups() const;
|
||||
|
||||
const BStringList& PostInstallScripts() const;
|
||||
|
||||
const BObjectList<BPackageResolvable>& ProvidesList() const;
|
||||
const BObjectList<BPackageResolvableExpression>&
|
||||
RequiresList() const;
|
||||
@ -145,6 +147,9 @@ public:
|
||||
void ClearGroups();
|
||||
status_t AddGroup(const BString& group);
|
||||
|
||||
void ClearPostInstallScripts();
|
||||
status_t AddPostInstallScript(const BString& path);
|
||||
|
||||
void ClearProvidesList();
|
||||
status_t AddProvides(const BPackageResolvable& provides);
|
||||
|
||||
@ -278,6 +283,8 @@ private:
|
||||
UserList fUsers;
|
||||
BStringList fGroups;
|
||||
|
||||
BStringList fPostInstallScripts;
|
||||
|
||||
ResolvableList fProvidesList;
|
||||
|
||||
ResolvableExpressionList fRequiresList;
|
||||
|
@ -49,6 +49,8 @@ enum BPackageInfoAttributeID {
|
||||
// list of (Unix) users defined/needed
|
||||
B_PACKAGE_INFO_GROUPS,
|
||||
// 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,
|
||||
};
|
||||
|
@ -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(50, STRING, "package:user.group", PACKAGE_USER_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);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||
printf("\tpost install script: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||
printf("\tinstall path: %s\n", value.string);
|
||||
break;
|
||||
|
@ -54,7 +54,8 @@ const char* const BPackageInfo::kElementNames[B_PACKAGE_INFO_ENUM_COUNT] = {
|
||||
"global-settings-files",
|
||||
"user-settings-files",
|
||||
"users",
|
||||
"groups"
|
||||
"groups",
|
||||
"post-install-scripts"
|
||||
};
|
||||
|
||||
|
||||
@ -171,6 +172,7 @@ BPackageInfo::BPackageInfo()
|
||||
fUserSettingsFileInfos(4, true),
|
||||
fUsers(4, true),
|
||||
fGroups(4),
|
||||
fPostInstallScripts(4),
|
||||
fProvidesList(20, true),
|
||||
fRequiresList(20, true),
|
||||
fSupplementsList(20, true),
|
||||
@ -194,6 +196,7 @@ BPackageInfo::BPackageInfo(BMessage* archive, status_t* _error)
|
||||
fUserSettingsFileInfos(4, true),
|
||||
fUsers(4, true),
|
||||
fGroups(4),
|
||||
fPostInstallScripts(4),
|
||||
fProvidesList(20, true),
|
||||
fRequiresList(20, true),
|
||||
fSupplementsList(20, true),
|
||||
@ -225,6 +228,8 @@ BPackageInfo::BPackageInfo(BMessage* archive, status_t* _error)
|
||||
fUserSettingsFileInfos)) == B_OK
|
||||
&& (error = _ExtractUsers(archive, "users", fUsers)) == B_OK
|
||||
&& (error = _ExtractStringList(archive, "groups", fGroups)) == B_OK
|
||||
&& (error = _ExtractStringList(archive, "post-install-scripts",
|
||||
fPostInstallScripts)) == B_OK
|
||||
&& (error = _ExtractResolvables(archive, "provides", fProvidesList))
|
||||
== B_OK
|
||||
&& (error = _ExtractResolvableExpressions(archive, "requires",
|
||||
@ -516,6 +521,13 @@ BPackageInfo::Groups() const
|
||||
}
|
||||
|
||||
|
||||
const BStringList&
|
||||
BPackageInfo::PostInstallScripts() const
|
||||
{
|
||||
return fPostInstallScripts;
|
||||
}
|
||||
|
||||
|
||||
const BObjectList<BPackageResolvable>&
|
||||
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
|
||||
BPackageInfo::ClearProvidesList()
|
||||
{
|
||||
@ -910,6 +936,7 @@ BPackageInfo::Clear()
|
||||
fUserSettingsFileInfos.MakeEmpty();
|
||||
fUsers.MakeEmpty();
|
||||
fGroups.MakeEmpty();
|
||||
fPostInstallScripts.MakeEmpty();
|
||||
fRequiresList.MakeEmpty();
|
||||
fProvidesList.MakeEmpty();
|
||||
fSupplementsList.MakeEmpty();
|
||||
@ -947,6 +974,8 @@ BPackageInfo::Archive(BMessage* archive, bool deep) const
|
||||
"user-settings-files", fUserSettingsFileInfos)) != B_OK
|
||||
|| (error = _AddUsers(archive, "users", fUsers)) != 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 = _AddResolvableExpressions(archive, "requires",
|
||||
fRequiresList)) != B_OK
|
||||
@ -994,6 +1023,7 @@ BPackageInfo::GetConfigString(BString& _string) const
|
||||
.Write("user-settings-files", fUserSettingsFileInfos)
|
||||
.Write("users", fUsers)
|
||||
.Write("groups", fGroups)
|
||||
.Write("post-install-scripts", fPostInstallScripts)
|
||||
.Write("provides", fProvidesList)
|
||||
.BeginRequires(fBasePackage)
|
||||
.Write("requires", fRequiresList)
|
||||
|
@ -934,6 +934,10 @@ BPackageInfo::Parser::_Parse(BPackageInfo* packageInfo)
|
||||
_ParseStringList(&packageInfo->fGroups);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||
_ParseStringList(&packageInfo->fPostInstallScripts);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_PROVIDES:
|
||||
_ParseResolvableList(&packageInfo->fProvidesList);
|
||||
break;
|
||||
|
@ -647,6 +647,11 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute(
|
||||
fPackageInfoValue.SetTo(B_PACKAGE_INFO_GROUPS, value.string);
|
||||
break;
|
||||
|
||||
case B_HPKG_ATTRIBUTE_ID_PACKAGE_POST_INSTALL_SCRIPT:
|
||||
fPackageInfoValue.SetTo(B_PACKAGE_INFO_POST_INSTALL_SCRIPTS,
|
||||
value.string);
|
||||
break;
|
||||
|
||||
default:
|
||||
if (context->ignoreUnknownAttributes)
|
||||
break;
|
||||
|
@ -457,6 +457,13 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& 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)
|
||||
_AddStringAttributeIfNotEmpty(B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM,
|
||||
packageInfo.Checksum(), attributeList);
|
||||
|
Loading…
x
Reference in New Issue
Block a user