From ee4f544d839722c92e83ff96f5c3c38749b3af8e Mon Sep 17 00:00:00 2001 From: Arfrever Frehtes Taifersar Arahesis Date: Sun, 3 Apr 2011 19:28:58 +0200 Subject: Support PORTAGE_GPG_SIGNING_COMMAND variable. --- bin/repoman | 27 +++++++++++++++------------ cnf/make.globals | 3 +++ man/make.conf.5 | 4 ++++ 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/bin/repoman b/bin/repoman index 8f363722d..946275319 100755 --- a/bin/repoman +++ b/bin/repoman @@ -2419,23 +2419,26 @@ else: # Setup the GPG commands def gpgsign(filename): - if "PORTAGE_GPG_KEY" not in repoman_settings: + if "PORTAGE_GPG_KEY" not in repoman_settings and "${PORTAGE_GPG_KEY}" in repoman_settings["PORTAGE_GPG_SIGNING_COMMAND"]: raise portage.exception.MissingParameter("PORTAGE_GPG_KEY is unset!") - if "PORTAGE_GPG_DIR" not in repoman_settings: + if "PORTAGE_GPG_DIR" not in repoman_settings and "${PORTAGE_GPG_DIR}" in repoman_settings["PORTAGE_GPG_SIGNING_COMMAND"]: repoman_settings["PORTAGE_GPG_DIR"] = os.path.expanduser("~/.gnupg") logging.info("Automatically setting PORTAGE_GPG_DIR to '%s'" % repoman_settings["PORTAGE_GPG_DIR"]) - repoman_settings["PORTAGE_GPG_DIR"] = os.path.expanduser(repoman_settings["PORTAGE_GPG_DIR"]) - if not os.access(repoman_settings["PORTAGE_GPG_DIR"], os.X_OK): - raise portage.exception.InvalidLocation( - "Unable to access directory: PORTAGE_GPG_DIR='%s'" % \ - repoman_settings["PORTAGE_GPG_DIR"]) - gpgcmd = "gpg --sign --clearsign --yes" - gpgcmd += " --default-key " + repoman_settings["PORTAGE_GPG_KEY"] - gpgcmd += " --homedir " + repoman_settings["PORTAGE_GPG_DIR"] + if "${PORTAGE_GPG_DIR}" in repoman_settings["PORTAGE_GPG_SIGNING_COMMAND"]: + repoman_settings["PORTAGE_GPG_DIR"] = os.path.expanduser(repoman_settings["PORTAGE_GPG_DIR"]) + if not os.access(repoman_settings["PORTAGE_GPG_DIR"], os.X_OK): + raise portage.exception.InvalidLocation( + "Unable to access directory: PORTAGE_GPG_DIR='%s'" % \ + repoman_settings["PORTAGE_GPG_DIR"]) + gpgvars = {"FILE": filename} + for var in ("PORTAGE_GPG_DIR", "PORTAGE_GPG_KEY"): + if "${%s}" % var in repoman_settings["PORTAGE_GPG_SIGNING_COMMAND"]: + gpgvars[var] = repoman_settings[var] + gpgcmd = portage.util.varexpand(repoman_settings["PORTAGE_GPG_SIGNING_COMMAND"], mydict=gpgvars) if options.pretend: - print("("+gpgcmd+" "+filename+")") + print("("+gpgcmd+")") else: - rValue = os.system(gpgcmd+" "+filename) + rValue = os.system(gpgcmd) if rValue == os.EX_OK: os.rename(filename+".asc", filename) else: diff --git a/cnf/make.globals b/cnf/make.globals index 542d6aaf6..95afb565b 100644 --- a/cnf/make.globals +++ b/cnf/make.globals @@ -123,6 +123,9 @@ PORTAGE_ELOG_MAILURI="root" PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for \${PACKAGE} on \${HOST}" PORTAGE_ELOG_MAILFROM="portage@localhost" +# Signing command used by repoman +PORTAGE_GPG_SIGNING_COMMAND="gpg --sign --clearsign --yes --default-key \"\${PORTAGE_GPG_KEY}\" --homedir \"\${PORTAGE_GPG_DIR}\" \"\${FILE}\"" + # ***************************** # ** DO NOT EDIT THIS FILE ** # *************************************************** diff --git a/man/make.conf.5 b/man/make.conf.5 index eca82c9cf..a86f257f7 100644 --- a/man/make.conf.5 +++ b/man/make.conf.5 @@ -670,6 +670,10 @@ Defaults to $HOME/.gnupg. The \fBgpg\fR(1) key used by \fBrepoman\fR(1) to sign manifests when \fBsign\fR is in \fBFEATURES\fR. .TP +.B PORTAGE_GPG_SIGNING_COMMAND +The command used by \fBrepoman\fR(1) to sign manifests when \fBsign\fR is +in \fBFEATURES\fR. +.TP \fBPORTAGE_IONICE_COMMAND\fR = \fI[ionice command string]\fR This variable should contain a command for portage to call in order to adjust the io priority of portage and it's subprocesses. The command -- cgit v1.2.3-1-g7c22