diff -Nru grass-7.8.5~rc1/debian/changelog grass-7.8.5/debian/changelog --- grass-7.8.5~rc1/debian/changelog 2020-12-08 10:17:07.000000000 +0000 +++ grass-7.8.5/debian/changelog 2020-12-23 14:47:13.000000000 +0000 @@ -1,3 +1,16 @@ +grass (7.8.5-1~focal1) focal; urgency=medium + + * Rebuild for focal. + + -- Martin Landa Wed, 23 Dec 2020 15:47:13 +0100 + +grass (7.8.5-1) unstable; urgency=medium + + * New upstream release. + * Move from experimental to unstable. + + -- Bas Couwenberg Mon, 21 Dec 2020 20:35:24 +0100 + grass (7.8.5~rc1-1~exp1~focal1) focal; urgency=medium * Rebuild for focal. diff -Nru grass-7.8.5~rc1/doc/howto_release.md grass-7.8.5/doc/howto_release.md --- grass-7.8.5~rc1/doc/howto_release.md 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/doc/howto_release.md 2020-12-21 18:40:15.000000000 +0000 @@ -241,7 +241,7 @@ ssh neteler@$SERVER1 "cd $SERVER1DIR ; ln -s grass-$VERSION.tar.gz grass-$MAJOR.$MINOR-latest.md5sum" # verify -echo "https://$SERVER1/grass$MAJOR$MINOR/source/" +echo "https://grass.osgeo.org/grass$MAJOR$MINOR/source/" # update winGRASS related files: Update the winGRASS version vim grass-addons/tools/wingrass-packager/grass_packager_release.bat @@ -257,48 +257,38 @@ Release is done. -### Advertise new release +### Advertise the new release -#### Update CMS web site to show new version +#### Write trac Wiki release page -- News section -- -- -- -- - -TODO: git tags - -- (add tag): echo $RELEASETAG - -#### Write announcement and publish it - -To easily generate the entries for the trac Wiki release pages, use a `git log` approach: - -- List of latest changes (example, get from GitHub release page) - - https://github.com/OSGeo/grass/compare/releasebranch_7_8@%7B05-05-20%7D...releasebranch_7_8@%7B09-26-20%7D -- identify start and end commit hash +To easily generate the entries for the trac Wiki release page, use the `git log` approach: - extract entries from oneline git log and prepare for trac Wiki copy-paste: ``` -#START=76d5988 -#END=8a81328 -##git log --oneline | sed -n "+^$START+,+^$END+p;+^$END+q" - +# get date of previous release from https://github.com/OSGeo/grass/releases # verify -git log --oneline | sed -n '/^76d5988/,/^8a81328/p;/^8a81328/q' | tac +git log --oneline --after="2020-10-05" | tac -# prepare for trac Wiki release page -git log --oneline | sed -n '/^76d5988/,/^8a81328/p;/^8a81328/q' | cut -d' ' -f2- | sed 's+^+ * G78:+g' | sort -u +# prepare for trac Wiki release page (incl. PR trac macro) +git log --oneline --after="2020-10-05" | cut -d' ' -f2- | sed 's+^+ * G78:+g' | sed 's+(#+(PR:+g' | sort -u ``` -- store entries in trac, by section: +- store changelog entries in trac, by section: - - - <- add content - of major changes only -- update version in -- ~~store in Web as announces/announce_grass$MAJOR$MINOR$RELEASE.html <- how? - with protected PHP upload page?~~ (dropped since CMS) + - <- add content of major changes only + +#### Update CMS web site to show new version (not for RCs!) + +Write announcement and publish it: +- News section, https://github.com/OSGeo/grass-website/tree/master/content/news + +Software pages: +- Linux: https://github.com/OSGeo/grass-website/blob/master/content/download/linux.en.md +- Windows: https://github.com/OSGeo/grass-website/blob/master/content/download/windows.en.md +- Mac: https://github.com/OSGeo/grass-website/blob/master/content/download/mac.en.md +- Releases: https://github.com/OSGeo/grass-website/blob/master/content/about/history/releases.md +- Wiki: https://grasswiki.osgeo.org/wiki/GRASS-Wiki + #### Only in case of new major release diff -Nru grass-7.8.5~rc1/docker/README.md grass-7.8.5/docker/README.md --- grass-7.8.5~rc1/docker/README.md 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/docker/README.md 2020-12-21 18:40:15.000000000 +0000 @@ -4,17 +4,15 @@ | Base image | Docker tag | GRASS GIS | PROJ | GDAL | PDAL | Python | Image size | |--------------|-----------------|------------|-------|-------|-------|--------|------------| -| Ubuntu 18.04 | latest-ubuntu | 7.9.dev | 4.9.3 | 2.2.3 | 1.8.0 | 3.6.9 | 1.04 GB | -| Ubuntu 19.10 | latest-ubuntu19 | 7.9.dev | 5.2.0 | 2.4.2 | 1.9.1 | 3.7.5 | 850 MB | +| Ubuntu 20.04 | latest-ubuntu | 7.9.dev | 6.3.1 | 3.0.4 | 2.2.0 | 3.8.5 | 1.04 GB | | Debian 10.1 | latest-debian | 7.9.dev | 5.2.0 | 2.4.0 | 1.8.0 | 3.7.3 | 1.14 GB | | Alpine 3.12 | latest-alpine | 7.9.dev | 7.0.1 | 3.1.2 | 2.1.0 | 3.5.8 | 385 MB | |--------------|-----------------|------------|-------|-------|-------|--------|------------| -| Ubuntu 18.04 | stable-ubuntu | 7.8 branch | 4.9.3 | 2.2.3 | 1.8.0 | 3.6.9 | 1.04 GB | -| Ubuntu 19.10 | stable-ubuntu19 | 7.8 branch | 5.2.0 | 2.4.2 | 1.9.1 | 3.7.5 | 850 MB | +| Ubuntu 20.04 | stable-ubuntu | 7.8 branch | 6.3.1 | 3.0.4 | 2.2.0 | 3.8.5 | 1.04 GB | | Debian 10.1 | stable-debian | 7.8 branch | 5.2.0 | 2.4.0 | 1.8.0 | 3.7.3 | 1.14 GB | | Alpine 3.12 | stable-alpine | 7.8 branch | 7.0.1 | 3.1.2 | 2.1.0 | 3.5.8 | 385 MB | -Last update: 17 Sep 2020 (source: https://hub.docker.com/r/mundialis/grass-py3-pdal/builds) +Last update: 16 Dec 2020 (source: https://hub.docker.com/r/mundialis/grass-py3-pdal/builds) # Requirements diff -Nru grass-7.8.5~rc1/docker/ubuntu/Dockerfile_ubuntu_latest_pdal grass-7.8.5/docker/ubuntu/Dockerfile_ubuntu_latest_pdal --- grass-7.8.5~rc1/docker/ubuntu/Dockerfile_ubuntu_latest_pdal 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/docker/ubuntu/Dockerfile_ubuntu_latest_pdal 1970-01-01 00:00:00.000000000 +0000 @@ -1,194 +0,0 @@ -FROM ubuntu:19.10 - -LABEL authors="Carmen Tawalika,Markus Neteler,Anika Bettge" -LABEL maintainer="tawalika@mundialis.de,neteler@mundialis.de,bettge@mundialis.de" - -ENV DEBIAN_FRONTEND noninteractive - -SHELL ["/bin/bash", "-c"] - -WORKDIR /tmp - -RUN apt-get update && apt-get upgrade -y && \ - apt-get install -y --no-install-recommends --no-install-suggests \ - build-essential \ - bison \ - bzip2 \ - cmake \ - curl \ - flex \ - g++ \ - gcc \ - gdal-bin \ - git \ - language-pack-en-base \ - libbz2-dev \ - libcairo2 \ - libcairo2-dev \ - libcurl4-gnutls-dev \ - libfftw3-bin \ - libfftw3-dev \ - libfreetype6-dev \ - libgdal-dev \ - libgeos-dev \ - libgsl0-dev \ - libjpeg-dev \ - libjsoncpp-dev \ - libnetcdf-dev \ - libncurses5-dev \ - libopenblas-base \ - libopenblas-dev \ - libopenjp2-7 \ - libopenjp2-7-dev \ - libpdal-dev \ - libpdal-plugins \ - libpdal-plugin-python \ - libpnglite-dev \ - libpq-dev \ - libproj-dev \ - libpython3-all-dev \ - libsqlite3-dev \ - libtiff-dev \ - libzstd-dev \ - locales \ - make \ - mesa-common-dev \ - moreutils \ - ncurses-bin \ - netcdf-bin \ - pdal \ - proj-bin \ - proj-data \ - python3 \ - python3-dateutil \ - python3-dev \ - python3-magic \ - python3-numpy \ - python3-pil \ - python3-pip \ - python3-ply \ - python3-setuptools \ - python3-venv \ - software-properties-common \ - sqlite3 \ - subversion \ - unzip \ - vim \ - wget \ - zip \ - zlib1g-dev - -RUN echo LANG="en_US.UTF-8" > /etc/default/locale -RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen - -## TODO check if still needed -## fetch vertical datums and store into PROJ dir -WORKDIR /src -RUN mkdir vdatum && \ - cd vdatum && \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2012.zip && unzip -j -u usa_geoid2012.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2009.zip && unzip -j -u usa_geoid2009.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid2003.zip && unzip -j -u usa_geoid2003.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/usa_geoid1999.zip && unzip -j -u usa_geoid1999.zip -d /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconc.gtx && mv vertconc.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertcone.gtx && mv vertcone.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/vertcon/vertconw.gtx && mv vertconw.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/egm96_15/egm96_15.gtx && mv egm96_15.gtx /usr/share/proj; \ - wget -q http://download.osgeo.org/proj/vdatum/egm08_25/egm08_25.gtx && mv egm08_25.gtx /usr/share/proj; \ - cd .. && \ - rm -rf vdatum - -# copy grass gis source -WORKDIR /src -COPY . /src/grass_build/ -WORKDIR /src/grass_build - -# Set environmental variables for GRASS GIS compilation, without debug symbols -# Set gcc/g++ environmental variables for GRASS GIS compilation, without debug symbols -ENV MYCFLAGS "-O2 -std=gnu99 -m64" -ENV MYLDFLAGS "-s" -# CXX stuff: -ENV LD_LIBRARY_PATH "/usr/local/lib" -ENV LDFLAGS "$MYLDFLAGS" -ENV CFLAGS "$MYCFLAGS" -ENV CXXFLAGS "$MYCXXFLAGS" - -# Configure compile and install GRASS GIS -ENV GRASS_PYTHON=/usr/bin/python3 -ENV NUMTHREADS=4 -RUN make distclean || echo "nothing to clean" -RUN /src/grass_build/configure \ - --with-cxx \ - --enable-largefile \ - --with-proj --with-proj-share=/usr/share/proj \ - --with-gdal=/usr/bin/gdal-config \ - --with-geos \ - --with-sqlite \ - --with-cairo --with-cairo-ldflags=-lfontconfig \ - --with-freetype --with-freetype-includes="/usr/include/freetype2/" \ - --with-fftw \ - --with-postgres=yes --with-postgres-includes="/usr/include/postgresql" \ - --with-netcdf \ - --with-zstd \ - --with-bzlib \ - --with-pdal \ - --without-mysql \ - --without-odbc \ - --without-openmp \ - --without-ffmpeg \ - --without-opengl \ - && make -j $NUMTHREADS \ - && make install && ldconfig - -# Unset environmental variables to avoid later compilation issues -ENV INTEL "" -ENV MYCFLAGS "" -ENV MYLDFLAGS "" -ENV MYCXXFLAGS "" -ENV LD_LIBRARY_PATH "" -ENV LDFLAGS "" -ENV CFLAGS "" -ENV CXXFLAGS "" - -# set SHELL var to avoid /bin/sh fallback in interactive GRASS GIS sessions -ENV SHELL /bin/bash -ENV LC_ALL "en_US.UTF-8" -ENV GRASS_SKIP_MAPSET_OWNER_CHECK 1 - -# Create generic GRASS GIS binary name regardless of version number -RUN ln -sf `find /usr/local/bin -name "grass??" | sort | tail -n 1` /usr/local/bin/grass -# Create generic GRASS GIS lib name regardless of version number -RUN ln -sf `grass --config path` /usr/local/grass - -# show GRASS GIS, PROJ, GDAL etc versions -RUN grass --tmp-location EPSG:4326 --exec g.version -rge && \ - pdal --version && \ - python3 --version - -# Reduce the image size -RUN apt-get autoremove -y -RUN apt-get clean -y - -WORKDIR /scripts - -# install external GRASS GIS session Python API -RUN pip3 install grass-session - -# install GRASS GIS extensions -RUN grass --tmp-location EPSG:4326 --exec g.extension extension=r.in.pdal - -# add GRASS GIS envs for python usage -ENV GISBASE "/usr/local/grass/" -ENV GRASSBIN "/usr/local/bin/grass" -ENV PYTHONPATH "${PYTHONPATH}:$GISBASE/etc/python/" -ENV LD_LIBRARY_PATH "$LD_LIBRARY_PATH:$GISBASE/lib" - -WORKDIR /tmp -COPY docker/testdata/simple.laz . -WORKDIR /scripts -COPY docker/testdata/test_grass_session.py . -## just scan the LAZ file -RUN /usr/bin/python3 /scripts/test_grass_session.py - -WORKDIR /grassdb -VOLUME /grassdb diff -Nru grass-7.8.5~rc1/docker/ubuntu/Dockerfile_ubuntu_pdal grass-7.8.5/docker/ubuntu/Dockerfile_ubuntu_pdal --- grass-7.8.5~rc1/docker/ubuntu/Dockerfile_ubuntu_pdal 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/docker/ubuntu/Dockerfile_ubuntu_pdal 2020-12-21 18:40:15.000000000 +0000 @@ -1,15 +1,13 @@ -FROM ubuntu:18.04 +FROM ubuntu:20.04 -LABEL authors="Carmen Tawalika,Markus Neteler,Anika Bettge" -LABEL maintainer="tawalika@mundialis.de,neteler@mundialis.de,bettge@mundialis.de" +LABEL authors="Carmen Tawalika,Markus Neteler,Anika Weinmann" +LABEL maintainer="tawalika@mundialis.de,neteler@mundialis.de,weinmann@mundialis.de" ENV DEBIAN_FRONTEND noninteractive # define versions to be used -ARG PDAL_VERSION=1.8.0 -ARG PROJ_VERSION=4.9.3 -ARG PROJ_DATUMGRID_VERSION=1.8 -ARG LAZ_PERF_VERSION=1.3.0 +ARG PDAL_VERSION=2.2.0 +ARG LAZ_PERF_VERSION=1.5.0 SHELL ["/bin/bash", "-c"] @@ -48,6 +46,7 @@ libopenjp2-7-dev \ libpnglite-dev \ libpq-dev \ + libproj-dev \ libpython3-all-dev \ libsqlite3-dev \ libtiff-dev \ @@ -58,6 +57,8 @@ moreutils \ ncurses-bin \ netcdf-bin \ + proj-bin \ + proj-data \ python3 \ python3-dateutil \ python3-dev \ @@ -80,19 +81,6 @@ RUN echo LANG="en_US.UTF-8" > /etc/default/locale RUN echo en_US.UTF-8 UTF-8 >> /etc/locale.gen && locale-gen -## install the latest projection library for GRASS GIS -WORKDIR /src -RUN wget -q http://download.osgeo.org/proj/proj-${PROJ_VERSION}.tar.gz && \ - tar xzf proj-${PROJ_VERSION}.tar.gz && \ - cd /src/proj-${PROJ_VERSION}/ && \ - wget -q http://download.osgeo.org/proj/proj-datumgrid-${PROJ_DATUMGRID_VERSION}.zip && \ - cd nad && \ - unzip ../proj-datumgrid-${PROJ_DATUMGRID_VERSION}.zip && \ - cd .. && \ - ./configure --prefix=/usr/ && \ - make && \ - make install - ## install laz-perf RUN apt-get install cmake WORKDIR /src @@ -105,7 +93,7 @@ make && \ make install -## fetch vertical datums and store into PROJ dir +## fetch vertical datums for PDAL and store into PROJ dir WORKDIR /src RUN mkdir vdatum && \ cd vdatum && \ @@ -158,6 +146,9 @@ COPY . /src/grass_build/ WORKDIR /src/grass_build +# Cleanup potentially leftover GISRC file with wrong path to "demolocation" +RUN rm -f /src/grass_build/dist.*/demolocation/.grassrc7? + # Set environmental variables for GRASS GIS compilation, without debug symbols # Set gcc/g++ environmental variables for GRASS GIS compilation, without debug symbols ENV MYCFLAGS "-O2 -std=gnu99 -m64" diff -Nru grass-7.8.5~rc1/gui/wxpython/gui_core/dialogs.py grass-7.8.5/gui/wxpython/gui_core/dialogs.py --- grass-7.8.5~rc1/gui/wxpython/gui_core/dialogs.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/gui/wxpython/gui_core/dialogs.py 2020-12-21 18:40:15.000000000 +0000 @@ -368,8 +368,7 @@ proportion=0, flag=wx.ALIGN_CENTER_VERTICAL) keySizer.AddSpacer(10) - keySizer.Add(self.keycol, proportion=0, - flag=wx.ALIGN_RIGHT) + keySizer.Add(self.keycol, proportion=0) self.dataSizer.Add(keySizer, proportion=1, flag=wx.EXPAND | wx.ALL, border=1) @@ -1974,7 +1973,7 @@ btnsizer.Realize() sizer.Add(btnsizer, proportion=0, - flag=wx.EXPAND | wx.ALIGN_RIGHT | wx.ALL, border=5) + flag=wx.EXPAND | wx.ALL, border=5) self.panel.SetSizer(sizer) sizer.Fit(self.panel) diff -Nru grass-7.8.5~rc1/gui/wxpython/gui_core/gselect.py grass-7.8.5/gui/wxpython/gui_core/gselect.py --- grass-7.8.5~rc1/gui/wxpython/gui_core/gselect.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/gui/wxpython/gui_core/gselect.py 2020-12-21 18:40:15.000000000 +0000 @@ -2559,7 +2559,10 @@ if self._isMapSelected(): layerList = self.giface.GetLayerList() layerSelected = layerList.GetSelectedLayer() - inputName = self.task.get_param('input') + # d.vect module + inputName = self.task.get_param(value='map', raiseError=False) + if not inputName: + inputName = self.task.get_param('input') if inputName['value'] != str(layerSelected): if inputName['value'] == '' or inputName['value'] is None: GWarning(_("Input vector map is not selected")) diff -Nru grass-7.8.5~rc1/gui/wxpython/modules/import_export.py grass-7.8.5/gui/wxpython/modules/import_export.py --- grass-7.8.5~rc1/gui/wxpython/modules/import_export.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/gui/wxpython/modules/import_export.py 2020-12-21 18:40:15.000000000 +0000 @@ -713,7 +713,7 @@ dialogSizer.Add( btnSizer, proportion=0, - flag=wx.ALIGN_CENTER_VERTICAL | wx.BOTTOM | wx.TOP | wx.ALIGN_RIGHT, + flag=wx.BOTTOM | wx.TOP | wx.ALIGN_RIGHT, border=10) self.panel.SetAutoLayout(True) diff -Nru grass-7.8.5~rc1/gui/wxpython/timeline/frame.py grass-7.8.5/gui/wxpython/timeline/frame.py --- grass-7.8.5~rc1/gui/wxpython/timeline/frame.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/gui/wxpython/timeline/frame.py 2020-12-21 18:40:15.000000000 +0000 @@ -35,7 +35,6 @@ FigureCanvasWxAgg as FigCanvas, \ NavigationToolbar2WxAgg as NavigationToolbar import matplotlib.dates as mdates - from matplotlib import cbook except ImportError as e: raise ImportError(_('The Timeline Tool needs the "matplotlib" ' '(python-matplotlib and on some systems also python-matplotlib-wx) package(s) to be installed. {0}').format(e)) @@ -615,7 +614,7 @@ self.formatFunction = formatFunction self.offsets = offsets self.display_all = display_all - if not cbook.iterable(artists): + if not np.iterable(artists): artists = [artists] self.artists = artists @@ -626,7 +625,7 @@ for ax in self.axes: self.annotations[ax] = self.annotate(ax) for artist in self.artists: - artist.set_picker(tolerance) + artist.set_pickradius(tolerance) for fig in self.figures: fig.canvas.mpl_connect('pick_event', self) fig.canvas.mpl_connect('key_press_event', self.keyPressed) diff -Nru grass-7.8.5~rc1/gui/wxpython/tplot/frame.py grass-7.8.5/gui/wxpython/tplot/frame.py --- grass-7.8.5~rc1/gui/wxpython/tplot/frame.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/gui/wxpython/tplot/frame.py 2020-12-21 18:40:15.000000000 +0000 @@ -39,7 +39,6 @@ FigureCanvasWxAgg as FigCanvas, \ NavigationToolbar2WxAgg as NavigationToolbar import matplotlib.dates as mdates - from matplotlib import cbook except ImportError as e: raise ImportError(_('The Temporal Plot Tool needs the "matplotlib" ' '(python-matplotlib) package to be installed. {0}').format(e)) @@ -1125,7 +1124,7 @@ self.formatFunction = formatFunction self.offsets = offsets self.display_all = display_all - if not cbook.iterable(artists): + if not np.iterable(artists): artists = [artists] self.artists = artists self.convert = convert @@ -1136,7 +1135,7 @@ for ax in self.axes: self.annotations[ax] = self.annotate(ax) for artist in self.artists: - artist.set_picker(tolerance) + artist.set_pickradius(tolerance) for fig in self.figures: fig.canvas.mpl_connect('pick_event', self) fig.canvas.mpl_connect('key_press_event', self.keyPressed) diff -Nru grass-7.8.5~rc1/include/VERSION grass-7.8.5/include/VERSION --- grass-7.8.5~rc1/include/VERSION 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/include/VERSION 2020-12-21 18:40:15.000000000 +0000 @@ -1,4 +1,4 @@ 7 8 -5RC1 +5 2020 diff -Nru grass-7.8.5~rc1/raster/r.resamp.bspline/r.resamp.bspline.html grass-7.8.5/raster/r.resamp.bspline/r.resamp.bspline.html --- grass-7.8.5~rc1/raster/r.resamp.bspline/r.resamp.bspline.html 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/raster/r.resamp.bspline/r.resamp.bspline.html 2020-12-21 18:40:15.000000000 +0000 @@ -24,7 +24,8 @@ interpolated surface closely follows observation points; a larger value will produce a smoother interpolation. Reasonable values are 0.0001, 0.001, 0.005, 0.01, 0.02, 0.05, 0.1 (needs more testing). For seamless -NULL cell interpolation, a small value is required and default is set to 0.005. +NULL cell interpolation, a small value is required. The default lambda +value is set to 0.01.

