From dbd50f94d0f5a794f89a537692973edab38d694d Mon Sep 17 00:00:00 2001 From: Hrvoje Senjan Date: Mon, 20 Apr 2015 02:29:19 +0200 Subject: [PATCH 1/1] Create reproducible builds By using QHash we get randomness on each build of policy files, which is definately not needed for names, comments and descriptions. With QMap we get nice alphabetic sorting, and builds of packages that use kauth_install_actions macro have identical builds. REVIEW: 123430 --- src/backends/polkit-1/kauth-policy-gen-polkit1.cpp | 16 ++++++++-------- src/policy-gen/policy-gen.cpp | 6 +++--- src/policy-gen/policy-gen.h | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/backends/polkit-1/kauth-policy-gen-polkit1.cpp b/src/backends/polkit-1/kauth-policy-gen-polkit1.cpp index 2dfd6beb59fc99437b726181e2dbba2bb436c36a..b3a706e0e3bb8c2772f7ae4edec7f93d6a270ac3 100644 --- a/src/backends/polkit-1/kauth-policy-gen-polkit1.cpp +++ b/src/backends/polkit-1/kauth-policy-gen-polkit1.cpp @@ -39,7 +39,7 @@ const char policy_tag[] = "" const char dent[] = " "; -void output(QList actions, QHash domain) +void output(QList actions, QMap domain) { QTextStream out(stdout); out.setCodec("UTF-8"); @@ -47,11 +47,11 @@ void output(QList actions, QHash domain) out << header; // Blacklisted characters + replacements - QHash< QChar, QString > blacklist; + QMap< QChar, QString > blacklist; blacklist.insert(QLatin1Char('&'), QLatin1String("&")); if (domain.contains(QLatin1String("vendor"))) { - QHash< QChar, QString >::const_iterator blI; + QMap< QChar, QString >::const_iterator blI; QString vendor = domain[QLatin1String("vendor")]; for (blI = blacklist.constBegin(); blI != blacklist.constEnd(); ++blI) { vendor.replace(blI.key(), blI.value()); @@ -69,13 +69,13 @@ void output(QList actions, QHash domain) out << dent << "\n"; // Not a typo, messages and descriptions are actually inverted - for (QHash< QString, QString >::const_iterator i = action.messages.constBegin(); i != action.messages.constEnd(); ++i) { + for (QMap< QString, QString >::const_iterator i = action.messages.constBegin(); i != action.messages.constEnd(); ++i) { out << dent << dent << "::const_iterator blI; + QMap< QChar, QString >::const_iterator blI; QString description = i.value(); for (blI = blacklist.constBegin(); blI != blacklist.constEnd(); ++blI) { description.replace(blI.key(), blI.value()); @@ -84,8 +84,8 @@ void output(QList actions, QHash domain) out << '>' << description << "\n"; } - QHash< QString, QString >::const_iterator i; - for (QHash< QString, QString >::const_iterator i = action.descriptions.constBegin(); + QMap< QString, QString >::const_iterator i; + for (QMap< QString, QString >::const_iterator i = action.descriptions.constBegin(); i != action.descriptions.constEnd(); ++i) { out << dent << dent << " actions, QHash domain) out << " xml:lang=\"" << i.key() << '"'; } - QHash< QChar, QString >::const_iterator blI; + QMap< QChar, QString >::const_iterator blI; QString message = i.value(); for (blI = blacklist.constBegin(); blI != blacklist.constEnd(); ++blI) { message.replace(blI.key(), blI.value()); diff --git a/src/policy-gen/policy-gen.cpp b/src/policy-gen/policy-gen.cpp index 99bb0855fa8e9543f45286c4595fdd984ab663b8..9f77af994053982772d64be03aa4162562458068 100644 --- a/src/policy-gen/policy-gen.cpp +++ b/src/policy-gen/policy-gen.cpp @@ -33,7 +33,7 @@ using namespace std; QList parse(QSettings &ini); -QHash parseDomain(QSettings &ini); +QMap parseDomain(QSettings &ini); int main(int argc, char **argv) { @@ -151,9 +151,9 @@ QList parse(QSettings &ini) return actions; } -QHash parseDomain(QSettings &ini) +QMap parseDomain(QSettings &ini) { - QHash rethash; + QMap rethash; if (ini.childGroups().contains(QString::fromLatin1("Domain"))) { if (ini.contains(QString::fromLatin1("Domain/Name"))) { diff --git a/src/policy-gen/policy-gen.h b/src/policy-gen/policy-gen.h index 5bdda1cffcfbf9a2220d3f85f0b5ca621a9d26f5..113d59b1731a4d1028e4e7be48955fba42e14d57 100644 --- a/src/policy-gen/policy-gen.h +++ b/src/policy-gen/policy-gen.h @@ -28,14 +28,14 @@ struct Action { QString name; - QHash descriptions; - QHash messages; + QMap descriptions; + QMap messages; QString policy; QString policyInactive; QString persistence; }; -extern void output(QList actions, QHash domain); +extern void output(QList actions, QMap domain); #endif -- 2.3.5