mapnik / Cascadenik

Cascading Sheets Of Style for Mapnik
http://github.com/mapnik/Cascadenik/wiki/Cascadenik
BSD 3-Clause "New" or "Revised" License
111 stars 20 forks source link

os.rename() fails in cascadenik-compile.py #17

Closed tstucki closed 12 years ago

tstucki commented 13 years ago

os.rename() apparently won't work if the files are on different filesystems. In my case /tmp is on a different filesystem than /home. Switching to shutli.move() (http://docs.python.org/library/shutil.html#shutil.move) fixed it for me.

This is the error I get:

owner@owner-desktop:~/Documents/mapnik/mapnik$ cascadenik-compile.py funcls_roads_l.mml out.xml output file: out.xml /home/owner/Documents/mapnik/mapnik ('/tmp/cascadenik-mapnik-HVy47I.xml', 'out.xml') owner@owner-desktop:~/Documents/mapnik/mapnik$ cascadenik-compile.py funcls_roads_l.mml out.xml Traceback (most recent call last): File "/usr/local/bin/cascadenik-compile.py", line 5, in pkg_resources.run_script('cascadenik==1.0.2', 'cascadenik-compile.py') File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 467, in run_script self.require(requires)[0].run_script(script_name, ns) File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 1200, in run_script execfile(script_filename, namespace, namespace) File "/usr/local/lib/python2.6/dist-packages/cascadenik-1.0.2-py2.6.egg/EGG-INFO/scripts/cascadenik-compile.py", line 48 os.unlink(dest_file)z ^ SyntaxError: invalid syntax owner@owner-desktop:~/Documents/mapnik/mapnik$ cascadenik-compile.py funcls_roads_l.mml out.xml output file: out.xml /home/owner/Documents/mapnik/mapnik Traceback (most recent call last): File "/usr/local/bin/cascadenik-compile.py", line 5, in pkg_resources.run_script('cascadenik==1.0.2', 'cascadenik-compile.py') File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 467, in run_script self.require(requires)[0].run_script(script_name, ns) File "/usr/lib/python2.6/dist-packages/pkg_resources.py", line 1200, in run_script execfile(script_filename, namespace, namespace) File "/usr/local/lib/python2.6/dist-packages/cascadenik-1.0.2-py2.6.egg/EGG-INFO/scripts/cascadenik-compile.py", line 92, in sys.exit(main(layersfile, outputfile, options.dict**)) File "/usr/local/lib/python2.6/dist-packages/cascadenik-1.0.2-py2.6.egg/EGG-INFO/scripts/cascadenik-compile.py", line 49, in main os.rename(tmp_file, dest_file) OSError: [Errno 18] Invalid cross-device link

mattmakesmaps commented 13 years ago

I am receiving a similar error: log file

My terrible hack solution was to comment out line '49' of cascadenik-compile.py and replace with the a manual call to 'mv':

    #os.rename(tmp_file, dest_file)
    os.system('mv ' + tmp_file + ' ' + dest_file)
mattmakesmaps commented 13 years ago

Forgot to mention that i am on the mapnik2 branch.

Thanks, Matt

migurski commented 12 years ago

Looks like this was replaced with shutil.move(), which can cross filesystem bounds, some time ago.