[svn] r5688 - trunk/tools/dar
packagers at lists.rpmforge.net
packagers at lists.rpmforge.net
Sun Aug 5 16:33:41 CEST 2007
Author: dag
Date: 2007-08-05 16:33:40 +0200 (Sun, 05 Aug 2007)
New Revision: 5688
Modified:
trunk/tools/dar/dar-perl.py
Log:
Important fixes
Modified: trunk/tools/dar/dar-perl.py
===================================================================
--- trunk/tools/dar/dar-perl.py 2007-08-05 14:27:18 UTC (rev 5687)
+++ trunk/tools/dar/dar-perl.py 2007-08-05 14:33:40 UTC (rev 5688)
@@ -21,6 +21,7 @@
logname = 'dag'
debug = False
noarch = True
+module_build = False
output = False
realversion = None
authors = []
@@ -56,7 +57,7 @@
'perl': 'Artistic/GPL',
}
-### FIXME: Add proper epochs to perl-dependencies
+### Add proper epochs to perl-dependencies
epochs = ( '5.0.0', '5.6.1', '5.8.0', '5.8.5', '5.8.8' )
def download(url):
@@ -160,11 +161,14 @@
cdistname = os.path.basename(location)
if sdistname != cdistname:
realversion = version
- ### FIXME: Get the version from the cdistname
+ ### Get the version from the cdistname
m = re.match('[^\d]+([\d\.]+).tar.gz', cdistname)
if m:
l = m.groups()
- version = l[0]
+ version = l[0]
+ else:
+ print >>sys.stderr, 'Problem retrieving version from %s for module %s.' % (cdistname, module)
+ sys.exit(1)
if realversion == 'undef':
print >>sys.stderr, 'Version is undefined. Distribution %s is not a module.' % module
@@ -199,6 +203,7 @@
l = base.split('.tar.gz')
base = l[0]
docs = []
+docsdirs = []
meta = {}
for file in distfd.getnames():
### Remove Name-Version/ from filename
@@ -216,11 +221,12 @@
for docre in docfiles:
if re.search(docre, shortfile, re.I):
docs.append(shortfile)
+ break
### Create %docs directorylist
for dir in docdirs:
if shortfile == dir:
- docs.append(shortfile)
+ docsdirs.append(shortfile)
### Parse META.yml (http://module-build.source-forge.net/META-spec-current.html)
if shortfile == 'META.yml':
@@ -234,7 +240,12 @@
except:
pass
+ ### Check whether we need to use perl(Module::Build)
+# if shortfile == 'Build.PL':
+# module_build = True
+
docs.sort()
+docsdirs.sort()
if os.path.isfile(archive):
os.remove(archive)
@@ -366,8 +377,18 @@
if meta.has_key('requires') and meta['requires'] and meta['requires'].has_key('perl'):
print >>out, "BuildRequires: perl >= %s " % epochify(meta['requires']['perl'])
else:
- print >>out, "BuildRequires: perl"
+ print >>out, 'BuildRequires: perl'
+if module_build:
+ print >>out, 'BuildRequires: perl(Module::Build)'
+
+if meta.has_key('build_requires'):
+ for key in meta['build_requires']:
+ if meta['build_requires'][key]:
+ print >>out, "BuildRequires: perl(%s) >= %s" % (key, meta['build_requires'][key])
+ else:
+ print >>out, "BuildRequires: perl(%s)" % key
+
### Requires are extracted by RPM itself
#print "Requires: perl"
#if meta.has_key('requires'):
@@ -377,12 +398,6 @@
# else:
# print >>out, "Requires: perl(%s)" % key
-if meta.has_key('build_requires'):
- for key in meta['build_requires']:
- if meta['build_requires'][key]:
- print >>out, "BuildRequires: perl(%s) >= %s" % (key, meta['build_requires'][key])
- else:
- print >>out, "BuildRequires: perl(%s)" % key
if meta.has_key('conflicts'):
for key in meta['conflicts']:
print >>out, "Conflict: perl(%s)" % key
@@ -398,17 +413,27 @@
print >>out, "%build"
if noarch:
- print >>out, '%{__perl} Makefile.PL INSTALLDIRS="vendor" PREFIX="%{buildroot}%{_prefix}"'
+ if module_build:
+ print >>out, '%{__perl} Makefile.PL INSTALLDIRS="vendor" destdir="%{buildroot}"'
+ else:
+ print >>out, '%{__perl} Makefile.PL INSTALLDIRS="vendor" PREFIX="%{buildroot}%{_prefix}"'
print >>out, '%{__make} %{?_smp_mflags}'
else:
- print >>out, 'CFLAGS="%{optflags}" %{__perl} Makefile.PL INSTALLDIRS="vendor" PREFIX="%{buildroot}%{_prefix}"'
+ if module_build:
+ print >>out, 'CFLAGS="%{optflags}" %{__perl} Makefile.PL INSTALLDIRS="vendor" destdir="%{buildroot}"'
+ else:
+ print >>out, 'CFLAGS="%{optflags}" %{__perl} Makefile.PL INSTALLDIRS="vendor" PREFIX="%{buildroot}%{_prefix}"'
print >>out, '%{__make} %{?_smp_mflags} OPTIMIZE="%{optflags}"'
print >>out
print >>out, '%install'
print >>out, '%{__rm} -rf %{buildroot}'
-print >>out, '%{__make} pure_install'
+if module_build:
+ print >>out, '%{__make} install'
+else:
+ print >>out, '%{__make} pure_install'
print >>out
+
print >>out, '### Clean up buildroot'
#if noarch:
# print >>out, '%{__rm} -rf %{buildroot}%{perl_archlib} %{buildroot}%{perl_vendorarch}'
@@ -417,6 +442,11 @@
print >>out, 'find %{buildroot} -name .packlist -exec %{__rm} {} \;'
print >>out
+if docsdirs:
+ print >>out, '### Clean up docs'
+ print >>out, 'find', ' '.join(docsdirs), '-type f -exec %{__chmod} a-x {} \;'
+ print >>out
+
print >>out, '%clean'
print >>out, '%{__rm} -rf %{buildroot}'
print >>out
@@ -425,9 +455,12 @@
print >>out, '%files'
print >>out, '%defattr(-, root, root, 0755)'
### Check DOCS in archive from "grep -h '^%doc' /dar/rpms/perl*/perl*.spec | grep -v mandir | xargs -n 1 | sort | uniq"
-print >>out, '%doc', ' '.join(docs)
+if not docsdirs:
+ print >>out, '%doc', ' '.join(docs)
+else:
+ print >>out, '%doc', ' '.join(docs), ' '.join(docsdirs)
print >>out, "%%doc %%{_mandir}/man3/%s.3pm*" % pmodule
-print >>out, "#%%doc %%{_mandir}/man3/*.3pm*"
+print >>out, '#%doc %{_mandir}/man3/*.3pm*'
if noarch:
### Print directory entries (if any)
@@ -477,6 +510,7 @@
for nr, part in enumerate(modparts):
str = str + "%s/" % modparts[nr]
print >>out, str
+
print >>out
print >>out, '%changelog'
More information about the svn-commits
mailing list