%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: 2%{?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 * Tue Feb 24 2009 Mamoru Tasaka - 1.1.1-2 - F-11: Mass rebuild * 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