scons: `install' is up to date. #1523

Closed
strk opened this Issue Oct 8, 2012 · 14 comments

Comments

Projects
None yet
2 participants
Contributor

strk commented Oct 8, 2012

I've never seen an "install" rule that has dependencies. Anyway "up to date" seems to be what's blocking me from installing mapnik after uninstall.

Owner

springmeyer commented Oct 8, 2012

I don't understand what you are complaining about. You'll need to provide more detail if you are expecting help. If you are just thinking out loud, that's cool, but please say that.

Contributor

strk commented Oct 8, 2012

I'm trying to swap between 2.0.0 and 2.1.0 by continuously installing one over the other, and if scons assumed the presence of a mapnik-config meant there's nothing to install it would be wrong (if it checks the content I'll shut up).

As soon as the rebuild of 2.1.0 completes (it looks like changing install prefix requires full rebuild) I will test this issue better and close if invalid.

Contributor

strk commented Oct 9, 2012

I confirm "make install" doesn't install more than once, even if the files on the system have been changed meanwhile.
I think "install" rule should be phony instead, to avoid this situation (make install not doing what it promises)

Owner

springmeyer commented Oct 9, 2012

It is phony, no? Also can you see what happens if you type:

python scons/scons.py install

On Oct 9, 2012, at 1:04 AM, strk notifications@github.com wrote:

I confirm "make install" doesn't install more than once, even if the files on the system have been changed meanwhile.
I think "install" rule should be phony instead, to avoid this situation (make install not doing what it promises)


Reply to this email directly or view it on GitHub.

Contributor

strk commented Oct 9, 2012

On Tue, Oct 09, 2012 at 07:11:26AM -0700, Dane Springmeyer wrote:

It is phony, no? Also can you see what happens if you type:

python scons/scons.py install

Yeah, it's scons having the problem, not the Makefile:

scons: `install' is up to date.

Owner

springmeyer commented Oct 9, 2012

yeah, looks like either a scons bug (or a misusage of scons in our scripts - more likely).

You should be able to work around by doing make uninstall in the checkout of the version you want to disable.

Owner

springmeyer commented Dec 3, 2012

I've never seen this. Re-open if you have a clear way to replicate.

@springmeyer springmeyer closed this Dec 3, 2012

Contributor

strk commented Dec 3, 2012

Clear way to repllicate:
sudo make install && sudo make install

The second install (if not also the first, depending if you installed it already) will go:

scons: Building targets ...
scons: `install' is up to date.
scons: done building targets.

I don't have permissions to reopen this ticket.

Contributor

strk commented Dec 3, 2012

I shall add that running make uninstall makes next make install do something.
Interesting enough, even when the make uninstall call is performed from a different mapnik version build tree.

@springmeyer springmeyer reopened this Oct 7, 2013

Contributor

strk commented Oct 7, 2013

I guess what you could try today is:

  • Install mapnik from 2.1 branch
  • Build node-mapnik
  • Install mapnik from 2.2 branch
  • Re-build node-mapnik

That's how it hit me again this time

Owner

springmeyer commented Oct 7, 2013

Please paste the exact commands to replicate. For instance did you do 'npm install mapnik' or did you do configure/make?

Contributor

strk commented Oct 8, 2013

Let's forget about node-mapnik for a second. Here's a mapnik only session:

[mapnik-2.1(2.1.x)] md5sum /usr/local/include/mapnik/map.hpp 
md5sum: /usr/local/include/mapnik/map.hpp: No such file or directory
[mapnik-2.1(2.1.x)] sudo make install > /dev/null
[mapnik-2.1(2.1.x)] md5sum /usr/local/include/mapnik/map.hpp 
a6f9a141f76f5468a28b667a4ee4e495  /usr/local/include/mapnik/map.hpp
[mapnik-2.1(2.1.x)] pushd
/usr/src/mapnik/mapnik-2.2 /usr/src/mapnik/mapnik-2.1
[mapnik-2.2(2.2.x)] sudo make install > /dev/null
[mapnik-2.2(2.2.x)] md5sum /usr/local/include/mapnik/map.hpp 
a6f9a141f76f5468a28b667a4ee4e495  /usr/local/include/mapnik/map.hpp

As you can see the /usr/local/include/mapnik/map.hpp file was not overridden by make install.
Manually removing the target file results in the new header being installed:

[mapnik-2.2(2.2.x)] sudo rm /usr/local/include/mapnik/map.hpp
[mapnik-2.2(2.2.x)] sudo make install > /dev/null
[mapnik-2.2(2.2.x)] md5sum /usr/local/include/mapnik/map.hpp 
a3d31740c0aa4c55f2ba97e5115f6d1c  /usr/local/include/mapnik/map.hpp

So if the target exists, "make install" will not override it. In other words you can't upgrade mapnik by simply installing a newer version.

Contributor

strk commented Jul 9, 2014

I've just got hit again by this. The output clearly shows that a binary has been re-constructed (a plugin) but still "install" rule does not install the new one:

[strk@cdb:/usr/src/mapnik/mapnik-2.3(2.3.x-pgraster)] make && sudo make install
python scons/scons.py -j2 --config=cache --implicit-cache --max-drift=1
scons: Reading SConscript files ...
Using previous successful configuration...
Re-configure by running "python scons/scons.py configure".

Welcome to Mapnik...

scons: done reading SConscript files.
scons: Building targets ...
g++ -o plugins/input/pgraster/pgraster_wkb_reader.os -c -Wall -Wsign-compare -pthread -ftemplate-depth-300 -O3 -fno-strict-aliasing -finline-functions -Wno-inline -Wno-parentheses -Wno-char-subscripts -Iplugins/input/postgis -fPIC -DSHAPE_MEMORY_MAPPED_FILE -DBIGINT -DBOOST_REGEX_HAS_ICU -DHAVE_JPEG -DMAPNIK_USE_PROJ4 -DHAVE_PNG -DHAVE_TIFF -DLINUX -DMAPNIK_THREADSAFE -DNDEBUG -DMAPNIK_LOG -DMAPNIK_DEFAULT_LOG_SEVERITY=0 -Ideps -Ideps/clipper/include -Ideps/agg/include -I. -Iinclude -I/home/postgresql-9.3.4/include -I/usr/local/include -I/usr/include -I/usr/include/freetype2 -I/usr/include/libxml2 plugins/input/pgraster/pgraster_wkb_reader.cpp
scons: done building targets.
python scons/scons.py -j2 --config=cache --implicit-cache --max-drift=1 install
scons: Reading SConscript files ...
Using previous successful configuration...
Re-configure by running "python scons/scons.py configure".

Welcome to Mapnik...

scons: done reading SConscript files.
scons: Building targets ...
scons: `install' is up to date.
scons: done building targets.
Owner

springmeyer commented Aug 19, 2014

Re-reading this - i think this is likely expected behavior / the way scons works. I think the right way to run multiple mapnik versions is to install them into separate prefixes. If you don't want to do this then just run make uninstall && make install.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment