Accepting request 621773 from home:bmwiedemann:branches:multimedia:libs

Add reproducible.patch to make lv2 package build reproducible (boo#1047218)

OBS-URL: https://build.opensuse.org/request/show/621773
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/lv2?expand=0&rev=22
This commit is contained in:
Dave Plater 2018-07-10 05:49:40 +00:00 committed by Git OBS Bridge
parent c500e60b68
commit df9b6c829c
3 changed files with 117 additions and 0 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Mon Jul 9 19:36:47 UTC 2018 - bwiedemann@suse.com
- Add reproducible.patch to make lv2 package build reproducible (boo#1047218)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Mar 21 13:09:17 UTC 2018 - dimstar@opensuse.org Wed Mar 21 13:09:17 UTC 2018 - dimstar@opensuse.org

View File

@ -34,6 +34,8 @@ Source0: http://lv2plug.in/spec/lv2-%{version}.tar.bz2
Source1: lv2-rpmlintrc Source1: lv2-rpmlintrc
# Patch-Fix-Upstream lv2pkgconfig.patch davejplater@gmail.com -- Add "/" to end of -I directory because otherwise pkg-config outputs nothing. # Patch-Fix-Upstream lv2pkgconfig.patch davejplater@gmail.com -- Add "/" to end of -I directory because otherwise pkg-config outputs nothing.
Patch0: lv2pkgconfig.patch Patch0: lv2pkgconfig.patch
# Patch-Fix-Upstream reproducible.patch bmwiedemann
Patch1: reproducible.patch
BuildRequires: pkg-config BuildRequires: pkg-config
BuildRequires: python-rdflib BuildRequires: python-rdflib
BuildRequires: pkgconfig(gtk+-2.0) >= 2.18.0 BuildRequires: pkgconfig(gtk+-2.0) >= 2.18.0
@ -168,6 +170,7 @@ This package contains the LV2 API documentation.
%prep %prep
%setup -q %setup -q
%patch0 %patch0
%patch1 -p1
%build %build
export CFLAGS='%{optflags}' export CFLAGS='%{optflags}'

109
reproducible.patch Normal file
View File

@ -0,0 +1,109 @@
Author: Bernhard M. Wiedemann <bwiedemann suse de>
Date: 2018-04-16
https://github.com/drobilla/lv2/pull/21
https://github.com/drobilla/lv2/pull/22
make lv2 package build reproducible
Index: lv2-1.14.0/lv2specgen/lv2specgen.py
===================================================================
--- lv2-1.14.0.orig/lv2specgen/lv2specgen.py
+++ lv2-1.14.0/lv2specgen/lv2specgen.py
@@ -45,6 +45,7 @@ import optparse
import os
import re
import sys
+import time
import xml.sax.saxutils
import xml.dom
import xml.dom.minidom
@@ -113,7 +114,7 @@ def findStatements(model, s, p, o):
def findOne(m, s, p, o):
l = findStatements(m, s, p, o)
try:
- return l.next()
+ return sorted(l)[0]
except:
return None
@@ -396,7 +397,7 @@ def rdfsPropertyInfo(term, m):
domains = findStatements(m, term, rdfs.domain, None)
domainsdoc = ""
first = True
- for d in domains:
+ for d in sorted(domains):
union = findOne(m, getObject(d), owl.unionOf, None)
if union:
uris = parseCollection(m, getObject(union))
@@ -414,7 +415,7 @@ def rdfsPropertyInfo(term, m):
ranges = findStatements(m, term, rdfs.range, None)
rangesdoc = ""
first = True
- for r in ranges:
+ for r in sorted(ranges):
union = findOne(m, getObject(r), owl.unionOf, None)
if union:
uris = parseCollection(m, getObject(union))
@@ -477,13 +478,14 @@ def rdfsClassInfo(term, m):
restrictions.append(getSubject(meta_type))
if len(superclasses) > 0:
+ superclasses.sort()
doc += "\n<tr><th>Sub-class of</th>"
first = True
for superclass in superclasses:
doc += getProperty(getTermLink(superclass), first)
first = False
- for r in restrictions:
+ for r in sorted(restrictions):
props = findStatements(m, r, None, None)
onProp = None
comment = None
@@ -529,6 +531,7 @@ def rdfsClassInfo(term, m):
# Find out about properties which have rdfs:domain of t
d = classdomains.get(str(term), "")
if d:
+ d.sort()
dlist = ''
first = True
for k in d:
@@ -539,6 +542,7 @@ def rdfsClassInfo(term, m):
# Find out about properties which have rdfs:range of t
r = classranges.get(str(term), "")
if r:
+ r.sort()
rlist = ''
first = True
for k in r:
@@ -606,7 +610,7 @@ def rdfsInstanceInfo(term, m):
doc = ""
first = True
- for match in findStatements(m, term, rdf.type, None):
+ for match in sorted(findStatements(m, term, rdf.type, None)):
doc += getProperty(getTermLink(getObject(match),
term,
rdf.type),
@@ -942,7 +946,7 @@ def releaseChangeset(m, release, prefix=
entry = ''
#entry = '<dd><ul>\n'
- for i in findStatements(m, getObject(changeset), dcs.item, None):
+ for i in sorted(findStatements(m, getObject(changeset), dcs.item, None)):
item = getObject(i)
label = findOne(m, item, rdfs.label, None)
if not label:
@@ -1276,8 +1280,9 @@ def specgen(specloc, indir, style_uri, d
else:
template = template.replace('@COMMENT@', '')
- template = template.replace('@DATE@', datetime.datetime.utcnow().strftime('%F'))
- template = template.replace('@TIME@', datetime.datetime.utcnow().strftime('%F %H:%M UTC'))
+ build_date = datetime.datetime.utcfromtimestamp(int(os.environ.get('SOURCE_DATE_EPOCH', time.time())))
+ template = template.replace('@DATE@', build_date.strftime('%F'))
+ template = template.replace('@TIME@', build_date.strftime('%F %H:%M UTC'))
return template