diff --git a/.cvsignore b/.cvsignore
index 4261a6d..15ffd40 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-geos-2.2.3.tar.bz2
+geos-3.0.0.tar.bz2
diff --git a/geos-2.2.1-gcc4.patch b/geos-2.2.1-gcc4.patch
deleted file mode 100644
index a6bd2e4..0000000
--- a/geos-2.2.1-gcc4.patch
+++ /dev/null
@@ -1,109 +0,0 @@
---- geos-2.2.1.orig/source/headers/geos/geom.h 2006-01-14 14:40:33.000000000 -0800
-+++ geos-2.2.1/source/headers/geos/geom.h 2006-01-14 14:41:12.000000000 -0800
-@@ -358,52 +358,52 @@
- //double distance(Coordinate& p);
- static Coordinate nullCoord;
-
-- void Coordinate::setNull() {
-+ void setNull() {
- x=DoubleNotANumber;
- y=DoubleNotANumber;
- z=DoubleNotANumber;
- }
-
-- static Coordinate& Coordinate::getNull() {
-+ static Coordinate& getNull() {
- return nullCoord;
- }
-
-- Coordinate::Coordinate() {
-+ Coordinate() {
- x=0.0;
- y=0.0;
- z=DoubleNotANumber;
- }
-
-- Coordinate::Coordinate(double xNew, double yNew, double zNew) {
-+ Coordinate(double xNew, double yNew, double zNew) {
- x=xNew;
- y=yNew;
- z=zNew;
- }
-
- #ifndef PROFILE_COORDINATE_COPIES
-- Coordinate::Coordinate(const Coordinate& c){
-+ Coordinate(const Coordinate& c){
- x=c.x;
- y=c.y;
- z=c.z;
- }
- #else
-- Coordinate::Coordinate(const Coordinate& c);
-+ Coordinate(const Coordinate& c);
- Coordinate &operator=(const Coordinate &c);
- #endif
-
-- Coordinate::Coordinate(double xNew, double yNew){
-+ Coordinate(double xNew, double yNew){
- x=xNew;
- y=yNew;
- z=DoubleNotANumber;
- }
-
-- void Coordinate::setCoordinate(const Coordinate& other) {
-+ void setCoordinate(const Coordinate& other) {
- x = other.x;
- y = other.y;
- z = other.z;
- }
-
-- bool Coordinate::equals2D(const Coordinate& other) const {
-+ bool equals2D(const Coordinate& other) const {
- if (x != other.x) {
- return false;
- }
-@@ -413,7 +413,7 @@
- return true;
- }
-
-- int Coordinate::compareTo(const Coordinate& other) const {
-+ int compareTo(const Coordinate& other) const {
- if (x < other.x) {
- return -1;
- }
-@@ -429,22 +429,22 @@
- return 0;
- }
-
-- bool Coordinate::equals3D(const Coordinate& other) const {
-+ bool equals3D(const Coordinate& other) const {
- return (x == other.x) && ( y == other.y) && ((z == other.z)||(ISNAN(z) && ISNAN(other.z)));
- }
-
-- void Coordinate::makePrecise(const PrecisionModel *precisionModel) {
-+ void makePrecise(const PrecisionModel *precisionModel) {
- x = precisionModel->makePrecise(x);
- y = precisionModel->makePrecise(y);
- }
-
-- double Coordinate::distance(const Coordinate& p) const {
-+ double distance(const Coordinate& p) const {
- double dx = x - p.x;
- double dy = y - p.y;
- return sqrt(dx * dx + dy * dy);
- }
-
-- int Coordinate::hashCode() {
-+ int hashCode() {
- //Algorithm from Effective Java by Joshua Bloch [Jon Aquino]
- int result = 17;
- result = 37 * result + hashCode(x);
-@@ -456,7 +456,7 @@
- * Returns a hash code for a double value, using the algorithm from
- * Joshua Bloch's book Effective Java
- */
-- static int Coordinate::hashCode(double x) {
-+ static int hashCode(double x) {
- int64 f = (int64)(x);
- return (int)(f^(f>>32));
- }
diff --git a/geos-config.in.patch b/geos-config.in.patch
deleted file mode 100644
index 84ec00c..0000000
--- a/geos-config.in.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- tools/geos-config.in~ 2006-01-05 16:55:49.000000000 -0800
-+++ tools/geos-config.in 2006-01-05 16:56:33.000000000 -0800
-@@ -32,13 +32,13 @@
- echo @VERSION@
- ;;
- --cflags)
-- echo -I@prefix@/include
-+ echo
- ;;
- --libs)
-- echo -L@prefix@/lib -lgeos
-+ echo -lgeos
- ;;
- --ldflags)
-- echo -L@prefix@/lib
-+ echo
- ;;
- --includes)
- echo @prefix@/include
diff --git a/geos-gcc43.patch b/geos-gcc43.patch
new file mode 100644
index 0000000..be8f486
--- /dev/null
+++ b/geos-gcc43.patch
@@ -0,0 +1,177 @@
+--- source/index/quadtree/DoubleBits.cpp.orig 2008-04-20 14:38:13.000000000 +0300
++++ source/index/quadtree/DoubleBits.cpp 2008-04-20 14:39:29.000000000 +0300
+@@ -21,7 +21,7 @@
+ #include
+ #include
+
+-#include
++#include
+
+ #if __STDC_IEC_559__
+ #define ASSUME_IEEE_DOUBLE 1
+--- source/io/StringTokenizer.cpp.orig 2008-04-20 14:40:50.000000000 +0300
++++ source/io/StringTokenizer.cpp 2008-04-20 14:41:56.000000000 +0300
+@@ -16,6 +16,7 @@
+
+ #include
+
++#include
+ #include
+
+ using namespace std;
+--- source/io/ByteOrderValues.cpp.orig 2008-04-20 14:43:01.000000000 +0300
++++ source/io/ByteOrderValues.cpp 2008-04-20 14:43:25.000000000 +0300
+@@ -22,6 +22,7 @@
+ #include
+
+ #include
++#include
+
+ namespace geos {
+ namespace io { // geos.io
+--- source/noding/FastNodingValidator.cpp.orig 2008-04-20 14:45:05.000000000 +0300
++++ source/noding/FastNodingValidator.cpp 2008-04-20 14:47:11.000000000 +0300
+@@ -17,12 +17,13 @@
+ *
+ **********************************************************************/
+
+-#include
++
+ #include // for checkInteriorIntersections()
+ #include
+ #include // for checkValid()
+ #include
+ #include // for getErrorMessage()
++#include
+
+ #include
+ #include
+--- source/headers/geos/noding/IntersectionAdder.h.orig 2008-04-20 14:51:53.000000000 +0300
++++ source/headers/geos/noding/IntersectionAdder.h 2008-04-20 14:55:11.000000000 +0300
+@@ -19,6 +19,7 @@
+ #include
+ #include
+ #include // for abs()
++#include
+
+ #include
+
+--- source/operation/buffer/OffsetCurveSetBuilder.cpp.orig 2008-04-20 14:59:03.000000000 +0300
++++ source/operation/buffer/OffsetCurveSetBuilder.cpp 2008-04-20 14:59:25.000000000 +0300
+@@ -37,6 +37,7 @@
+ #include
+ #include
+
++#include
+ #include
+ #include
+ #include
+--- source/operation/distance/ConnectedElementPointFilter.cpp.orig 2008-04-20 15:00:20.000000000 +0300
++++ source/operation/distance/ConnectedElementPointFilter.cpp 2008-04-20 15:00:34.000000000 +0300
+@@ -19,6 +19,7 @@
+ #include
+ #include
+
++#include
+ #include
+
+ using namespace std;
+--- source/planargraph/DirectedEdge.cpp.orig 2008-04-20 15:02:04.000000000 +0300
++++ source/planargraph/DirectedEdge.cpp 2008-04-20 15:02:19.000000000 +0300
+@@ -18,6 +18,7 @@
+ #include
+ #include
+
++#include
+ #include
+ #include
+ #include
+--- source/geomgraph/EdgeNodingValidator.cpp.orig 2008-04-20 15:03:37.000000000 +0300
++++ source/geomgraph/EdgeNodingValidator.cpp 2008-04-20 15:03:44.000000000 +0300
+@@ -18,10 +18,10 @@
+
+ #include
+
++#include
+ #include
+ #include
+ #include
+-#include
+
+ using namespace std;
+ using namespace geos::noding;
+--- source/geomgraph/GeometryGraph.cpp.orig 2008-04-20 15:04:36.000000000 +0300
++++ source/geomgraph/GeometryGraph.cpp 2008-04-20 15:04:50.000000000 +0300
+@@ -42,6 +42,7 @@
+
+ #include
+
++#include
+ #include
+ #include // auto_ptr
+ #include
+--- source/precision/SimpleGeometryPrecisionReducer.cpp.orig 2008-04-20 15:05:36.000000000 +0300
++++ source/precision/SimpleGeometryPrecisionReducer.cpp 2008-04-20 15:05:47.000000000 +0300
+@@ -29,6 +29,7 @@
+ #include
+ #include
+
++#include
+ #include
+
+ using namespace std;
+--- doc/example.cpp.orig 2008-04-20 15:06:43.000000000 +0300
++++ doc/example.cpp 2008-04-20 15:07:38.000000000 +0300
+@@ -28,6 +28,7 @@
+ *
+ **********************************************************************/
+
++#include
+ #include
+ #include
+ #include
+--- tests/bigtest/TestSweepLineSpeed.cpp.orig 2008-04-20 15:09:01.000000000 +0300
++++ tests/bigtest/TestSweepLineSpeed.cpp 2008-04-20 15:09:26.000000000 +0300
+@@ -88,7 +88,7 @@
+ // cout << "n Pts: " << nPts << " Executed in " << totalTime << endl;
+ }
+
+-int main(int /* argC */, char* /* argV[] */) {
++int main(int /* argC */, char** /* argV[] */) {
+
+ GeometryFactory *fact=new GeometryFactory();
+
+--- tests/xmltester/XMLTester.cpp.orig 2008-04-20 15:10:47.000000000 +0300
++++ tests/xmltester/XMLTester.cpp 2008-04-20 15:16:59.000000000 +0300
+@@ -16,6 +16,7 @@
+
+ //#define _CRTDBG_MAP_ALLOC
+ //#include
++#include
+ #ifdef _MSC_VER
+ #include
+ #endif
+--- tests/xmltester/markup/MarkupSTL.cpp.orig 2008-04-20 15:17:52.000000000 +0300
++++ tests/xmltester/markup/MarkupSTL.cpp 2008-04-20 15:19:43.000000000 +0300
+@@ -8,8 +8,9 @@
+ // Use in commercial applications requires written permission
+ // This software is provided "as is", with no warranty.
+
+-#include "MarkupSTL.h"
++#include
+ #include
++#include "MarkupSTL.h"
+
+ using namespace std;
+
+--- tests/unit/geos_unit.cpp.orig 2008-04-20 16:51:51.000000000 +0300
++++ tests/unit/geos_unit.cpp 2008-04-20 16:52:14.000000000 +0300
+@@ -4,6 +4,8 @@
+ #endif
+ #endif
+
++#include
++
+ // TUT
+ #include
+ #include
diff --git a/geos.spec b/geos.spec
index 090e6af..a1ab8eb 100644
--- a/geos.spec
+++ b/geos.spec
@@ -1,14 +1,19 @@
Name: geos
-Version: 2.2.3
-Release: 2%{?dist}
+Version: 3.0.0
+Release: 1%{?dist}
Summary: GEOS is a C++ port of the Java Topology Suite
Group: Applications/Engineering
-License: LGPL
+License: LGPLv2
URL: http://geos.refractions.net
Source0: http://geos.refractions.net/%{name}-%{version}.tar.bz2
+Patch0: geos-gcc43.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: doxygen
+BuildRequires: doxygen swig libtool
+BuildRequires: python-devel ruby-devel
+
+%{!?python_sitearch: %define python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
+%{!?ruby_sitearch: %define ruby_sitearch %(ruby -rrbconfig -e 'puts Config::CONFIG["sitearchdir"]')}
%description
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology
@@ -32,11 +37,44 @@ functions such as IsValid()
This package contains the development files to build applications that
use GEOS
+%package python
+Summary: Python modules for GEOS
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: python-abi = %(%{__python} -c "import sys ; print sys.version[:3]")
+
+%description python
+Python module to build applications using GEOS and python
+
+%package ruby
+Summary: Ruby modules for GEOS
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: ruby(abi) = 1.8
+
+%description ruby
+Ruby module to build applications using GEOS and ruby
+
+
%prep
%setup -q
+%patch0 -p0 -b .gcc43
%build
-%configure --disable-static --disable-dependency-tracking
+
+# fix python path on 64bit
+sed -i -e 's|\/lib\/python|$libdir\/python|g' configure
+sed -i -e 's|.get_python_lib(0|.get_python_lib(1|g' configure
+
+# disable internal libtool to avoid hardcoded r-path
+for makefile in `find . -type f -name 'Makefile.in'`; do
+sed -i 's|@LIBTOOL@|%{_bindir}/libtool|g' $makefile
+done
+
+%configure --disable-static --disable-dependency-tracking \
+ --enable-python \
+ --enable-ruby
+
make %{?_smp_mflags}
# Make doxygen documentation files
@@ -45,7 +83,12 @@ make doxygen-html
%install
rm -rf $RPM_BUILD_ROOT
-%makeinstall
+make DESTDIR=$RPM_BUILD_ROOT install
+
+%check
+
+# test module
+make %{?_smp_mflags} check || exit 0
%clean
rm -rf $RPM_BUILD_ROOT
@@ -57,18 +100,46 @@ rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING NEWS README TODO
-%{_libdir}/libgeos*.so.*
+%{_libdir}/libgeos-%{version}.so
+%{_libdir}/libgeos_c.so.*
+%exclude %{_libdir}/*.a
%files devel
%defattr(-,root,root,-)
%doc doc/doxygen_docs
%{_bindir}/geos-config
%{_includedir}/*
-%{_libdir}/*.so
+%{_libdir}/libgeos.so
+%{_libdir}/libgeos_c.so
%exclude %{_bindir}/XMLTester
%exclude %{_libdir}/*.la
+%exclude %{_libdir}/*.a
+
+%files python
+%defattr(-,root,root,-)
+%dir %{python_sitearch}/%{name}
+%exclude %{python_sitearch}/%{name}/_%{name}.a
+%exclude %{python_sitearch}/%{name}/_%{name}.la
+%{python_sitearch}/%{name}.pth
+%{python_sitearch}/%{name}/*.py
+%{python_sitearch}/%{name}/*.py?
+%{python_sitearch}/%{name}/_%{name}.so
+
+%files ruby
+%defattr(-,root,root,-)
+%exclude %{ruby_sitearch}/%{name}.a
+%exclude %{ruby_sitearch}/%{name}.la
+%{ruby_sitearch}/%{name}.so
%changelog
+* Sun Apr 20 2008 Balint Cristian - 3.0.0-1
+- New branch upstream
+- Fix gcc43 build
+- Avoid r-path hardcoding
+- Enable and include python module
+- Enable and include ruby module
+- Enable and run testsuite during build
+
* Tue Feb 19 2008 Fedora Release Engineering - 2.2.3-2
- Autorebuild for GCC 4.3
diff --git a/sources b/sources
index 0ba8cc4..507093b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-440be2b11fd3d711e950a47ea6f1b424 geos-2.2.3.tar.bz2
+3f7940abee9fec69a9787878cd3ae771 geos-3.0.0.tar.bz2