rpms/globus-core/F-9 globus-spec-creator, NONE, 1.1 globus-core.spec, 1.3, 1.4 import.log, 1.3, 1.4
Mattias Ellert
ellert at fedoraproject.org
Mon Apr 27 16:48:11 UTC 2009
- Previous message: rpms/globus-core/devel globus-spec-creator, NONE, 1.1 globus-core.spec, 1.3, 1.4 import.log, 1.3, 1.4
- Next message: rpms/globus-core/F-10 globus-spec-creator, NONE, 1.1 globus-core.spec, 1.3, 1.4 import.log, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: ellert
Update of /cvs/pkgs/rpms/globus-core/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv14545/F-9
Modified Files:
globus-core.spec import.log
Added Files:
globus-spec-creator
Log Message:
* Mon Apr 27 2009 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.15-4
- Install the globus-spec-creator script
- Add -Wl,--as-needed to the libtool script
--- NEW FILE globus-spec-creator ---
#!/usr/bin/perl
use Getopt::Long;
use POSIX;
use XML::DOM;
use User::pwent;
use Sys::Hostname;
use Pod::Usage;
my $gptfile;
my $setupfile;
my $release = "1";
my $directory;
my $setupdirectory;
my $toolkitversion = "4.2.1";
my $email;
my $nodoc;
my $help;
GetOptions('gptfile=s' => \$gptfile,
'setupfile=s' => \$setupfile,
'release=s' => \$release,
'directory=s' => \$directory,
'toolkitversion=s' => \$toolkitversion,
'email=s' => \$email,
'nodoc' => \$nodoc,
'help' => \$help);
Pod::Usage::pod2usage() if defined $help;
die "Missing --gptfile option" unless defined $gptfile;
setlocale(LC_TIME, 'C');
my $login = getlogin || getpwuid($<);
my $pw = getpwnam($login);
my ($fullname, $location, $phone) = split(/,/, $pw->gecos);
my $host = hostname;
$email = "$login\@$host" unless defined $email;
if (defined $directory) {
$setupdirectory = $directory;
$setupdirectory =~ s![^/]*$!setup!;
}
my $parser = new XML::DOM::Parser;
my %srcdeps;
my %setupdeps;
my $gptdoc = $parser->parsefile($gptfile);
my $gptmeta = $gptdoc->getElementsByTagName("gpt_package_metadata");
my $gptname = $gptmeta->item(0)->getAttributeNode("Name")->getValue;
my $gptagingver = $gptmeta->item(0)->getElementsByTagName("Aging_Version");
my $gptmajorver = $gptagingver->item(0)->getAttributeNode("Major")->getValue;
my $gptminorver = $gptagingver->item(0)->getAttributeNode("Minor")->getValue;
my $gptdesc = $gptmeta->item(0)->getElementsByTagName("Description");
my $description = $gptdesc->item(0)->getFirstChild->getData;
$description =~ s!^\s+|\s+$!!g;
for my $srcdep ($gptmeta->item(0)
->getElementsByTagName("Source_Dependencies")) {
my $type = $srcdep->getAttributeNode("Type")->getValue;
$srcdeps{$type} = {} unless defined $srcdeps{$type};
for my $dep ($srcdep->getElementsByTagName("Dependency")) {
my $depname = $dep->getAttributeNode("Name")->getValue;
my $deppkg = $dep->getAttributeNode("Package")->getValue
if defined $dep->getAttributeNode("Package");
$depname = $depname . "-progs" if ($deppkg eq "pgm");
$depname = $depname . "-doc" if ($deppkg eq "doc");
$depname =~ tr/_/-/;
my $depver = $dep->getElementsByTagName("Simple_Version")
->item(0)->getAttributeNode("Major")->getValue;
$srcdeps{$type}{$depname} = $depver
unless (defined $srcdeps{$type}{$depname}
and $srcdeps{$type}{$depname} >= $depver);
}
}
for my $setupdep ($gptmeta->item(0)
->getElementsByTagName("Source_Setup_Dependency")) {
my $type = $setupdep->getAttributeNode("PkgType")->getValue;
$setupdeps{$type} = {} unless defined $setupdeps{$type};
for my $dep ($setupdep->getElementsByTagName("Setup_Dependency")) {
my $depname = $dep->getAttributeNode("Name")->getValue;
$depname =~ tr/_/-/;
my $depver = $dep->getElementsByTagName("Simple_Version")
->item(0)->getAttributeNode("Major")->getValue;
$setupdeps{$type}{$depname} = $depver
unless (defined $setupdeps{$type}{$depname}
and $setupdeps{$type}{$depname} >= $depver);
}
}
my $pkglibs = $gptmeta->item(0)->getElementsByTagName("Build_Environment")
->item(0)->getElementsByTagName("pkg_libs")->item(0);
$pkglibs = $pkglibs->getFirstChild if defined $pkglibs;
my $setupname;
my $setupversion;
my $setupdescription;
my $postinstall;
if (defined $setupfile) {
my $setupdoc = $parser->parsefile($setupfile);
my $setupmeta = $setupdoc->getElementsByTagName("gpt_package_metadata");
$setupname = $setupmeta->item(0)->getAttributeNode("Name")->getValue;
die "Setup package name does not match main package name"
if ($setupname ne $gptname . '_setup');
my $setupagingver = $setupmeta->item(0)
->getElementsByTagName("Aging_Version");
my $setupmajorver = $setupagingver->item(0)
->getAttributeNode("Major")->getValue;
my $setupminorver = $setupagingver->item(0)
->getAttributeNode("Minor")->getValue;
my $setupdesc = $setupmeta->item(0)->getElementsByTagName("Description");
$setupdescription = $setupdesc->item(0)->getFirstChild->getData;
$setupdescription =~ s!^\s+|\s+$!!g;
for my $srcdep ($setupmeta->item(0)
->getElementsByTagName("Source_Dependencies")) {
my $type = $srcdep->getAttributeNode("Type")->getValue;
$srcdeps{$type} = {} unless defined $srcdeps{$type};
for my $dep ($srcdep->getElementsByTagName("Dependency")) {
my $depname = $dep->getAttributeNode("Name")->getValue;
my $deppkg = $dep->getAttributeNode("Package")->getValue
if defined $dep->getAttributeNode("Package");
$depname = $depname . "-progs" if ($deppkg eq "pgm");
$depname =~ tr/_/-/;
my $depver = $dep->getElementsByTagName("Simple_Version")
->item(0)->getAttributeNode("Major")->getValue;
$srcdeps{$type}{$depname} = $depver
unless (defined $srcdeps{$type}{$depname}
and $srcdeps{$type}{$depname} >= $depver);
}
}
for my $setupdep ($setupmeta->item(0)
->getElementsByTagName("Source_Setup_Dependency")) {
my $type = $setupdep->getAttributeNode("PkgType")->getValue;
$setupdeps{$type} = {} unless defined $setupdeps{$type};
for my $dep ($setupdep->getElementsByTagName("Setup_Dependency")) {
my $depname = $dep->getAttributeNode("Name")->getValue;
$depname =~ tr/_/-/;
my $depver = $dep->getElementsByTagName("Simple_Version")
->item(0)->getAttributeNode("Major")->getValue;
$setupdeps{$type}{$depname} = $depver
unless (defined $setupdeps{$type}{$depname}
and $setupdeps{$type}{$depname} >= $depver);
}
}
my $setuppostinstall = $setupmeta->item(0)
->getElementsByTagName("Post_Install_Program");
$postinstall = $setuppostinstall->item(0)->getFirstChild->getData
if defined $setuppostinstall->item(0);
$postinstall =~ s!^\s+|\s+$!!g;
$setupversion = $setupmajorver . '.' . $setupminorver;
}
my $name = $gptname;
$name =~ tr/_/-/;
my $version = $gptmajorver . '.' . $gptminorver;
my $libs = 1;
if (!%{$srcdeps{'lib_link'}} and !%{$srcdeps{'rtl_runtime'}}) {
$libs = 0;
}
my $develpkg = 1;
my $docpkg = 1;
my $progspkg = 0;
if (!$libs) {
$develpkg = 0;
$docpkg = 0;
}
else {
$docpkg = 0 if defined $nodoc;
$progspkg = 1 if (%{$srcdeps{'pgm_link'}} or %{$srcdeps{'pgm_runtime'}});
}
print "%ifarch alpha ia64 ppc64 s390x sparc64 x86_64\n";
print "%global flavor gcc64pthr\n";
print "%else\n";
print "%global flavor gcc32pthr\n";
print "%endif\n\n";
print "Name:\t\t$name\n";
print "%global _name %(tr - _ <<< %{name})\n";
print "Version:\t$version\n";
print "%global setupversion $setupversion\n" if defined $setupfile;
print "Release:\t$release%{?dist}\n";
print "Summary:\tGlobus Toolkit - $description\n";
print "\n";
if ($libs) {
print "Group:\t\tSystem Environment/Libraries\n";
}
else {
print "Group:\t\tApplications/Internet\n";
}
print "License:\tASL 2.0\n";
print "URL:\t\thttp://www.globus.org/\n";
print "#\t\tSource is extracted from the globus toolkit installer:\n";
print "#\t\twget -N http://www-unix.globus.org/ftppub/gt4/$toolkitversion/installers/src/gt$toolkitversion-all-source-installer.tar.bz2\n";
print "#\t\ttar -jxf gt$toolkitversion-all-source-installer.tar.bz2\n";
print "#\t\tmv gt$toolkitversion-all-source-installer/source-trees/" . ($directory ? $directory : "###DIRECTORY###") . " $gptname-$version\n";
print "#\t\tcp -p gt$toolkitversion-all-source-installer/source-trees/core/source/GLOBUS_LICENSE $gptname-$version\n"
if ($name ne "globus-core");
print "#\t\ttar -zcf $gptname-$version.tar.gz $gptname-$version\n";
print "Source:\t\t%{_name}-%{version}.tar.gz\n";
if (defined $setupfile) {
print "#\t\tSource1 is extracted from the globus toolkit installer:\n";
print "#\t\twget -N http://www-unix.globus.org/ftppub/gt4/$toolkitversion/installers/src/gt$toolkitversion-all-source-installer.tar.bz2\n";
print "#\t\ttar -jxf gt$toolkitversion-all-source-installer.tar.bz2\n";
print "#\t\tmv gt$toolkitversion-all-source-installer/source-trees/" . ($setupdirectory ? $setupdirectory : "###DIRECTORY###") . " $setupname-$setupversion\n";
print "#\t\tcp -p gt$toolkitversion-all-source-installer/source-trees/core/source/GLOBUS_LICENSE $setupname-$setupversion\n";
print "#\t\ttar -zcf $setupname-$setupversion.tar.gz $setupname-$setupversion\n";
print "Source1:\t%{_name}_setup-%{setupversion}.tar.gz\n";
}
if ($docpkg) {
print "#\t\tThis is a workaround for the broken epstopdf script in RHEL5\n";
print "#\t\tSee: https://bugzilla.redhat.com/show_bug.cgi?id=450388\n";
print "Source9:\tepstopdf-2.9.5gw\n";
}
my $p = 0;
while ($ARGV[$p]) {
print "#\t\t### INSERT PATCH DESCRIPTION HERE ###:\n";
print "#\t\thttp://bugzilla.globus.org/bugzilla/show_bug.cgi?id=###BUG NUMBER###\n";
print "Patch$p:" . ($p < 10 ? "\t\t" : "\t") . "$ARGV[$p]\n";
$p++;
}
print "BuildRoot:\t%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)\n";
print "\n";
if (!$libs) {
print "Provides:\t%{name}-setup = %{setupversion}\n"
if defined $setupfile;
my $hasrequires = 0;
while (($key, $value) = each(%{$srcdeps{'pgm_link'}})) {
# Explicit Requires for libraries should not be used according to the
# packaging guidelines. The autogenerated Requires on sonames make them
# redundant. Only add Requires for GPT glue packages and XIO plugins.
if ($key eq 'globus-libtool' or $key eq 'globus-openssl' or
$key eq 'globus-libxml2' or $key eq 'globus-xmlsec1' or
$key =~ /^globus-xio-/) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n");
$hasrequires = 1;
}
}
# Need at least one Requires to own directories
print "Requires:\tglobus-common\n" unless $hasrequires;
while (($key, $value) = each(%{$srcdeps{'pgm_runtime'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n");
}
while (($key, $value) = each(%{$setupdeps{'pgm'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n")
unless $key eq 'trusted-ca-setup';
}
print "BuildRequires:\tgrid-packaging-tools\n";
while (($key, $value) = each(%{$srcdeps{'compile'}})) {
if ($key eq "globus-core") {
print "BuildRequires:\t$key" .
($value > 0 ? " >= $value\n" : "\n");
}
else {
print "BuildRequires:\t$key-devel" .
($value > 0 ? " >= $value\n" : "\n");
}
}
}
else {
my $hasrequires = 0;
while (($key, $value) = each(%{$srcdeps{'lib_link'}})) {
# Explicit Requires for libraries should not be used according to the
# packaging guidelines. The autogenerated Requires on sonames make them
# redundant. Only add Requires for GPT glue packages and XIO plugins.
if ($key eq 'globus-libtool' or $key eq 'globus-openssl' or
$key eq 'globus-libxml2' or $key eq 'globus-xmlsec1' or
$key =~ /^globus-xio-/) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n");
$hasrequires = 1;
}
}
# Need at least one Requires to own directories
print "Requires:\tglobus-common\n" unless $hasrequires;
while (($key, $value) = each(%{$srcdeps{'rtl_runtime'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n");
}
while (($key, $value) = each(%{$setupdeps{'rtl'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n")
unless $key eq 'trusted-ca-setup';
}
print "BuildRequires:\tgrid-packaging-tools\n";
while (($key, $value) = each(%{$srcdeps{'compile'}})) {
if ($key eq "globus-core") {
print "BuildRequires:\t$key" .
($value > 0 ? " >= $value\n" : "\n");
}
else {
print "BuildRequires:\t$key-devel" .
($value > 0 ? " >= $value\n" : "\n");
}
}
while (($key, $value) = each(%{$srcdeps{'doc_runtime'}})) {
print "BuildRequires:\t$key" .
($value > 0 ? " >= $value\n" : "\n");
}
if ($docpkg) {
print "BuildRequires:\tdoxygen\n";
print "%if %{?fedora}%{!?fedora:0} >= 3\n";
print "BuildRequires:\tgraphviz\n";
print "BuildRequires:\tghostscript\n";
print "%else\n";
print "%if %{?rhel}%{!?rhel:0} >= 5\n";
print "BuildRequires:\tgraphviz\n";
print "BuildRequires:\tghostscript\n";
print "%if \"%{?rhel}\" == \"5\"\n";
print "BuildRequires:\tgraphviz-gd\n";
print "%endif\n";
print "%endif\n";
print "%endif\n";
print "%if %{?fedora}%{!?fedora:0} >= 9\n";
print "BuildRequires:\ttex(latex)\n";
print "%else\n";
print "%if %{?rhel}%{!?rhel:0} >= 6\n";
print "BuildRequires:\ttex(latex)\n";
print "%else\n";
print "BuildRequires:\ttetex-latex\n";
print "%endif\n";
print "%endif\n";
}
if ($progspkg) {
print "\n";
print "%package progs\n";
print "Summary:\tGlobus Toolkit - $description Programs\n";
print "Group:\t\tApplications/Internet\n";
print "Provides:\t%{name}-setup = %{setupversion}\n"
if defined $setupfile;
print "Requires:\t%{name} = %{version}-%{release}\n";
while (($key, $value) = each(%{$srcdeps{'pgm_link'}})) {
# Explicit Requires for libraries should not be used according
# to the packaging guidelines. The autogenerated Requires on
# sonames make them redundant.
# Only add Requires for GPT glue packages and XIO plugins.
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n")
if $key eq 'globus-libtool' or $key eq 'globus-openssl' or
$key eq 'globus-libxml2' or $key eq 'globus-xmlsec1' or
$key =~ /^globus-xio-/;
}
while (($key, $value) = each(%{$srcdeps{'pgm_runtime'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n")
unless $key eq $name;
}
while (($key, $value) = each(%{$setupdeps{'pgm'}})) {
print "Requires:\t$key" . ($value > 0 ? " >= $value\n" : "\n")
unless $key eq 'trusted-ca-setup' or $key eq $name;
}
}
}
if ($develpkg) {
print "\n";
print "%package devel\n";
print "Summary:\tGlobus Toolkit - $description Development Files\n";
print "Group:\t\tDevelopment/Libraries\n";
print "Requires:\t%{name} = %{version}-%{release}\n";
while (($key, $value) = each(%{$srcdeps{'compile'}})) {
if ($key eq "globus-core") {
print "Requires:\t$key" .
($value > 0 ? " >= $value\n" : "\n");
}
else {
print "Requires:\t$key-devel" .
($value > 0 ? " >= $value\n" : "\n");
}
}
}
if ($docpkg) {
print "\n";
print "%package doc\n";
print "Summary:\tGlobus Toolkit - $description Documentation Files\n";
print "Group:\t\tDocumentation\n";
print "Requires:\t%{name} = %{version}-%{release}\n";
}
print "
%description
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.
The %{name} package contains:
$description
";
print "
%description progs
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.
The %{name}-progs package contains:
$description Programs
" if ($progspkg);
print "$setupdescription\n" if defined $setupfile;
print "
%description devel
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.
The %{name}-devel package contains:
$description Development Files
" if ($develpkg);
print "
%description doc
The Globus Toolkit is an open source software toolkit used for building Grid
systems and applications. It is being developed by the Globus Alliance and
many others all over the world. A growing number of projects and companies are
using the Globus Toolkit to unlock the potential of grids for their cause.
The %{name}-doc package contains:
$description Documentation Files
" if ($docpkg);
print "
%prep
%setup -q -n %{_name}-%{version}
";
print "%setup -D -T -q -n %{_name}-%{version} -a 1\n" if defined $setupfile;
$p = 0;
while ($ARGV[$p]) {
print "%patch$p -p1\n";
$p++;
}
print "
%if \"%{rhel}\" == \"5\"
mkdir bin
install %{SOURCE9} bin/epstopdf
%endif
" if ($docpkg);
print "
%build";
print "
%if \"%{rhel}\" == \"5\"
export PATH=\$PWD/bin:\$PATH
%endif
" if ($docpkg);
print "
# Remove files that should be replaced during bootstrap
rm -f doxygen/Doxyfile*
rm -f doxygen/Makefile.am
rm -f pkgdata/Makefile.am
rm -f globus_automake*
rm -rf autom4te.cache
";
print "
# Remove flavor tags
for f in `find . -name Makefile.am` ; do
sed -e 's!^flavorinclude_HEADERS!include_HEADERS!' \\
-e 's!\\(lib[a-zA-Z_]*\\)_\$(GLOBUS_FLAVOR_NAME)\\.la!\\1.la!g' \\
-e 's!^\\(lib[a-zA-Z_]*\\)___GLOBUS_FLAVOR_NAME__la_!\\1_la_!' -i \$f
done
sed -e \"s!<With_Flavors!<With_Flavors ColocateLibraries=\\\"no\\\"!\" \\
-i pkgdata/pkg_data_src.gpt.in
" if ($libs);
print "
%{_datadir}/globus/globus-bootstrap.sh
";
if ($docpkg) {
print "
%configure --with-flavor=%{flavor} --enable-doxygen
";
}
else {
print "
%configure --with-flavor=%{flavor}
";
}
print "
make %{?_smp_mflags}
";
print "
# setup package
cd %{_name}_setup-%{setupversion}
# Remove files that should be replaced during bootstrap
rm -f doxygen/Doxyfile*
rm -f doxygen/Makefile.am
rm -f pkgdata/Makefile.am
rm -f globus_automake*
rm -rf autom4te.cache
%{_datadir}/globus/globus-bootstrap.sh
%configure --without-flavor
make %{?_smp_mflags}
cd -
" if defined $setupfile;
print "
%install";
print "
%if \"%{rhel}\" == \"5\"
export PATH=\$PWD/bin:\$PATH
%endif
" if ($docpkg);
print "
rm -rf \$RPM_BUILD_ROOT
make install DESTDIR=\$RPM_BUILD_ROOT
";
print "
# setup package
cd %{_name}_setup-%{setupversion}
make install DESTDIR=\$RPM_BUILD_ROOT
cd -
# Register setup
perl -MGrid::GPT::Setup <<EOF
my \\\$metadata = new Grid::GPT::Setup(package_name => \"%{_name}_setup\",
globusdir => \"\$RPM_BUILD_ROOT%{_prefix}\");
\\\$metadata->finish();
EOF
# Create setup files
### INSERT RELEVANT PARTS OF $postinstall HERE ###
" if defined $setupfile;
if (not defined $pkglibs) {
print "
# This library is opened using lt_dlopenext, so the libtool archives
# (.la files) can not be removed - fix the libdir...
for lib in `find \$RPM_BUILD_ROOT%{_libdir} -name 'lib*.la'` ; do
sed \"s!^libdir=.*!libdir=\\'%{_libdir}\\'!\" -i \$lib
done
" if ($libs);
}
else {
print "
# Remove libtool archives (.la files)
find \$RPM_BUILD_ROOT%{_libdir} -name 'lib*.la' -exec rm -v '{}' \\;
sed '/lib.*\\.la\$/d' \\
-i \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_rtl.filelist
" if ($libs);
}
print "
# Remove static libraries (.a files)
find \$RPM_BUILD_ROOT%{_libdir} -name 'lib*.a' -exec rm -v '{}' \\;
sed '/lib.*\\.a\$/d' \\
-i \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_dev.filelist
" if ($libs);
print "
# Generate pkg-config file from GPT metadata
mkdir -p \$RPM_BUILD_ROOT%{_libdir}/pkgconfig
%{_datadir}/globus/globus-gpt2pkg-config pkgdata/pkg_data_%{flavor}_dev.gpt > \\
\$RPM_BUILD_ROOT%{_libdir}/pkgconfig/%{name}.pc
" if ($develpkg);
print "
# Move documentation to default RPM location
mv \$RPM_BUILD_ROOT%{_docdir}/%{_name} \\
\$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
sed s!doc/%{_name}!doc/%{name}-%{version}! \\
-i \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_doc.filelist
# Remove unwanted documentation
rm -f \$RPM_BUILD_ROOT%{_mandir}/man3/deprecated.3
rm -f \$RPM_BUILD_ROOT%{_mandir}/man3/*_%{_name}-%{version}_*.3
sed -e '/deprecated\\.3/d' \\
-e '/_%{_name}-%{version}_.*\\.3/d' \\
-i \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_doc.filelist
" if ($docpkg);
print"
# Install license file
mkdir -p \$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
install -m 644 -p GLOBUS_LICENSE \$RPM_BUILD_ROOT%{_docdir}/%{name}-%{version}
# Generate package filelists
";
if (!$libs) {
print "cat \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_pgm.filelist \\\n";
print " \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}_setup/noflavor_pgm.filelist \\\n" if defined $setupfile;
print " | sed s!^!%{_prefix}! > package.filelist\n";
}
else {
print "cat \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_rtl.filelist \\\n";
print " | sed s!^!%{_prefix}! > package.filelist\n";
}
if ($progspkg) {
print "cat \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_pgm.filelist \\\n";
print " \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}_setup/noflavor_pgm.filelist \\\n" if defined $setupfile;
print " | sed s!^!%{_prefix}! > package-progs.filelist\n";
}
if ($develpkg) {
print "cat \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/%{flavor}_dev.filelist \\\n";
print " | sed s!^!%{_prefix}! > package-devel.filelist\n";
}
if ($docpkg) {
print "cat \$RPM_BUILD_ROOT%{_datadir}/globus/packages/%{_name}/noflavor_doc.filelist \\\n";
print " | sed -e 's!/man/.*!&\*!' -e 's!^!%doc %{_prefix}!' > package-doc.filelist\n";
}
print "
%clean
rm -rf \$RPM_BUILD_ROOT
";
print "
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
" if ($libs);
print "
%files -f package.filelist
%defattr(-,root,root,-)
%dir %{_datadir}/globus/packages/%{_name}
%dir %{_docdir}/%{name}-%{version}
%doc %{_docdir}/%{name}-%{version}/GLOBUS_LICENSE
";
print "
%files -f package-progs.filelist progs
%defattr(-,root,root,-)
" if ($progspkg);
print "%dir %{_datadir}/globus/packages/%{_name}_setup
%{_datadir}/globus/packages/setup
%dir %{_datadir}/globus/setup
" if defined $setupfile;
print "
%files -f package-devel.filelist devel
%defattr(-,root,root,-)
%{_libdir}/pkgconfig/%{name}.pc
" if ($develpkg);
print "
%files -f package-doc.filelist doc
%defattr(-,root,root,-)
%dir %{_docdir}/%{name}-%{version}/html
" if ($docpkg);
print "
%changelog
* " . strftime('%a %b %e %Y', localtime) . " $fullname <$email> - $version-$release
- Autogenerated
"
__END__
=head1 NAME
B<globus-spec-creator> - Generate an RPM spec file from a GPT source
package description
=head1 SYNOPSIS
B<globus-spec-creator> [options] [patches ...]
Options:
=over
=item B<-gptfile> filename
The package's GPT source package description file (mandatory)
=item B<-setupfile> filename
The corresponding setup package's GPT source package description file
(default: none)
=item B<-release> releasenumber
The RPM release number (default: 1)
=item B<-directory> directory
The package's source directory in the toolkit installer
=item B<-toolkitversion> versionnumber
Globus toolkit version (default: 4.2.1)
=item B<-email> emailaddress
The packagers e-mail address (default: username at hostname)
=item B<-nodoc>
Disable the generation of the doc RPM
=item B<-help>
Show help
=back
Arguments:
Each additional argument will be added as a patch in the generated
specfile.
=head1 EXAMPLE
globus-spec-creator -g globus_common-10.2/pkgdata/pkg_data_src.gpt.in
-s globus_common_setup-2.6/pkgdata/pkg_data_src.gpt.in -r 3 -d
common/source
=head1 SEE ALSO
See http://fedoraproject.org/wiki/PackagingDrafts/Globus for
additional information and examples.
=head1 AUTHOR
Mattias Ellert E<lt>mattias.ellert at fysast.uu.seE<gt>
=cut
Index: globus-core.spec
===================================================================
RCS file: /cvs/pkgs/rpms/globus-core/F-9/globus-core.spec,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- globus-core.spec 21 Apr 2009 14:50:40 -0000 1.3
+++ globus-core.spec 27 Apr 2009 16:47:41 -0000 1.4
@@ -13,7 +13,7 @@
Name: globus-core
%global _name %(tr - _ <<< %{name})
Version: 5.15
-Release: 3%{?dist}
+Release: 4%{?dist}
Summary: Globus Toolkit - Globus Core
Group: Development/Tools
@@ -26,6 +26,7 @@
# tar -zcf globus_core-5.15.tar.gz globus_core-5.15
Source: %{_name}-%{version}.tar.gz
Source1: globus-gpt2pkg-config
+Source2: globus-spec-creator
# Make file locations configurable:
# http://bugzilla.globus.org/bugzilla/show_bug.cgi?id=6451
Patch0: %{name}-conf.patch
@@ -124,9 +125,25 @@
# These scripts are intended to be sourced, not executed
chmod 644 $RPM_BUILD_ROOT%{_datadir}/globus/globus-build-env-*.sh
+# Add -Wl,--as-needed to the libtool script if supported
+%if %{?fedora}%{!?fedora:0} >= 2
+sed 's! -shared ! \\\${wl}--as-needed&!g' \
+ -i $RPM_BUILD_ROOT%{_sbindir}/libtool-%{flavor}
+%endif
+%if %{?rhel}%{!?rhel:0} >= 4
+sed 's! -shared ! \\\${wl}--as-needed&!g' \
+ -i $RPM_BUILD_ROOT%{_sbindir}/libtool-%{flavor}
+%endif
+
# Install the GPT metadata to pkg-config file converter
install %SOURCE1 $RPM_BUILD_ROOT%{_datadir}/globus/globus-gpt2pkg-config
+# Install the Globus RPM specfile creator script
+mkdir -p $RPM_BUILD_ROOT%{_bindir}
+install %SOURCE2 $RPM_BUILD_ROOT%{_bindir}/globus-spec-creator
+mkdir -p $RPM_BUILD_ROOT%{_mandir}/man1
+pod2man %SOURCE2 > $RPM_BUILD_ROOT%{_mandir}/man1/globus-spec-creator.1
+
# Generate pkg-config file from GPT metadata
mkdir -p $RPM_BUILD_ROOT%{_libdir}/pkgconfig
$RPM_BUILD_ROOT%{_datadir}/globus/globus-gpt2pkg-config \
@@ -164,10 +181,16 @@
%dir %{_libdir}/globus/include
%{_libdir}/pkgconfig/%{name}.pc
%{_datadir}/globus/globus-gpt2pkg-config
+%{_bindir}/globus-spec-creator
+%doc %{_mandir}/man1/globus-spec-creator.1*
%dir %{_docdir}/%{name}-%{version}
%doc %{_docdir}/%{name}-%{version}/GLOBUS_LICENSE
%changelog
+* Mon Apr 27 2009 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.15-4
+- Install the globus-spec-creator script
+- Add -Wl,--as-needed to the libtool script
+
* Tue Apr 21 2009 Mattias Ellert <mattias.ellert at fysast.uu.se> - 5.15-3
- Update after clarification of packaging guidelines
Index: import.log
===================================================================
RCS file: /cvs/pkgs/rpms/globus-core/F-9/import.log,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- import.log 21 Apr 2009 14:50:40 -0000 1.3
+++ import.log 27 Apr 2009 16:47:41 -0000 1.4
@@ -1,3 +1,4 @@
globus-core-5_15-1_fc9:F-9:globus-core-5.15-1.fc9.src.rpm:1237533936
globus-core-5_15-2_fc9:F-9:globus-core-5.15-2.fc9.src.rpm:1240003398
globus-core-5_15-3_fc9:F-9:globus-core-5.15-3.fc9.src.rpm:1240325336
+globus-core-5_15-4_fc9:F-9:globus-core-5.15-4.fc9.src.rpm:1240850808
- Previous message: rpms/globus-core/devel globus-spec-creator, NONE, 1.1 globus-core.spec, 1.3, 1.4 import.log, 1.3, 1.4
- Next message: rpms/globus-core/F-10 globus-spec-creator, NONE, 1.1 globus-core.spec, 1.3, 1.4 import.log, 1.3, 1.4
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the scm-commits
mailing list