From 4113b89565ca1cf3296a1cf8fc4e128939f39bef Mon Sep 17 00:00:00 2001 From: Mamoru Tasaka Date: Tue, 20 Jan 2009 04:10:53 +0000 Subject: It seems that I did a big mistake... --- rubygem-nokogiri.spec | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 rubygem-nokogiri.spec (limited to 'rubygem-nokogiri.spec') diff --git a/rubygem-nokogiri.spec b/rubygem-nokogiri.spec new file mode 100644 index 0000000..80c843f --- /dev/null +++ b/rubygem-nokogiri.spec @@ -0,0 +1,190 @@ +%define ruby_sitelib %(ruby -rrbconfig -e "puts Config::CONFIG['sitelibdir']") +%define ruby_sitearch %(ruby -rrbconfig -e "puts Config::CONFIG['sitearchdir']") +%define rubyabi 1.8 + +%define gemdir %(ruby -rubygems -e 'puts Gem::dir' 2>/dev/null) +%define gemname nokogiri +%define geminstdir %{gemdir}/gems/%{gemname}-%{version} + +Summary: An HTML, XML, SAX, and Reader parser +Name: rubygem-%{gemname} +Version: 1.1.1 +Release: 1%{?dist} +Group: Development/Languages +License: MIT +URL: http://nokogiri.rubyforge.org/nokogiri/ +Source0: http://gems.rubyforge.org/gems/%{gemname}-%{version}.gem + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: ruby(abi) = %{rubyabi} +BuildRequires: ruby(rubygems) +BuildRequires: rubygem(rake) +BuildRequires: libxml2-devel +BuildRequires: libxslt-devel +BuildRequires: ruby-devel +Requires: ruby(abi) = %{rubyabi} +Requires: ruby(rubygems) +Provides: rubygem(%{gemname}) = %{version}-%{release} + +%description +Nokogiri parses and searches XML/HTML very quickly, and also has +correctly implemented CSS3 selector support as well as XPath support. + +Nokogiri also features an Hpricot compatibility layer to help ease the change +to using correct CSS and XPath. + +%package doc +Summary: Documentation for %{name} +Group: Documentation +# Directory ownership issue +Requires: %{name} = %{version}-%{release} +Requires: ruby(rubygems) + +%description doc +This package contains documentation for %{name}. + +%package -n ruby-%{gemname} +Summary: Non-Gem support package for %{gemname} +Group: Development/Languages +Requires: %{name} = %{version}-%{release} +Provides: ruby(%{gemname}) = %{version}-%{release} + +%description -n ruby-%{gemname} +This package provides non-Gem support for %{gemname}. + +%prep +%setup -q -T -c + +%build +mkdir -p ./%{gemdir} +export CONFIGURE_ARGS="--with-cflags='%{optflags}'" +gem install \ + --local \ + --install-dir ./%{gemdir} \ + -V --force \ + %{SOURCE0} + +# cflags wrong (-O3 passed), recompiling +pushd ./%{geminstdir} +sed -i.flags -e 's|-O3||' ext/nokogiri/extconf.rb +find . -name \*.so -or -name \*.o -exec rm -f {} \; +rake -v ext/nokogiri/native.so + +%install +rm -rf %{buildroot} +mkdir -p %{buildroot}%{gemdir} +cp -a ./%{gemdir}/* %{buildroot}%{gemdir} + +# move arch dependent files to %%ruby_sitearch +mkdir -p %{buildroot}%{ruby_sitearch}/%{gemname} +mv %{buildroot}%{geminstdir}/lib/%{gemname}/*.so \ + %{buildroot}%{ruby_sitearch}/%{gemname}/ + +# remove all shebang +for f in $(find %{buildroot}%{geminstdir} -name \*.rb) +do + sed -i -e '/^#!/d' $f + chmod 0644 $f +done + +# cleanups +rm -rf %{buildroot}%{geminstdir}/ext +rm -f %{buildroot}%{geminstdir}/{.require_paths,Rakefile} + +# only needed by Rakefile, removing +## First remove only files, then check if the directory +## is empty +rm -f %{buildroot}/%{geminstdir}/vendor/hoe.rb +rmdir %{buildroot}/%{geminstdir}/vendor/ + +# The following method is completely copied from rubygem-gettext +# spec file +# +# Create symlinks +## +## Note that before switching to gem %%{ruby_sitelib}/%%{gemname} +## already existed as a directory, so this cannot be replaced +## by symlink (cpio fails) +## Similarly, all directories under %%{ruby_sitelib} cannot be +## replaced by symlink +# + +create_symlink_rec(){ + +ORIGBASEDIR=$1 +TARGETBASEDIR=$2 + +## First calculate relative path of ORIGBASEDIR +## from TARGETBASEDIR +TMPDIR=$TARGETBASEDIR +BACKDIR= +DOWNDIR= +num=0 +nnum=0 +while true +do + num=$((num+1)) + TMPDIR=$(echo $TMPDIR | sed -e 's|/[^/][^/]*$||') + DOWNDIR=$(echo $ORIGBASEDIR | sed -e "s|^$TMPDIR||") + if [ x$DOWNDIR != x$ORIGBASEDIR ] + then + nnum=0 + while [ $nnum -lt $num ] + do + BACKDIR="../$BACKDIR" + nnum=$((nnum+1)) + done + break + fi +done + +RELBASEDIR=$( echo $BACKDIR/$DOWNDIR | sed -e 's|//*|/|g' ) + +## Next actually create symlink +pushd %{buildroot}/$ORIGBASEDIR +find . -type f | while read f +do + DIRNAME=$(dirname $f) + BACK2DIR=$(echo $DIRNAME | sed -e 's|/[^/][^/]*|/..|g') + mkdir -p %{buildroot}${TARGETBASEDIR}/$DIRNAME + LNNAME=$(echo $BACK2DIR/$RELBASEDIR/$f | \ + sed -e 's|^\./||' | sed -e 's|//|/|g' | \ + sed -e 's|/\./|/|' ) + ln -s -f $LNNAME %{buildroot}${TARGETBASEDIR}/$f +done +popd + +} + +create_symlink_rec %{geminstdir}/lib %{ruby_sitelib} + + +%clean +rm -rf %{buildroot} + +%files +%defattr(-,root, root,-) +%{ruby_sitearch}/%{gemname}/ +%dir %{geminstdir}/ +%doc %{geminstdir}/[A-Z]* +%{geminstdir}/[a-l]*/ +%{gemdir}/cache/%{gemname}-%{version}.gem +%{gemdir}/specifications/%{gemname}-%{version}.gemspec + +%files doc +%defattr(-,root,root,-) +%{geminstdir}/test/ +%{gemdir}/doc/%{gemname}-%{version}/ + +%files -n ruby-%{gemname} +%defattr(-,root,root,-) +%{ruby_sitelib}/*%{gemname}.rb +%{ruby_sitelib}/%{gemname}/ + +%changelog +* Thu Jan 15 2009 Mamoru Tasaka - 1.1.1-1 +- 1.1.1 + +* Thu Dec 25 2008 Mamoru Tasaka - 1.1.0-1 +- Initial packaging + -- cgit