[grass] 6.4.2, fix ftbfs
Tom Callaway
spot at fedoraproject.org
Fri Mar 2 21:26:26 UTC 2012
commit a9af5f39956844022f96a61a697f7e8e8a605462
Author: Tom Callaway <spot at fedoraproject.org>
Date: Fri Mar 2 16:26:25 2012 -0500
6.4.2, fix ftbfs
grass-6.4.2-docfiles.patch | 15 +++
grass-6.4.2-gcc47.patch | 85 ++++++++++++++++++
grass-shlib-soname.patch | 209 ++++++++++++++++++++++++++++++++++++++++++--
grass.spec | 31 ++-----
sources | 2 +-
5 files changed, 311 insertions(+), 31 deletions(-)
---
diff --git a/grass-6.4.2-docfiles.patch b/grass-6.4.2-docfiles.patch
new file mode 100644
index 0000000..e1a8caa
--- /dev/null
+++ b/grass-6.4.2-docfiles.patch
@@ -0,0 +1,15 @@
+diff -up grass-6.4.2/Makefile.docfiles grass-6.4.2/Makefile
+--- grass-6.4.2/Makefile.docfiles 2011-05-13 15:01:14.000000000 -0400
++++ grass-6.4.2/Makefile 2012-03-02 13:58:23.359067876 -0500
+@@ -59,10 +59,7 @@ else
+ LOCALE=0
+ endif
+
+-FILES = AUTHORS COPYING CHANGES REQUIREMENTS.html GPL.TXT contributors.csv contributors_extra.csv translators.csv
+-
+-BIN_DIST_FILES = $(FILES) \
+- grass${GRASS_VERSION_MAJOR}${GRASS_VERSION_MINOR}.tmp \
++BIN_DIST_FILES = grass${GRASS_VERSION_MAJOR}${GRASS_VERSION_MINOR}.tmp \
+ bin \
+ bwidget \
+ docs \
diff --git a/grass-6.4.2-gcc47.patch b/grass-6.4.2-gcc47.patch
new file mode 100644
index 0000000..17096c5
--- /dev/null
+++ b/grass-6.4.2-gcc47.patch
@@ -0,0 +1,85 @@
+diff -up grass-6.4.2/include/iostream/minmaxheap.h.gcc47 grass-6.4.2/include/iostream/minmaxheap.h
+--- grass-6.4.2/include/iostream/minmaxheap.h.gcc47 2010-04-17 08:15:22.000000000 -0400
++++ grass-6.4.2/include/iostream/minmaxheap.h 2012-03-02 14:35:37.158208306 -0500
+@@ -744,7 +744,7 @@ HeapIndex MinMaxHeap<T>::fill(T* arr, He
+ //heap must be empty
+ assert(this->size()==0);
+ for (i = 0; !full() && i<n; i++) {
+- insert(arr[i]);
++ this->insert(arr[i]);
+ }
+ if (i < n) {
+ assert(i == this->maxsize);
+@@ -777,13 +777,13 @@ void UnboundedMinMaxHeap<T>::grow() {
+
+ if(old) {
+ HeapIndex n = this->size();
+- this->A = allocateHeap(this->maxsize); /* allocate a new array */
++ this->A = this->allocateHeap(this->maxsize); /* allocate a new array */
+ /* copy over the old values */
+ assert(this->maxsize > n);
+ for(HeapIndex i=0; i<=n; i++) { /* why extra value? -RW */
+ this->A[i] = old[i];
+ }
+- freeHeap(old); /* free up old storage */
++ this->freeHeap(old); /* free up old storage */
+ }
+
+ }
+diff -up grass-6.4.2/include/iostream/mm.h.gcc47 grass-6.4.2/include/iostream/mm.h
+--- grass-6.4.2/include/iostream/mm.h.gcc47 2008-12-19 15:29:33.000000000 -0500
++++ grass-6.4.2/include/iostream/mm.h 2012-03-02 14:31:37.673584708 -0500
+@@ -110,10 +110,10 @@ public:
+ void print();
+
+ friend class mm_register_init;
+- friend void * operator new(size_t);
+- friend void * operator new[](size_t);
+- friend void operator delete(void *);
+- friend void operator delete[](void *);
++ friend void * operator new(size_t) throw(std::bad_alloc);
++ friend void * operator new[](size_t) throw(std::bad_alloc);
++ friend void operator delete(void *) throw();
++ friend void operator delete[](void *) throw();
+ };
+
+
+diff -up grass-6.4.2/lib/iostream/mm.cc.gcc47 grass-6.4.2/lib/iostream/mm.cc
+--- grass-6.4.2/lib/iostream/mm.cc.gcc47 2011-10-10 16:03:42.000000000 -0400
++++ grass-6.4.2/lib/iostream/mm.cc 2012-03-02 14:31:29.171669076 -0500
+@@ -256,7 +256,7 @@ MM_err MM_register::register_deallocatio
+
+
+ /* ************************************************************ */
+-void* operator new[] (size_t sz) {
++void* operator new[] (size_t sz) throw(std::bad_alloc) {
+ void *p;
+
+ MM_DEBUG cout << "new: sz=" << sz << ", register "
+@@ -307,7 +307,7 @@ void* operator new[] (size_t sz) {
+
+
+ /* ************************************************************ */
+-void* operator new (size_t sz) {
++void* operator new (size_t sz) throw(std::bad_alloc) {
+ void *p;
+
+ MM_DEBUG cout << "new: sz=" << sz << ", register "
+@@ -359,7 +359,7 @@ void* operator new (size_t sz) {
+
+
+ /* ---------------------------------------------------------------------- */
+-void operator delete (void *ptr) {
++void operator delete (void *ptr) throw() {
+ size_t sz;
+ void *p;
+
+@@ -399,7 +399,7 @@ void operator delete (void *ptr) {
+
+
+ /* ---------------------------------------------------------------------- */
+-void operator delete[] (void *ptr) {
++void operator delete[] (void *ptr) throw() {
+ size_t sz;
+ void *p;
+
diff --git a/grass-shlib-soname.patch b/grass-shlib-soname.patch
index a61a81c..39f29fd 100644
--- a/grass-shlib-soname.patch
+++ b/grass-shlib-soname.patch
@@ -1,25 +1,216 @@
---- include/Make/Shlib.make.orig 2010-03-22 14:07:45.000000000 +0100
-+++ include/Make/Shlib.make 2010-03-22 14:08:21.000000000 +0100
-@@ -1,6 +1,9 @@
+diff -up grass-6.4.2/include/Make/Grass.make.in.shlibver grass-6.4.2/include/Make/Grass.make.in
+--- grass-6.4.2/include/Make/Grass.make.in.shlibver 2012-03-02 14:56:53.788021081 -0500
++++ grass-6.4.2/include/Make/Grass.make.in 2012-03-02 15:05:23.355430132 -0500
+@@ -92,102 +92,102 @@ endif
+
+ ##################### library names #####################################
+
+-ARRAYSTATS_LIBNAME = grass_arraystats.$(GRASS_VERSION_NUMBER)
+-BITMAP_LIBNAME = grass_bitmap.$(GRASS_VERSION_NUMBER)
+-BTREE_LIBNAME = grass_btree.$(GRASS_VERSION_NUMBER)
+-CLUSTER_LIBNAME = grass_cluster.$(GRASS_VERSION_NUMBER)
+-COORCNV_LIBNAME = grass_coorcnv.$(GRASS_VERSION_NUMBER)
+-DATETIME_LIBNAME = grass_datetime.$(GRASS_VERSION_NUMBER)
+-DBDIALOG_LIBNAME = grass_dbdialog.$(GRASS_VERSION_NUMBER)
+-DISPLAY_LIBNAME = grass_display.$(GRASS_VERSION_NUMBER)
+-DLG_LIBNAME = grass_dlg.$(GRASS_VERSION_NUMBER)
+-DSPF_LIBNAME = grass_dspf.$(GRASS_VERSION_NUMBER)
+-DRIVER_LIBNAME = grass_driver.$(GRASS_VERSION_NUMBER)
+-PNGDRIVER_LIBNAME = grass_pngdriver.$(GRASS_VERSION_NUMBER)
+-PSDRIVER_LIBNAME = grass_psdriver.$(GRASS_VERSION_NUMBER)
+-CAIRODRIVER_LIBNAME = grass_cairodriver.$(GRASS_VERSION_NUMBER)
+-EDIT_LIBNAME = grass_edit.$(GRASS_VERSION_NUMBER)
+-G3D_LIBNAME = grass_g3d.$(GRASS_VERSION_NUMBER)
+-GIS_LIBNAME = grass_gis.$(GRASS_VERSION_NUMBER)
+-GMATH_LIBNAME = grass_gmath.$(GRASS_VERSION_NUMBER)
+-GPDE_LIBNAME = grass_gpde.$(GRASS_VERSION_NUMBER)
+-GPROJ_LIBNAME = grass_gproj.$(GRASS_VERSION_NUMBER)
+-IBTREE_LIBNAME = grass_ibtree.$(GRASS_VERSION_NUMBER)
+-ICON_LIBNAME = grass_icon.$(GRASS_VERSION_NUMBER)
+-IMAGERY_LIBNAME = grass_I.$(GRASS_VERSION_NUMBER)
+-IORTHO_LIBNAME = grass_Iortho.$(GRASS_VERSION_NUMBER)
+-IOSTREAM_LIBNAME = grass_iostream.$(GRASS_VERSION_NUMBER)
+-ISMAP_LIBNAME = grass_ismap.$(GRASS_VERSION_NUMBER)
+-LINKM_LIBNAME = grass_linkm.$(GRASS_VERSION_NUMBER)
+-LOCK_LIBNAME = grass_locky.$(GRASS_VERSION_NUMBER)
+-MANAGE_LIBNAME = grass_manage.$(GRASS_VERSION_NUMBER)
+-RASTER_LIBNAME = grass_raster.$(GRASS_VERSION_NUMBER)
+-ROWIO_LIBNAME = grass_rowio.$(GRASS_VERSION_NUMBER)
+-SEGMENT_LIBNAME = grass_segment.$(GRASS_VERSION_NUMBER)
+-STATS_LIBNAME = grass_stats.$(GRASS_VERSION_NUMBER)
+-VASK_LIBNAME = grass_vask.$(GRASS_VERSION_NUMBER)
+-XGD_LIBNAME = grass_Xgd.$(GRASS_VERSION_NUMBER)
+-XGI_LIBNAME = grass_Xgi.$(GRASS_VERSION_NUMBER)
+-XPM_LIBNAME = grass_Xpm.$(GRASS_VERSION_NUMBER)
++ARRAYSTATS_LIBNAME = grass_arraystats
++BITMAP_LIBNAME = grass_bitmap
++BTREE_LIBNAME = grass_btree
++CLUSTER_LIBNAME = grass_cluster
++COORCNV_LIBNAME = grass_coorcnv
++DATETIME_LIBNAME = grass_datetime
++DBDIALOG_LIBNAME = grass_dbdialog
++DISPLAY_LIBNAME = grass_display
++DLG_LIBNAME = grass_dlg
++DSPF_LIBNAME = grass_dspf
++DRIVER_LIBNAME = grass_driver
++PNGDRIVER_LIBNAME = grass_pngdriver
++PSDRIVER_LIBNAME = grass_psdriver
++CAIRODRIVER_LIBNAME = grass_cairodriver
++EDIT_LIBNAME = grass_edit
++G3D_LIBNAME = grass_g3d
++GIS_LIBNAME = grass_gis
++GMATH_LIBNAME = grass_gmath
++GPDE_LIBNAME = grass_gpde
++GPROJ_LIBNAME = grass_gproj
++IBTREE_LIBNAME = grass_ibtree
++ICON_LIBNAME = grass_icon
++IMAGERY_LIBNAME = grass_I
++IORTHO_LIBNAME = grass_Iortho
++IOSTREAM_LIBNAME = grass_iostream
++ISMAP_LIBNAME = grass_ismap
++LINKM_LIBNAME = grass_linkm
++LOCK_LIBNAME = grass_locky
++MANAGE_LIBNAME = grass_manage
++RASTER_LIBNAME = grass_raster
++ROWIO_LIBNAME = grass_rowio
++SEGMENT_LIBNAME = grass_segment
++STATS_LIBNAME = grass_stats
++VASK_LIBNAME = grass_vask
++XGD_LIBNAME = grass_Xgd
++XGI_LIBNAME = grass_Xgi
++XPM_LIBNAME = grass_Xpm
+
+ # Vector
+-DIG_LIBNAME = grass_dig.$(GRASS_VERSION_NUMBER)
+-DIG2_LIBNAME = grass_dig2.$(GRASS_VERSION_NUMBER)
+-VECTR_LIBNAME = grass_vect.$(GRASS_VERSION_NUMBER)
+-TRANS_LIBNAME = grass_trans.$(GRASS_VERSION_NUMBER)
+-
+-SHAPE_LIBNAME = grass_shape.$(GRASS_VERSION_NUMBER)
+-GRAPH_LIBNAME = grass_dgl.$(GRASS_VERSION_NUMBER)
+-RTREE_LIBNAME = grass_rtree.$(GRASS_VERSION_NUMBER)
++DIG_LIBNAME = grass_dig
++DIG2_LIBNAME = grass_dig2
++VECTR_LIBNAME = grass_vect
++TRANS_LIBNAME = grass_trans
++
++SHAPE_LIBNAME = grass_shape
++GRAPH_LIBNAME = grass_dgl
++RTREE_LIBNAME = grass_rtree
+
+-VEDIT_LIBNAME = grass_vedit.$(GRASS_VERSION_NUMBER)
+-NETA_LIBNAME = grass_neta.$(GRASS_VERSION_NUMBER)
++VEDIT_LIBNAME = grass_vedit
++NETA_LIBNAME = grass_neta
+
+ # Interpolation
+-INTERPDATA_LIBNAME = grass_interpdata.$(GRASS_VERSION_NUMBER)
+-INTERPFL_LIBNAME = grass_interpfl.$(GRASS_VERSION_NUMBER)
+-QTREE_LIBNAME = grass_qtree.$(GRASS_VERSION_NUMBER)
++INTERPDATA_LIBNAME = grass_interpdata
++INTERPFL_LIBNAME = grass_interpfl
++QTREE_LIBNAME = grass_qtree
+
+ # NVIZ related
+-OGSF_LIBNAME = grass_ogsf.$(GRASS_VERSION_NUMBER)
+-NVIZ_LIBNAME = grass_nviz.$(GRASS_VERSION_NUMBER)
++OGSF_LIBNAME = grass_ogsf
++NVIZ_LIBNAME = grass_nviz
+
+ # triangulation libraries
+-SOS_LIBNAME = grass_sos.$(GRASS_VERSION_NUMBER)
+-LIA_LIBNAME = grass_lia.$(GRASS_VERSION_NUMBER)
+-OPTRI_LIBNAME = grass_optri.$(GRASS_VERSION_NUMBER)
+-BASIC_LIBNAME = grass_basic.$(GRASS_VERSION_NUMBER)
++SOS_LIBNAME = grass_sos
++LIA_LIBNAME = grass_lia
++OPTRI_LIBNAME = grass_optri
++BASIC_LIBNAME = grass_basic
+
+-XDISPLAY_LIBNAME = grass_Xdisplay.$(GRASS_VERSION_NUMBER)
++XDISPLAY_LIBNAME = grass_Xdisplay
+
+ # DBMI
+-DBMI_LIBNAME = grass_dbmi.$(GRASS_VERSION_NUMBER)
+-DBMIBASE_LIBNAME = grass_dbmibase.$(GRASS_VERSION_NUMBER)
+-DBMICLIENT_LIBNAME = grass_dbmiclient.$(GRASS_VERSION_NUMBER)
+-DBMIDRIVER_LIBNAME = grass_dbmidriver.$(GRASS_VERSION_NUMBER)
+-SQLP_LIBNAME = grass_sqlp.$(GRASS_VERSION_NUMBER)
+-DBSTUBS_LIBNAME = grass_dbstubs.$(GRASS_VERSION_NUMBER)
++DBMI_LIBNAME = grass_dbmi
++DBMIBASE_LIBNAME = grass_dbmibase
++DBMICLIENT_LIBNAME = grass_dbmiclient
++DBMIDRIVER_LIBNAME = grass_dbmidriver
++SQLP_LIBNAME = grass_sqlp
++DBSTUBS_LIBNAME = grass_dbstubs
+
+ # database forms
+-FORM_LIBNAME = grass_form.$(GRASS_VERSION_NUMBER)
++FORM_LIBNAME = grass_form
+
+ # Symbols (icons, patterns)
+-SYMB_LIBNAME = grass_symb.$(GRASS_VERSION_NUMBER)
++SYMB_LIBNAME = grass_symb
+
+ # Normality
+-CDHC_LIBNAME = grass_cdhc.$(GRASS_VERSION_NUMBER)
++CDHC_LIBNAME = grass_cdhc
+
+ # Lidar
+-LIDAR_LIBNAME = grass_lidar.$(GRASS_VERSION_NUMBER)
++LIDAR_LIBNAME = grass_lidar
+
+ # Raster/SIMWE
+-SIM_LIBNAME = grass_sim.$(GRASS_VERSION_NUMBER)
++SIM_LIBNAME = grass_sim
+
+ # Sites (legacy)
+-SITES_LIBNAME = grass_sites.$(GRASS_VERSION_NUMBER)
++SITES_LIBNAME = grass_sites
+
+ # LRS
+-LRS_LIBNAME = grass_lrs.$(GRASS_VERSION_NUMBER)
++LRS_LIBNAME = grass_lrs
+
+ ##################### library switches ##################################
+
+diff -up grass-6.4.2/include/Make/Shlib.make.shlibver grass-6.4.2/include/Make/Shlib.make
+--- grass-6.4.2/include/Make/Shlib.make.shlibver 2011-05-03 15:27:17.000000000 -0400
++++ grass-6.4.2/include/Make/Shlib.make 2012-03-02 14:54:18.852551365 -0500
+@@ -1,6 +1,8 @@
# common dependencies and rules for building shared libraries
--SHLIB = $(ARCH_LIBDIR)/$(SHLIB_PREFIX)$(SHLIB_NAME).$(GRASS_VERSION_NUMBER)$(SHLIB_SUFFIX)
+-SHLIB = $(ARCH_LIBDIR)/$(SHLIB_PREFIX)$(SHLIB_NAME)$(SHLIB_SUFFIX)
++SHLIB = $(ARCH_LIBDIR)/$(SHLIB_PREFIX)$(SHLIB_NAME)$(SHLIB_SUFFIX).$(GRASS_VERSION_NUMBER)
+GRASS_MAJOR=6
+GRASS_MINOR=4
-+
-+SHLIB = $(ARCH_LIBDIR)/$(SHLIB_PREFIX)$(SHLIB_NAME)$(SHLIB_SUFFIX).$(GRASS_VERSION_NUMBER)
# Object that calls _setfmode(_O_BINARY) which must be linked to each DLL on Windows
ifdef MINGW
-@@ -15,8 +18,9 @@
+@@ -15,9 +17,12 @@ CFLAGS += $(SHLIB_CFLAGS) $(NLS_CFLAGS)
LDFLAGS += $(SHLIB_LDFLAGS)
$(SHLIB): $(SHLIB_OBJS)
-- $(SHLIB_LD) -o $@ $(LDFLAGS) $^ $(EXTRA_LIBS) $(DLLMAIN_OBJ) && \
+- $(SHLIB_LD) -o $@ $(LDFLAGS) $^ $(EXTRA_LIBS) $(DLLMAIN_OBJ)
+ ifndef MINGW
- (cd $(ARCH_LIBDIR); ln -f -s $(notdir $@) $(patsubst %.$(GRASS_VERSION_NUMBER)$(SHLIB_SUFFIX),%$(SHLIB_SUFFIX),$@))
-+ $(SHLIB_LD) -o $@ -Wl,-soname,lib$(SHLIB_NAME)$(SHLIB_SUFFIX).$(GRASS_MAJOR).$(GRASS_MINOR) $(LDFLAGS) $^ $(EXTRA_LIBS) && \
++ $(SHLIB_LD) -o $@ -Wl,-soname,lib$(SHLIB_NAME)$(SHLIB_SUFFIX).$(GRASS_MAJOR).$(GRASS_MINOR) $(LDFLAGS) $^ $(EXTRA_LIBS) $(DLLMAIN_OBJ) && \
+ ln -f -s $(notdir $@) $(patsubst %$(SHLIB_SUFFIX).$(GRASS_VERSION_NUMBER),%$(SHLIB_SUFFIX),$@); \
+ ln -f -s $(notdir $@) $(patsubst %$(SHLIB_SUFFIX).$(GRASS_VERSION_NUMBER),%$(SHLIB_SUFFIX).$(GRASS_MAJOR).$(GRASS_MINOR),$@);
++else
++ $(SHLIB_LD) -o $@ -Wl,-soname,lib$(SHLIB_NAME)$(SHLIB_SUFFIX).$(GRASS_MAJOR).$(GRASS_MINOR) $(LDFLAGS) $^ $(EXTRA_LIBS) $(DLLMAIN_OBJ)
+ endif
shlib: $(SHLIB)
+diff -up grass-6.4.2/raster/r.li/r.li.daemon/Makefile.shlibver grass-6.4.2/raster/r.li/r.li.daemon/Makefile
+--- grass-6.4.2/raster/r.li/r.li.daemon/Makefile.shlibver 2012-03-02 15:02:38.009056327 -0500
++++ grass-6.4.2/raster/r.li/r.li.daemon/Makefile 2012-03-02 15:02:50.572932790 -0500
+@@ -2,7 +2,7 @@ MODULE_TOPDIR = ../../..
+
+ EXTRA_LIBS=$(GISLIB) $(MATHLIB)
+
+-LIB_NAME = grass_rli.$(GRASS_VERSION_NUMBER)
++LIB_NAME = grass_rli
+
+ LIB_OBJS = daemon.o list.o ipc.o worker.o GenericCell.o avl.o avlID.o
diff --git a/grass.spec b/grass.spec
index cf6fb0a..50d223a 100644
--- a/grass.spec
+++ b/grass.spec
@@ -24,8 +24,8 @@
%endif
Name: grass
-Version: 6.4.1
-Release: 8%{?dist}
+Version: 6.4.2
+Release: 1%{?dist}
Summary: GRASS - Geographic Resources Analysis Support System
Group: Applications/Engineering
License: GPLv2+
@@ -37,21 +37,10 @@ Patch0: %{name}-pkgconf.patch
# Warning: This patch contains the GRASS version number
Patch1: %{name}-shlib-soname.patch
-Patch2: %{name}-6.4.1-docfiles.patch
-# Patches 3 and 4 taken from Ubuntu
+Patch2: %{name}-6.4.2-docfiles.patch
-#TODO: There is no "pager" file in Fedora
-# Why can't you use the normal PAGER environment variable?
-#Patch3: %{name}-6.4.1-pager.patch
-#Doesn't seem to work on Fedora
-#Patch4: %{name}-6.4.1-www-browser.patch
-
-# http://osgeo-org.1803224.n2.nabble.com/Error-with-GRASS-6-4-1-on-CentOS-5-td6270338.html
-Patch5: %{name}-6.4.1-ternaryOp-python24.patch
-
-# Libpng API changed from 1.2 to 1.5
-#http://trac.osgeo.org/grass/ticket/1347
-Patch6: %{name}-6.4.1-r.out.png.patch
+# Backport from http://trac.osgeo.org/grass/changeset/50130
+Patch3: %{name}-6.4.2-gcc47.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -139,12 +128,9 @@ GRASS (Geographic Resources Analysis Support System) development headers.
%prep
%setup -q
%patch0 -p0 -b .pkgconf
-%patch1 -p0 -b .shlibver
+%patch1 -p1 -b .shlibver
%patch2 -p1 -b .docfiles
-#%patch3 -p1 -b .pager
-#%patch4 -p1 -b .www-browser
-%patch5 -p0 -b .ternaryOp
-%patch6 -p1 -b .r.out.png
+%patch3 -p1 -b .gcc47
# Correct mysql_config query
sed -i 's|--libmysqld-libs|--libs|g' configure
@@ -391,6 +377,9 @@ rm -rf %{buildroot}
%changelog
+* Fri Mar 2 2012 Tom Callaway <spot at fedoraproject.org> - 6.4.2-1
+- update to 6.4.2
+
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 6.4.1-8
- Rebuilt for c++ ABI breakage
diff --git a/sources b/sources
index a7b8455..7eed78f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-d8ca83d416b5b0cf2aa9d36c81a77b23 grass-6.4.1.tar.gz
+d3398d6b1e3a2ef19cfb6e39a5ae9919 grass-6.4.2.tar.gz
More information about the scm-commits
mailing list