summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTodd Zullinger <tmz@pobox.com>2016-03-27 15:04:55 -0400
committerTodd Zullinger <tmz@pobox.com>2016-03-27 21:31:56 -0400
commitf5bc9a83835bae48836be2b3426ee87842c698fc (patch)
treef8bbb5e5d6b4887825321085f8c4b3396513ed4a
parenta823c54d04289fc13ecf8a2cf3931d47d24be407 (diff)
downloadgit-package-verify-gpg-signatures.tar.gz
git-package-verify-gpg-signatures.tar.xz
git-package-verify-gpg-signatures.zip
Check upstream GPG signatures in %prepverify-gpg-signatures
Many years ago, the GPG signature file was included in the source list¹. A compromise at kernel.org caused the tarballs to move to googlecode.com for a number of releases and the signatures were not provided in an easily downloaded format². When the source location was moved back to kernel.org, the signature file had already been removed from the spec file and was not re-added³. There is an effort underway to make GPG signature verification a requirement when upstream provides signatures⁴. Regardless of whether this becomes a requirement in the packaging guidelines, verification of upstream signatures makes good sense. It also makes the process easier for git package maintainers, who are (or should be ;) doing this manually for each upstream git release. While adding the signatures to the source list, all non-upstream source files were moved to Source10 and above. This should make it easier to add new upstream source files in the future, avoiding the need for tedious (and error-prone) renumbering of existing sources. Remove the unused entry for Patch14 also. ¹ ea3f253 Include gpg signature for tarball in SRPM (2011-08-26) ² c57f383 Update to 1.7.9.1 (2012-02-15) ³ b741f45 Change source URLs, as googlecode doesn't have up-to-date tarballs (2014-06-10) ⁴ https://fedorahosted.org/fpc/ticket/610 https://fedoraproject.org/wiki/PackagingDrafts:GPGSignatures https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/2TBK4LLNRH73QJQSXWFPCQYHGTSJ3C7P/
-rw-r--r--.gitignore2
-rw-r--r--git.spec72
-rw-r--r--gpgkey-junio.asc360
-rw-r--r--sources3
4 files changed, 415 insertions, 22 deletions
diff --git a/.gitignore b/.gitignore
index 7b240da..c6d0c92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,7 @@
*~
+*.gpg
*.rpm
+*.sign
*.tar.xz
/.build*.log
/git-*/
diff --git a/git.spec b/git.spec
index db5914e..60cd6b7 100644
--- a/git.spec
+++ b/git.spec
@@ -56,24 +56,36 @@ License: GPLv2
Group: Development/Tools
URL: https://git-scm.com/
Source0: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.xz
-Source2: git-init.el
-Source3: git.xinetd.in
-Source4: git.conf.httpd
-Source5: git-gui.desktop
-Source6: gitweb.conf.in
-Source10: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.xz
-Source11: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.xz
-Source12: git@.service
-Source13: git.socket
+Source1: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.xz
+Source2: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.xz
+Source3: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.sign
+Source4: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.sign
+Source5: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.sign
+
+# Junio C Hamano's key is used to sign git releases, it can be found in the
+# junio-gpg-pub tag within git.
+#
+# (Note that the tagged blob in git contains a version of the key with an
+# expired signing subkey. The subkey expiration has been extended on the
+# public keyservers, but the blob in git has not been updated.)
+#
+# https://git.kernel.org/cgit/git/git.git/tag/?h=junio-gpg-pub
+# https://git.kernel.org/cgit/git/git.git/blob/?h=junio-gpg-pub&id=7214aea37915ee2c4f6369eb9dea520aec7d855b
+Source9: gpgkey-junio.asc
+
+# Local sources begin at 10 to allow for additional future upstream sources
+Source10: git-init.el
+Source11: git.xinetd.in
+Source12: git.conf.httpd
+Source13: git-gui.desktop
+Source14: gitweb.conf.in
+Source15: git@.service
+Source16: git.socket
Patch0: git-1.8-gitweb-home-link.patch
# https://bugzilla.redhat.com/490602
Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch
# https://bugzilla.redhat.com/600411
Patch3: git-1.7-el5-emacs-support.patch
-# https://bugzilla.redhat.com/show_bug.cgi?id=1204193
-# http://thread.gmane.org/gmane.comp.version-control.git/266145
-# could be removed when update/branch of Michael will be merged in upstream
-#Patch4: git-infinite-loop.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -85,6 +97,7 @@ BuildRequires: desktop-file-utils
BuildRequires: emacs
BuildRequires: expat-devel
BuildRequires: gettext
+BuildRequires: gnupg2
BuildRequires: %{libcurl_devel}
%if %{gnome_keyring}
BuildRequires: libgnome-keyring-devel
@@ -335,18 +348,32 @@ Requires: emacs-git = %{version}-%{release}
%endif
%prep
+# Verify GPG signatures
+gpghome="$(mktemp -qd)" # Ensure we don't use any existing gpg keyrings
+key="%{SOURCE9}"
+# Ignore noisy output from GnuPG 2.0, used on EL <= 7
+# https://bugs.gnupg.org/gnupg/issue1555
+gpg2 --dearmor --quiet --batch --yes $key >/dev/null
+for src in %{SOURCE0} %{SOURCE1} %{SOURCE2}; do
+ # Upstream signs the uncompressed tarballs
+ tar=${src/%.xz/}
+ xz -dc $src > $tar
+ gpgv2 --homedir "$gpghome" --quiet --keyring $key.gpg $tar.sign $tar
+ rm -f $tar
+done
+rm -rf "$gpghome" # Cleanup tmp gpg home dir
+
%setup -q
%patch0 -p1
%patch1 -p1
%if %{emacs_old}
%patch3 -p1
%endif
-#%patch4 -p1
%if %{use_prebuilt_docs}
mkdir -p prebuilt_docs/{html,man}
-xz -dc %{SOURCE10} | tar xf - -C prebuilt_docs/man
-xz -dc %{SOURCE11} | tar xf - -C prebuilt_docs/html
+xz -dc %{SOURCE1} | tar xf - -C prebuilt_docs/html
+xz -dc %{SOURCE2} | tar xf - -C prebuilt_docs/man
# Remove non-html files
find prebuilt_docs/html -type f ! -name '*.html' | xargs rm
find prebuilt_docs/html -type d | xargs rmdir --ignore-fail-on-non-empty
@@ -441,7 +468,7 @@ for elc in %{buildroot}%{elispdir}/*.elc ; do
install -pm 644 contrib/emacs/$(basename $elc .elc).el \
%{buildroot}%{elispdir}
done
-install -Dpm 644 %{SOURCE2} \
+install -Dpm 644 %{SOURCE10} \
%{buildroot}%{_emacs_sitestartdir}/git-init.el
%if %{gnome_keyring}
@@ -460,9 +487,9 @@ make -C contrib/subtree install-doc
rm -f %{buildroot}%{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}}/git-subtree.html
mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
-install -pm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/httpd/conf.d/git.conf
+install -pm 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/httpd/conf.d/git.conf
sed "s|@PROJECTROOT@|%{_var}/lib/git|g" \
- %{SOURCE6} > %{buildroot}%{_sysconfdir}/gitweb.conf
+ %{SOURCE14} > %{buildroot}%{_sysconfdir}/gitweb.conf
find %{buildroot} -type f -name .packlist -exec rm -f {} ';'
find %{buildroot} -type f -name '*.bs' -empty -exec rm -f {} ';'
@@ -488,7 +515,7 @@ rm -rf %{buildroot}%{_mandir}
mkdir -p %{buildroot}%{_var}/lib/git
%if %{use_systemd}
mkdir -p %{buildroot}%{_unitdir}
-cp -a %{SOURCE12} %{SOURCE13} %{buildroot}%{_unitdir}
+cp -a %{SOURCE15} %{SOURCE16} %{buildroot}%{_unitdir}
%else
mkdir -p %{buildroot}%{_sysconfdir}/xinetd.d
# On EL <= 5, xinetd does not enable IPv6 by default
@@ -500,7 +527,7 @@ perl -p \
%if %{enable_ipv6}
-e "s|^}|$enable_ipv6\n$&|;" \
%endif
- %{SOURCE3} > %{buildroot}%{_sysconfdir}/xinetd.d/git
+ %{SOURCE11} > %{buildroot}%{_sysconfdir}/xinetd.d/git
%endif
# Setup bash completion
@@ -530,7 +557,7 @@ desktop-file-install \
%if %{desktop_vendor_tag}
--vendor fedora \
%endif
- --dir=%{buildroot}%{_datadir}/applications %{SOURCE5}
+ --dir=%{buildroot}%{_datadir}/applications %{SOURCE13}
# find translations
%find_lang %{name} %{name}.lang
@@ -699,6 +726,7 @@ rm -rf %{buildroot}
%changelog
* Sun Mar 27 2016 Todd Zullinger <tmz@pobox.com> - 2.7.4-2
- Use https for URL / Source and smaller tar.xz files
+- Check upstream GPG signatures in %%prep
* Tue Mar 22 2016 Konrad Scherer <Konrad.Scherer@windriver.com>
- Workaround missing git subtree documentation in prebuilt docs (bug 1320210)
diff --git a/gpgkey-junio.asc b/gpgkey-junio.asc
new file mode 100644
index 0000000..7214aea
--- /dev/null
+++ b/gpgkey-junio.asc
@@ -0,0 +1,360 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1
+
+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
+=K5VA
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/sources b/sources
index f029bfa..bcef26e 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,6 @@
b0219fcb6d73104361f4fbdba3741d00 git-2.7.4.tar.xz
d37654c45897afa4501fe7bc138b576f git-htmldocs-2.7.4.tar.xz
52507ee81f9aac0abf85160398cd3e81 git-manpages-2.7.4.tar.xz
+ed0dffdb32bc3c49673947ed99d421af git-2.7.4.tar.sign
+717564d0ffd3cc2416df28ff73234be3 git-htmldocs-2.7.4.tar.sign
+d5d42db9e7923a0ce8a0b0210d62d5e5 git-manpages-2.7.4.tar.sign