[GRASS-dev] Automatic/CI compilation on macOS

Vaclav Petras wenzeslaus at gmail.com
Mon Sep 14 20:23:59 PDT 2020


Hi Nicklas,

Thanks, these look great. What do you suggest as next steps?

It would be great to have at least one of these running in the main repo. I
don't know if we need all, but each has its specifics. An App bundle would
make sense as a test of a primary way of distributing. (There is a lot of
additional code in grass-conda repo, but we do have a ton of code for
Windows packaging in the repo.) Plain build inside conda would be nice and
simple for the testing purposes. An actual conda package build, possibly
cross-platform in the future, sounds like the right thing to do since conda
is already involved.

BTW, I merged your Install.make fix. Please, consider doing more of these.
"enable OSX Help Viewer" and other macOS-only cases should go to the main
code rather than being a patch. The PYTHON var (Python executable (which is
used for ?)) would make sense as something configurable.

Vaclav

On Wed, Aug 12, 2020 at 12:14 PM Nicklas Larsson <n_larsson at yahoo.com>
wrote:

> Hi!
>
> Just want to give you an update on the issue. I managed to get CI build
> working for Mac [1, 2].
>
> In addition I’m working on a bash script-package [3] (based on Michael’s
> excellent instructions on grasswiki [4]) which uses conda too, for a very
> simplified procedure to build an app bundle. It is working, but needs
> testing.
>
> Best,
> Nicklas
>
>
> [1]
> https://github.com/nilason/grass-gis-experimental-ci/tree/conda-updates
> [2] https://github.com/GRASS-GIS/grass-gis-experimental-ci/pull/3
> [3] https://github.com/nilason/grass-conda
> [4] https://grasswiki.osgeo.org/wiki/Compiling_on_macOS_using_Anaconda
>
> On 31 Mar 2020, at 14:53, Rainer M Krug <Rainer at krugs.de> wrote:
>
> Thanks Vaclav
>
> I will wait and see.If you could please post here if something happens, as
> I am not following grass-user?
>
> Thanks,
>
> Rainer
>
>
>
> On 31 Mar 2020, at 03:50, Vaclav Petras <wenzeslaus at gmail.com> wrote:
>
> Hi Rainer,
>
> Unfortunately, I don't have any update for this, but I thought I will
> (inter-)link a detailed analysis on grass-user by Veronika and related PR:
>
> [GRASS-user] Problems on MacOS Catalina Installation via Homebrew "Cannot
> find proj.db"
> https://lists.osgeo.org/pipermail/grass-user/2020-March/081377.html
>
> [Bug] Update build GRASS as macOS application #457 (linked comment and
> below)
> https://github.com/OSGeo/grass/issues/457#issuecomment-603575140
>
> Vaclav
>
> On Sun, Mar 8, 2020 at 12:35 PM Rainer M Krug <Rainer at krugs.de> wrote:
>
>>
>>
>> On 6 Mar 2020, at 18:40, Markus Metz <markus.metz.giswork at gmail.com>
>> wrote:
>>
>>
>>
>> On Fri, Mar 6, 2020 at 8:50 AM Rainer M Krug <Rainer at krugs.de> wrote:
>> >
>> > OK. Looking at the parameters GRASS is compiled with (grass78 —config),
>> I get the following proj related parameter (the complete output at the end
>> of the email):
>> >
>> > --with-proj-includes=/usr/local/opt/osgeo-proj/include
>> > --with-proj-libs=/usr/local/opt/osgeo-proj/lib
>> > --with-proj-share=/usr/local/opt/osgeo-proj/share/proj
>> >
>> > Which seem to be correct, and proj.db is in the proj-share directory.
>> >
>> >
>> > 08:37 $ ls -la /usr/local/opt/osgeo-proj/share/proj
>> > total 12408
>> > drwxr-xr-x  15 rainerkrug  staff      480 Feb 10 11:16 .
>> > drwxr-xr-x   4 rainerkrug  staff      128 Feb 10 11:16 ..
>> > -rw-r--r--   1 rainerkrug  staff     1183 Feb 10 11:16 CH
>> > -rw-r--r--   1 rainerkrug  staff      728 Feb 10 11:16 GL27
>> > -rw-r--r--   1 rainerkrug  staff     2099 Feb 10 11:16 ITRF2000
>> > -rw-r--r--   1 rainerkrug  staff     3660 Feb 10 11:16 ITRF2008
>> > -rw-r--r--   1 rainerkrug  staff     3468 Feb 10 11:16 ITRF2014
>> > -rw-r--r--   1 rainerkrug  staff     6385 Feb 10 11:16 nad.lst
>> > -rw-r--r--   1 rainerkrug  staff    19535 Feb 10 11:16 nad27
>> > -rw-r--r--   1 rainerkrug  staff    16593 Feb 10 11:16 nad83
>> > -rw-r--r--   1 rainerkrug  staff      232 Feb 10 11:16 null
>> > -rw-r--r--   1 rainerkrug  staff     3915 Feb 10 11:16 other.extra
>> > -rw-r--r--   1 rainerkrug  staff  6234112 Feb 10 11:16 proj.db
>> > -rw-r--r--   1 rainerkrug  staff    32060 Feb 10 11:16
>> projjson.schema.json
>> > -rw-r--r--   1 rainerkrug  staff     7079 Feb 10 11:16 world
>> >
>> >
>> > So it looks fine, but I, even locally, get the following error when
>> running the simple test:
>> >
>> > 08:40 $ grass78 --tmp-location EPSG:4326 --exec g.region res=0.1 -p
>> > Starting GRASS GIS...
>> > Creating new GRASS GIS location <tmploc>...
>> > ERROR: b'proj_get_authorities_from_database: Cannot find proj.db
>>
>> This error comes directly from PROJ.
>> Try
>> export PROJ_LIB="usr/local/opt/osgeo-proj/share/proj"
>>
>> before starting GRASS. This will tell PROJ where its own share data are.
>>
>>
>>
>>
>> Does not work:
>>
>> 17:03 $ export PROJ_LIB="/usr/local/opt/osgeo-proj/share/proj"
>> ✔ ~
>> 17:03 $ grass78 --tmp-location EPSG:4326 --exec g.region res=0.1 -p
>> Starting GRASS GIS...
>> Creating new GRASS GIS location <tmploc>...
>> ERROR: b'proj_get_authorities_from_database: Cannot find proj.db
>>
>> Exiting...
>> ✘-1 ~
>> 17:03 $ ls -la /usr/local/opt/osgeo-proj/share/proj
>> total 12408
>> drwxr-xr-x  15 rainerkrug  staff      480 Feb 10 11:16 .
>> drwxr-xr-x   4 rainerkrug  staff      128 Feb 10 11:16 ..
>> -rw-r--r--   1 rainerkrug  staff     1183 Feb 10 11:16 CH
>> -rw-r--r--   1 rainerkrug  staff      728 Feb 10 11:16 GL27
>> -rw-r--r--   1 rainerkrug  staff     2099 Feb 10 11:16 ITRF2000
>> -rw-r--r--   1 rainerkrug  staff     3660 Feb 10 11:16 ITRF2008
>> -rw-r--r--   1 rainerkrug  staff     3468 Feb 10 11:16 ITRF2014
>> -rw-r--r--   1 rainerkrug  staff     6385 Feb 10 11:16 nad.lst
>> -rw-r--r--   1 rainerkrug  staff    19535 Feb 10 11:16 nad27
>> -rw-r--r--   1 rainerkrug  staff    16593 Feb 10 11:16 nad83
>> -rw-r--r--   1 rainerkrug  staff      232 Feb 10 11:16 null
>> -rw-r--r--   1 rainerkrug  staff     3915 Feb 10 11:16 other.extra
>> -rw-r--r--   1 rainerkrug  staff  6234112 Feb 10 11:16 proj.db
>> -rw-r--r--   1 rainerkrug  staff    32060 Feb 10 11:16
>> projjson.schema.json
>> -rw-r--r--   1 rainerkrug  staff     7079 Feb 10 11:16 world
>>
>>
>> Any other suggestion?
>>
>>
>>
>>
>> Markus M
>>
>> >
>> >
>> >
>> > Here is the complete output from --config:
>> >
>> > 08:35 $ grass78 --config
>> > x86_64-apple-darwin17.7.0
>> > ./configure  --prefix=/usr/local/Cellar/osgeo-grass/7.8.2_3 --with-cxx
>> --enable-shared --enable-largefile --with-nls
>> --with-includes=/usr/local/include --with-libs=/usr/local/LIB
>> --with-python=/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/vendor/bin/python-config
>> --with-tcltk --with-netcdf=/usr/local/opt/osgeo-netcdf/bin/nc-config
>> --with-zstd --with-zstd-includes=/usr/local/opt/zstd/include
>> --with-zstd-libs=/usr/local/opt/zstd/lib --with-readline
>> --with-readline-includes=/usr/local/opt/readline/include
>> --with-readline-libs=/usr/local/opt/readline/lib --with-blas
>> --with-blas-includes=/usr/local/opt/openblas/include
>> --with-blas-libs=/usr/local/opt/openblas/lib --with-lapack
>> --with-lapack-includes=/usr/local/opt/lapack/include
>> --with-lapack-libs=/usr/local/opt/lapack/lib
>> --with-geos=/usr/local/opt/geos/bin/geos-config
>> --with-geos-includes=/usr/local/opt/geos/include
>> --with-geos-libs=/usr/local/opt/geos/lib --with-odbc
>> --with-odbc-includes=/usr/local/opt/unixodbc/include
>> --with-odbc-libs=/usr/local/opt/unixodbc/lib
>> --with-gdal=/usr/local/opt/osgeo-gdal/bin/gdal-config
>> --with-zlib-includes=/usr/local/opt/zlib/include
>> --with-zlib-libs=/usr/local/opt/zlib/lib --with-bzlib
>> --with-bzlib-includes=/usr/local/opt/bzip2/include
>> --with-bzlib-libs=/usr/local/opt/bzip2/lib --with-cairo
>> --with-cairo-includes=/usr/local/opt/cairo/include/cairo
>> --with-cairo-libs=/usr/local/opt/cairo/lib
>> --with-cairo-ldflags=-lfontconfig --with-freetype
>> --with-freetype-includes=/usr/local/opt/freetype/include/freetype2
>> --with-freetype-libs=/usr/local/opt/freetype/lib
>> --with-proj-includes=/usr/local/opt/osgeo-proj/include
>> --with-proj-libs=/usr/local/opt/osgeo-proj/lib
>> --with-proj-share=/usr/local/opt/osgeo-proj/share/proj --with-tiff
>> --with-tiff-includes=/usr/local/opt/libtiff/include
>> --with-tiff-libs=/usr/local/opt/libtiff/lib --with-png
>> --with-png-includes=/usr/local/opt/libpng/include
>> --with-png-libs=/usr/local/opt/libpng/lib --with-regex --with-fftw
>> --with-fftw-includes=/usr/local/opt/fftw/include
>> --with-fftw-libs=/usr/local/opt/fftw/lib --with-sqlite
>> --with-sqlite-includes=/usr/local/opt/sqlite/include
>> --with-sqlite-libs=/usr/local/opt/sqlite/lib
>> --with-liblas=/usr/local/opt/osgeo-liblas/bin/liblas-config --with-postgres
>> --with-postgres-includes=/usr/local/opt/osgeo-postgresql/include
>> --with-postgres-libs=/usr/local/opt/osgeo-postgresql/lib --with-mysql
>> --with-mysql-includes=/usr/local/opt/mysql/include/mysql
>> --with-mysql-libs=/usr/local/opt/mysql/lib --with-pthread
>> --with-pthread-includes=/usr/local/opt/boost/include/boost/thread
>> --with-pthread-libs=/usr/local/opt/boost/lib
>> --with-macosx-sdk=/Applications/Xcode-10.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk
>> --with-macosx-archs=x86_64
>> --with-opengl-includes=/Applications/Xcode-10.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/OpenGL.framework/Headers
>> --with-wxwidgets=/usr/local/opt/wxmac/bin/wx-config
>> > clang
>> > /usr/local/Cellar/osgeo-grass/7.8.2_3/grass78
>> > Traceback (most recent call last):
>> >   File "/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/bin/grass78",
>> line 2025, in main
>> >     index = sys.argv.index(batch_exec_param)
>> > ValueError: '--exec' is not in list
>> >
>> > During handling of the above exception, another exception occurred:
>> >
>> > Traceback (most recent call last):
>> >   File "/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/bin/grass78",
>> line 2216, in <module>
>> >     main()
>> >   File "/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/bin/grass78",
>> line 2030, in main
>> >     params = parse_cmdline(sys.argv[1:], default_gui=default_gui)
>> >   File "/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/bin/grass78",
>> line 1951, in parse_cmdline
>> >     print_params()
>> >   File "/usr/local/Cellar/osgeo-grass/7.8.2_3/libexec/bin/grass78",
>> line 1862, in print_params
>> >     "%s\n" % val[0].split(':')[1].rstrip('$"\n').strip())
>> > IndexError: list index out of range
>> >
>> >
>> > Any suggestions what the problem is?
>> >
>> > Rainer
>> >
>> >
>> >
>> > On 5 Mar 2020, at 21:38, Vaclav Petras <wenzeslaus at gmail.com> wrote:
>> >
>> >
>> >
>> > On Thu, Mar 5, 2020 at 1:52 PM Rainer M Krug <Rainer at krugs.de> wrote:
>> >>
>> >>
>> >>
>> >> On 5 Mar 2020, at 17:53, Vaclav Petras <wenzeslaus at gmail.com> wrote:
>> >>
>> >>
>> >>
>> >> On Thu, Mar 5, 2020 at 11:37 AM Rainer M Krug <Rainer at krugs.de> wrote:
>> >>>
>> >>> OK - one step closer to success. Now I just have to know the location
>> where the data for the tests can be downloaded from (I guess).
>> >>
>> >>
>> >> Everything is in the repo, well, it needs to be, I guess the only
>> question is where in the repo, so:
>> >>
>> >>
>> https://github.com/GRASS-GIS/grass-gis-experimental-ci/blob/homebrew-osgeo4mac/test_thorough.sh
>> >>
>> >>>
>> >>> Please check the log to at
>> https://github.com/GRASS-GIS/grass-gis-experimental-ci/runs/487969965?check_suite_focus=true
>>  for the Basic test and the Thorough test. I will look at the return
>> code later, when the tests are running.
>> >>
>> >>
>> >> The problem there is probably a bad/missing path to PROJ db. I think
>> it complains during the configuration already, so perhaps correct
>> --with-proj-share will fix it. The runtime way of setting it is PROJ_LIB
>> environmental variable. You can try something along these lines.
>> >>
>> >>
>> >> I am trying to find the file `proj.db` but can’t find it - can you
>> give me any indication, where it can be found in Linux (home-brew should
>> use similar locations)?
>> >
>> >
>> > Often it is in `/usr/share/proj`. Now you can find things like that in
>> the Docker/Singularity/Vagrant configurations included in GRASS GIS source
>> code or in the CIs, e.g., here:
>> >
>> >
>> https://github.com/GRASS-GIS/grass-gis-experimental-ci/blob/master/build.sh#L39
>> >
>> >
>> >>
>> >>
>> >>
>> >>
>> >>>
>> >>>
>> >>> Rainer
>> >>>
>> >>>
>> >>>
>> >>> On 5 Mar 2020, at 16:28, Rainer M Krug <Rainer at krugs.de> wrote:
>> >>>
>> >>>
>> >>>
>> >>> On 5 Mar 2020, at 16:22, Rainer M Krug <Rainer at krugs.de> wrote:
>> >>>
>> >>>
>> >>>
>> >>> On 5 Mar 2020, at 14:52, Vaclav Petras <wenzeslaus at gmail.com> wrote:
>> >>>
>> >>>
>> >>>
>> >>> On Thu, Mar 5, 2020 at 4:27 AM Rainer M Krug <Rainer at krugs.de> wrote:
>> >>>>
>> >>>> OK - found the ci.
>> >>>>
>> >>>> The formula installs, but I get a warning at the end, which results
>> in a warning, which is than interpreted as an error. The warning (which I
>> also get locally) is the following:
>> >>>>
>> >>>> If it is the case that you can change the shebang at the beginning of
>> >>>>
>> >>>> he script to enforce Python 3 usage.
>> >>>>
>> >>>>   #!/usr/bin/env python
>> >>>>
>> >>>> Should be changed into
>> >>>>
>> >>>>   #!/usr/bin/env python3
>> >>>>
>> >>>>
>> >>>> I suspect that this needs to be done in GRASS itself?
>> >>>
>> >>>
>> >>> Hi, thanks for looking into this. 7.8.2 (and also above) has python3
>> everywhere in shebang. See e.g.:
>> >>>
>> >>> $ grep -Irn "/usr/bin/env python[^3]"
>> >>> scripts/g.extension/g.extension.py:1059:
>>  "#!/usr/bin/env python\n",
>> >>> scripts/g.extension/g.extension.py:1308:
>>  "#!/usr/bin/env python\n",
>> >>> # (these two are in fact code which is doing the replacement to
>> python3)
>> >>>
>> >>> Can you please investigate locally where the message coming from?
>> >>>
>> >>>
>> >>> The message comes from the formula as a Caveat. I *think* it is
>> always displayed. But at the moment, I am not to sure where the error code
>> comes from, as I get an error code at the end of the brew command of 0
>> locally.
>> >>>
>> >>> I will look into this.
>> >>>
>> >>>
>> >>> Please ignore the following about the checkout.
>> >>>
>> >>> Found it.
>> >>>
>> >>>
>> >>> Do you know, why there is a
>> >>>
>> >>> - uses: actions/checkout at v2
>> >>>
>> >>> In the action?
>> >>>
>> >>> It seems, that it will be executed last, and there is no checkout
>> needed.
>> >>>
>> >>> Rainer
>> >>>
>> >>>
>> >>>
>> >>> Vaclav
>> >>>
>> >>>
>> >>> --
>> >>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>> >>>
>> >>> Orcid ID: 0000-0002-7490-0066
>> >>>
>> >>> Department of Evolutionary Biology and Environmental Studies
>> >>> University of Zürich
>> >>> Office Y34-J-74
>> >>> Winterthurerstrasse 190
>> >>> 8075 Zürich
>> >>> Switzerland
>> >>>
>> >>> Office: +41 (0)44 635 47 64
>> >>> Cell:        +41 (0)78 630 66 57
>> >>> email:      Rainer.Krug at uzh.ch
>> >>> Rainer at krugs.de
>> >>> Skype:     RMkrug
>> >>>
>> >>> PGP: 0x0F52F982
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>> >>>
>> >>> Orcid ID: 0000-0002-7490-0066
>> >>>
>> >>> Department of Evolutionary Biology and Environmental Studies
>> >>> University of Zürich
>> >>> Office Y34-J-74
>> >>> Winterthurerstrasse 190
>> >>> 8075 Zürich
>> >>> Switzerland
>> >>>
>> >>> Office: +41 (0)44 635 47 64
>> >>> Cell:        +41 (0)78 630 66 57
>> >>> email:      Rainer.Krug at uzh.ch
>> >>> Rainer at krugs.de
>> >>> Skype:     RMkrug
>> >>>
>> >>> PGP: 0x0F52F982
>> >>>
>> >>>
>> >>> --
>> >>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>> >>>
>> >>> Orcid ID: 0000-0002-7490-0066
>> >>>
>> >>> Department of Evolutionary Biology and Environmental Studies
>> >>> University of Zürich
>> >>> Office Y34-J-74
>> >>> Winterthurerstrasse 190
>> >>> 8075 Zürich
>> >>> Switzerland
>> >>>
>> >>> Office: +41 (0)44 635 47 64
>> >>> Cell:        +41 (0)78 630 66 57
>> >>> email:      Rainer.Krug at uzh.ch
>> >>> Rainer at krugs.de
>> >>> Skype:     RMkrug
>> >>>
>> >>> PGP: 0x0F52F982
>> >>>
>> >>>
>> >>>
>> >>
>> >> --
>> >> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>> >>
>> >> Orcid ID: 0000-0002-7490-0066
>> >>
>> >> Department of Evolutionary Biology and Environmental Studies
>> >> University of Zürich
>> >> Office Y34-J-74
>> >> Winterthurerstrasse 190
>> >> 8075 Zürich
>> >> Switzerland
>> >>
>> >> Office: +41 (0)44 635 47 64
>> >> Cell:        +41 (0)78 630 66 57
>> >> email:      Rainer.Krug at uzh.ch
>> >> Rainer at krugs.de
>> >> Skype:     RMkrug
>> >>
>> >> PGP: 0x0F52F982
>> >
>> >
>> > --
>> > Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation
>> Biology, UCT), Dipl. Phys. (Germany)
>> >
>> > Orcid ID: 0000-0002-7490-0066
>> >
>> > Department of Evolutionary Biology and Environmental Studies
>> > University of Zürich
>> > Office Y34-J-74
>> > Winterthurerstrasse 190
>> > 8075 Zürich
>> > Switzerland
>> >
>> > Office: +41 (0)44 635 47 64
>> > Cell:        +41 (0)78 630 66 57
>> > email:      Rainer.Krug at uzh.ch
>> > Rainer at krugs.de
>> > Skype:     RMkrug
>> >
>> > PGP: 0x0F52F982
>> >
>> >
>> >
>> > _______________________________________________
>> > grass-dev mailing list
>> > grass-dev at lists.osgeo.org
>> > https://lists.osgeo.org/mailman/listinfo/grass-dev
>>
>>
>> --
>> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc
>> (Conservation Biology, UCT), Dipl. Phys. (Germany)
>>
>> Orcid ID: 0000-0002-7490-0066
>>
>> Department of Evolutionary Biology and Environmental Studies
>> University of Zürich
>> Office Y34-J-74
>> Winterthurerstrasse 190
>> 8075 Zürich
>> Switzerland
>>
>> Office: +41 (0)44 635 47 64
>> Cell:        +41 (0)78 630 66 57
>> email:      Rainer.Krug at uzh.ch <Rainer.Krug at uzh.ch>
>> Rainer at krugs.de
>> Skype:     RMkrug
>>
>> PGP: 0x0F52F982
>>
>>
>>
>>
> --
> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc
> (Conservation Biology, UCT), Dipl. Phys. (Germany)
>
> Orcid ID: 0000-0002-7490-0066
>
> Department of Evolutionary Biology and Environmental Studies
> University of Zürich
> Office Y34-J-74
> Winterthurerstrasse 190
> 8075 Zürich
> Switzerland
>
> Office: +41 (0)44 635 47 64
> Cell:        +41 (0)78 630 66 57
> email:      Rainer.Krug at uzh.ch <Rainer.Krug at uzh.ch>
> Rainer at krugs.de
> Skype:     RMkrug
>
> PGP: 0x0F52F982
>
>
>
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-dev
>
>
> _______________________________________________
> grass-dev mailing list
> grass-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/grass-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-dev/attachments/20200914/e2f58ff2/attachment-0001.html>


More information about the grass-dev mailing list