mapbox / windows-builds

DEPRECATED! build scripts for mapnik dependencies, mapnik, node-mapnik, node, libosmiom, osmium-tool
38 stars 22 forks source link

Instructions for building a debug configuration #108

Open DiabloRusso opened 7 years ago

DiabloRusso commented 7 years ago

Hi! At the request of Wilhelm Berg in this issue I share my results on the build of mapnik debug configuration. I create 2 Pull Requests: windows-builds and mapnik-gyp Build v3.0.x(not master) Mapnik branch.

Instructions

  1. Clone my debug branch windows-builds.
  2. Start settings.bat with "FASTBUILD=0" "BUILD_TYPE=Debug" "MAPNIKBRANCH=v3.0.x".
  3. Start scripts\build.bat. Error: LINK : fatal error LNK1104: cannot open file '..\..\masmx64\gvmat64.obj' Replace packages\zlib\contrib\vstudio\vc11\zlibvc.vcxproj by this file. Repeat start scripts\build.bat. Again the same error((( Repeat start scripts\build.bat again! Build is going on!!! Build Mapnik fails.
  4. Manually changed packages\boost\spirit\home\support\attributes.hpp and replace line 1035 to using std::swap; (see here).
  5. Manually changed packages\boost\bin.v2\project-cache.jam and set has_icu builds to true (see here).
  6. Replace packages\mapnik-master\mapnik-gyp\build.bat by this file.
  7. Start scripts\build_boost.bat.
  8. Start scripts\build_mapnik.bat.

---------- DONE windows-builds MAPNIK -------------- Build complete!

My configuration: Notebook i3, 4GB RAM, ~16GB free space, Win7, VS2015.3 Thanx!

wilhelmberg commented 7 years ago

@DiabloRusso I merged your PRs (https://github.com/mapbox/windows-builds/pull/107 and https://github.com/mapnik/mapnik-gyp/pull/30) into Debug branches of the respective respositories (https://github.com/mapbox/windows-builds/tree/Debug, https://github.com/mapnik/mapnik-gyp/tree/Debug).

I also added patches for the boost std::swap issues so 4. shouldn't be neceassary anymore.

Trying to replicate:

Unfortunately I still get this error (LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs;) <- conflict Release/Debug.

Any ideas what I may have missed?


Full error:

         Debug\obj\mapnik\..\..\src\/unicode.obj
         Debug\obj\mapnik\..\..\src\/value.obj
         Debug\obj\mapnik\..\..\src\/vertex_adapters.obj
         Debug\obj\mapnik\..\..\src\/vertex_cache.obj
         Debug\obj\mapnik\..\..\src\/warp.obj
         Debug\obj\mapnik\..\..\src\/webp_reader.obj
         Debug\obj\mapnik\..\..\src\/well_known_srs.obj
         Debug\obj\mapnik\..\..\src\/wkb.obj
         Debug\obj\mapnik\..\..\src\/xml_tree.obj
            Creating library c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\Debug\mapnik.lib and object c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\Debug\mapnik.exp
         Linker: LibDef Total time = 0.14959s PB: 1578319872 [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\lib\mapnik.dll] 
     2>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj]
     2>expression_node.obj : error LNK2019: unresolved external symbol "public: class std::vector > __cdecl boost::re_detail_106200::icu_regex_traits_implementation::do_transform(int const *,int const *,class icu_56::Collator const *)const " (?do_transform@icu_regex_traits_implementation@re_detail_106200@boost@@QEBA?AV?$vector@HV?$allocator@H@std@@@std@@PEBH0PEBVCollator@icu_56@@@Z) referenced in function "public: class std::vector > __cdecl boost::re_detail_106200::icu_regex_traits_implementation::transform(int const *,int const *)const " (?transform@icu_regex_traits_implementation@re_detail_106200@boost@@QEBA?AV?$vector@HV?$allocator@H@std@@@std@@PEBH0@Z) [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj]
     2>expression_node.obj : error LNK2019: unresolved external symbol "public: bool __cdecl boost::icu_regex_traits::isctype(int,unsigned __int64)const " (?isctype@icu_regex_traits@boost@@QEBA_NH_K@Z) referenced in function "class boost::u16_to_u32_iterator __cdecl boost::re_detail_106200::re_is_set_member,int,class boost::icu_regex_traits,unsigned __int64>(class boost::u16_to_u32_iterator,class boost::u16_to_u32_iterator,struct boost::re_detail_106200::re_set_long const *,struct boost::re_detail_106200::regex_data const &,bool)" (??$re_is_set_member@V?$u16_to_u32_iterator@PEB_WH@boost@@HVicu_regex_traits@2@_K@re_detail_106200@boost@@YA?AV?$u16_to_u32_iterator@PEB_WH@1@V21@0PEBU?$re_set_long@_K@01@AEBU?$regex_data@HVicu_regex_traits@boost@@@01@_N@Z) [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj]
     2>expression_node.obj : error LNK2019: unresolved external symbol "private: class boost::basic_regex & __cdecl boost::basic_regex::do_assign(int const *,int const *,unsigned int)" (?do_assign@?$basic_regex@HVicu_regex_traits@boost@@@boost@@AEAAAEAV12@PEBH0I@Z) referenced in function "public: class boost::basic_regex & __cdecl boost::basic_regex::assign(int const *,int const *,unsigned int)" (?assign@?$basic_regex@HVicu_regex_traits@boost@@@boost@@QEAAAEAV12@PEBH0I@Z) [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj]
     2>lib\mapnik.dll : fatal error LNK1120: 3 unresolved externals [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj]
         Linker:   Wait PDB close Total time = 0.00486s PB: 1585659904 [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\lib\mapnik.dll] 
         Linker:   Wait type merge Total time = 0.17471s PB: 1584013312 [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\lib\mapnik.dll] 
         Linker: Final Total time = 14.40621s < 65469356643 - 65613418791 > PB: 214474752 [c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\lib\mapnik.dll] 
     2>Done Building Project "c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.vcxproj" (default targets) -- FAILED.
     1>Done Building Project "c:\mb\windows-builds-DEBUG\packages\mapnik-v3.0.x\mapnik-gyp\build\mapnik.sln" (mapnik;mapnik-json;mapnik-wkt;mapnik-render;shapeindex;mapnik-index;csv;gdal;geojson;ogr;pgraster;postgis;raster;shape;sqlite;topojson;test;test_visual_run;test_rendering;test_expression_parse;test_face_ptr_creation;test_font_registration;test_offset_converter;test_proj_transform1;test_quad_tree target(s)) -- FAILED.

Build FAILED.
wilhelmberg commented 7 years ago

Tried to build just mapnik a second time (scriptcs scripts\build.csx -- build=mapnik) and now get:

<EDIT this happens when test.exe is run EDIT>

image

image

DiabloRusso commented 7 years ago

Unfortunately I still get this error (LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs;) <- conflict Release/Debug.

@BergWerkGIS I also get this warning, but still I did not attach importance to it. I saw that gdal201.dll depends on MSVCP140.dll and VCRUNTIME140.dll. It is necessary to check the build type of gdal!

wilhelmberg commented 7 years ago

@DiabloRusso gdal is still Release as is libtiff: https://github.com/mapbox/mapnik-vector-tile/issues/231#issuecomment-278712938

DiabloRusso commented 7 years ago

@BergWerkGIS To build debug libtiff manually changed \packages\libtiff\nmake.opt and replace line 117 /MD to /MDd

wilhelmberg commented 7 years ago

@DiabloRusso that's great.

Would you be open to contribute those fixes to the Debug branches to get a fully automated process with no manual actions that just works by specifying either "BUILD_TYPE=Debug" or "BUILD_TYPE=Release" when calling settings.bat?

Thinking about

Like the other patches that live here: https://github.com/mapbox/windows-builds/tree/Debug/patches

DiabloRusso commented 7 years ago

@BergWerkGIS Ok, I'll try to do it! It will take some time... I am newbie in github))))

DiabloRusso commented 7 years ago

@BergWerkGIS I create PR But there was remain one problem, see my first post issue 5., how to fix has_icu = false? If not for that, automatic building was completed successfully(((((

wilhelmberg commented 7 years ago

Thanks @DiabloRusso - we'll find a way to make 5. (icu) work.

I've done several full clean builds now, but I'm still getting the errors posted above when running tests. Do you see those too?

DiabloRusso commented 7 years ago

@BergWerkGIS These errors are I've seen, I had not set the goal to correct the tests, but I'll see)))