From a theoretical perspective, the interpolating procedure takes place in two parts: the first is an estimate of the linear coefficients of a spline function; diff -Nru grass-7.8.5~rc1/scripts/d.correlate/d.correlate.py grass-7.8.5/scripts/d.correlate/d.correlate.py --- grass-7.8.5~rc1/scripts/d.correlate/d.correlate.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/scripts/d.correlate/d.correlate.py 2020-12-21 18:40:15.000000000 +0000 @@ -67,12 +67,12 @@ stdin="%s %s" % (i, j)) line += 1 - ofile = file(tmpfile, 'w') + ofile = open(tmpfile, 'w') gcore.run_command('r.stats', flags='cnA', input=(i, j), stdout=ofile) ofile.close() - ifile = file(tmpfile, 'r') + ifile = open(tmpfile, 'r') first = True for l in ifile: f = l.rstrip('\r\n').split(' ') @@ -98,12 +98,12 @@ p = gcore.feed_command('d.graph', color=color) ofile = p.stdin - ifile = file(tmpfile, 'r') + ifile = open(tmpfile, 'r') for l in ifile: f = l.rstrip('\r\n').split(' ') x = float(f[0]) y = float(f[1]) - ofile.write("icon + 0.1 %f %f\n" % ((x - minx + 1) * kx, + ofile.write(b"icon + 0.1 %f %f\n" % ((x - minx + 1) * kx, (y - miny + 1) * ky)) ifile.close() diff -Nru grass-7.8.5~rc1/scripts/g.extension/g.extension.py grass-7.8.5/scripts/g.extension/g.extension.py --- grass-7.8.5~rc1/scripts/g.extension/g.extension.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/scripts/g.extension/g.extension.py 2020-12-21 18:40:15.000000000 +0000 @@ -1535,15 +1535,15 @@ # get the module name: PGM = with open(os.path.join(r, 'Makefile')) as fp: for line in fp.readlines(): - if "PGM" in line: + if re.match(r'PGM.*.=|PGM=', line): try: modulename = line.split('=')[1].strip() if modulename: module_list.append(modulename) else: - grass.error(pgm_not_found_message) + grass.fatal(pgm_not_found_message) except IndexError: - grass.error(pgm_not_found_message) + grass.fatal(pgm_not_found_message) # change shebang from python to python3 pyfiles = [] diff -Nru grass-7.8.5~rc1/tools/mkhtml.py grass-7.8.5/tools/mkhtml.py --- grass-7.8.5~rc1/tools/mkhtml.py 2020-12-06 13:18:30.000000000 +0000 +++ grass-7.8.5/tools/mkhtml.py 2020-12-21 18:40:15.000000000 +0000 @@ -67,6 +67,9 @@ return unicode(bytes_) +html_page_footer_pages_path = os.getenv('HTML_PAGE_FOOTER_PAGES_PATH') if \ + os.getenv('HTML_PAGE_FOOTER_PAGES_PATH') else '' + pgm = sys.argv[1] src_file = "%s.html" % pgm @@ -309,6 +312,29 @@ if not re.search('', src_data, re.IGNORECASE): tmp_data = read_file(tmp_file) + """ + Adjusting keywords html pages paths if add-on html man page + stored on the server + """ + if html_page_footer_pages_path: + new_keywords_paths = [] + orig_keywords_paths = re.search( + r'KEYWORDS(.*?)', + tmp_data, re.DOTALL, + ) + if orig_keywords_paths: + search_txt = 'href="' + for i in orig_keywords_paths.group(1).split(','): + if search_txt in i: + index = i.index(search_txt) + len(search_txt) + new_keywords_paths.append( + i[:index] + html_page_footer_pages_path + i[index:], + ) + if new_keywords_paths: + tmp_data = tmp_data.replace( + orig_keywords_paths.group(1), + ','.join(new_keywords_paths), + ) if not re.search('', tmp_data, re.IGNORECASE): sys.stdout.write(header_tmpl.substitute(PGM=pgm, PGM_DESC=pgm_desc)) if tmp_data: @@ -404,9 +430,6 @@ if sys.platform == 'win32': url_source = url_source.replace(os.path.sep, '/') -html_page_footer_pages_path = os.getenv('HTML_PAGE_FOOTER_PAGES_PATH') if \ - os.getenv('HTML_PAGE_FOOTER_PAGES_PATH') else '' - if index_name: tree = 'grass/tree' commits = 'grass/commits'