Closed smellman closed 4 years ago
my2c: for testing latest trunk/master - maybe we can adopt some ideas from
see:
@ImreSamu There seems to be a few concepts encapsulated within the Dockerfile and build script you referenced. Could you explicitly point out some of the notions that you think would be helpful to provide some guidance and discussion points?
@smellman ; @phillipross :
just an idea for discussing:
Now in the Postgis 3.0.0
release note - there is a sentence :
but as I see our postgis/postgis:12-3.0
image has the earlier versions:
GEOS="3.7.1-CAPI-1.11.1 27a5e771" PROJ="Rel. 5.2.0, September 15th, 2018"
And using/testing the latest postgis:master with the old geos(3.7.1)/proj(5.2) is not usefull for everybody.
So when we build the latest postgis:master ; we have to choose which version will be push to the docker hub: A.) postgis:master + latest geos(3.8)/proj(7.0) release B.) postgis:master + geos:master + proj:master C.) postgis:master + old geos(3.7.1)/proj(5.2) release
in the ideal case ; the build script will be flexible.
So if we choose and push the "A." version ; I can build the "B." or the "C." version with a simple make
command.
so my theoretical question:
I just try A option now.
@smellman: OK.
And later we can extend the docker script .. with the ARG parameter.
@ImreSamu I just note: I use GDAL with master branch. I can't find trunk branch.
I finished my work:
@smellman: Thanks :+1:
In addition to testing that @ImreSamu might be doing, it seems travis is not happy with the length of time necessary to do a full build of the image. Is there anything that can be done to reduce the build time?
I don't know travis spec but if it has more than 2 core CPU, using make -j2 or -j(cpu core size) is better. Also, I think use debian package for GDAL and SFCGAL if it possible. But GDAL requires old GEOS and Proj4, the mean the docker image install two versions(GEOS 3.7 and 3.8>, Proj4 5.x and 7.x>).
Oh, I merged make test
but this will fail in this branch.
I will fix it.
@smellman :
try make -j$(nproc --ignore=1)
everywhere ..
- && make \
+ && make -j$(nproc --ignore=1) \
Travis docs say there are two cores, but it'd probably be better to use nproc as @ImreSamu illustrated above to dynamically set the parallel make job number. I'm just not sure how safe it is to build that way.
@ImreSamu @phillipross Thank you comments. I just try to build in macOS(Docker 10core) and Ubuntu 19.10(4core) now.
@smellman : as I see ; my suggestion is not working on travis :( 2 cores; no SMT on the travis ;
+ nproc --ignore=1
+ make -j1
@ImreSamu Yes I just find same now in my 4 core laptop.
$ nproc
4
$ nproc --ignore=1
3
I will remove --ignore
option.
Also, I try make check
before make install but it fails to up postgres...(Is this comment removed? I check it from notify mail)
@smellman :
I try make check before make install but it fails to up postgres
I have also tested, and realized .. that need more work ( so I have removed my comment ) in theory it is a good idea, but in practice ...
@ImreSamu I think alpine version will need make check
too when we resolve make check
issue.
This PR is shaping up nicely, good work 👍
Is there still more to be done? more testing? or is this ready to be merged?
@phillipross I don't have more task. But I think add nproc in alpine after this PR merged.
@smellman: thanks, it is a good work! :+1:
You can use make -j without numbers to run "as much as possible". That works reasonably well except for the cases when build machine is tiny and things get out of memory, for that memory hog softwares you want to pin something like -j4 anyway.