Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mapnik fails to build in alpine undefined reference to mapnik::feature_style_processor #4285

Open
Ghoughpteighbteau opened this issue Jan 27, 2022 · 3 comments

Comments

@Ghoughpteighbteau
Copy link

Error is:

c++ -o demo/c++/rundemo demo/c++/rundemo.o -Ldeps/agg -Lsrc -Lsrc/json -Lsrc/wkt -Lfreetype -L/usr/lib -lmapnik -lagg -lboost_filesystem -lboost_regex -lcairo -lpng -lproj -lsqlite3 -ltiff -lwebp -licui18n -lboost_system -lharfbuzz -ljpeg -licuuc -lfreetype -lz -ldl -lsqlite3 -lpthread
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: demo/c++/rundemo.o: in function `main':
rundemo.cpp:(.text.startup+0x2781): undefined reference to `mapnik::feature_style_processor<mapnik::agg_renderer<mapnik::image<mapnik::rgba8_t>, mapnik::label_collision_detector4> >::apply(double)'
/usr/lib/gcc/x86_64-alpine-linux-musl/10.3.1/../../../../x86_64-alpine-linux-musl/bin/ld: rundemo.cpp:(.text.startup+0x2b9c): undefined reference to `mapnik::feature_style_processor<mapnik::cairo_renderer<std::shared_ptr<_cairo> > >::apply(double)'
collect2: error: ld returned 1 exit status
scons: *** [demo/c++/rundemo] Error 1

I'm building it inside a container to make sure the environment is pristine and reproduce-able, and this Dockerfile is as close a translation of https://github.com/mapnik/mapnik/blob/master/INSTALL.md as I can get.

FROM alpine:3.15

RUN apk update && apk upgrade
RUN apk add git

WORKDIR /source

RUN git clone "https://github.com/mapnik/mapnik"\
 && cd mapnik\
 && git submodule update --init
WORKDIR /source/mapnik

RUN apk add\
 make\
 python3\
 musl-dev\
 g++\
 boost\
 boost-dev\
 icu\
 icu-dev\
 zlib\
 zlib-dev\
 freetype\
 freetype-dev\
 libxml2\
 libxml2-dev\
 harfbuzz\
 harfbuzz-dev\
 libpng\
 libpng-dev\
 libjpeg\
 libjpeg-turbo-dev\
 tiff\
 tiff-dev\
 libwebp\
 libwebp-dev\
 proj\
 proj-dev\
 cairo\
 cairo-dev\
 libpq\
 libpq-dev\
 gdal\
 gdal-dev\
 sqlite\
 sqlite-dev

ENV PYTHON=python3
RUN ./configure
RUN make || true #preserve if fail
RUN make

This error looks similar to #4264

Is this something that should be added to install.md? I dunno I'm a little lost in all this.

@mathisloge
Copy link
Collaborator

I think this is an issue with some scons config. But I don't know anything about SCons.
#4249 #4243 seem to have the same issues

@Ghoughpteighbteau
Copy link
Author

is there a different set of build instructions I should follow?

@mathisloge
Copy link
Collaborator

mathisloge commented Jan 27, 2022

There is either SCons or CMake as a build system available. So you can choose between them.
General CMake instructions are here https://github.com/mapnik/mapnik/blob/master/docs/cmake-usage.md

See for an example Docker with CMake: #4267 or with scons https://github.com/jawg/docker-mapnik3 (Note that the latter one does not use the latest master).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants