Le Sat, Oct 30, 2021 at 10:27:46AM +0200, Landry Breuil a écrit :
> Le Sat, Oct 30, 2021 at 10:20:18AM +0200, Landry Breuil a écrit :
> > Le Sat, Oct 30, 2021 at 09:51:34AM +0200, Landry Breuil a écrit :
> > > Hi,
> > >
> > > i dunno if something should be fixed in the python build system (is it
> > > *necessary* to point at /usr/local/lib for libpython3.8.so ?), but i
> > > think there's something definitely wrong somewhere. That probably
> > > accounts for many failures i remember seeing building python updates
> > > when the previous version was installed systemwide, and taking precedence
> > > over the just-newly-built lib/extension.
> >
> > looking a bit more at our python port and reading
> > https://docs.python.org/3/using/configure.html#linker-flags, the
> > paths seem to come from MAKE_FLAGS += LDFLAGS='-L${WRKSRC}
> > -L${LOCALBASE}/lib/' in /usr/ports/lang/python/Makefile.inc. Dunno if
> > that's right or wrong for them to end up in LDSHARED, so i wonder if
> > PY_LDFLAGS or PY_CORE_LDFLAGS or LDSHARED should be overriden.
>
> Hah !! https://bugs.python.org/issue35257 and
> https://bugs.python.org/issue21121 looks definitely related ! so
> i think we should use PY_LDFLAGS_NODIST / CFLAGS_NODIST in the python
> port to build python itself, so that those paths dont 'leak' to
> extensions built later on..
So, more findings... in freebsd-land for python 3.2 in 2013, they added
a patch
(https://svnweb.freebsd.org/ports/head/lang/python38/files/patch-Makefile.pre.in?revision=516854&view=markup)
to 'Remove CONFIGURE_* variables from Makefile.pre.in' in
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=181721 /
http://svnweb.freebsd.org/changeset/ports/326729 to fix libintl
detection. that patch has been cargoculted since then in all python
versions.
in debian-land they seem to use a subst on _sysconfigdata here
https://salsa.debian.org/cpython-team/python3/-/blob/master/debian/rules#L231
i locally rebuilt python 3.8 with the following diff in
lang/python/Makefile.inc:
CONFIGURE_ENV += OPT='${CFLAGS} -fPIC' CPPFLAGS='-I${LOCALBASE}/include' \
- LDFLAGS='-L${LOCALBASE}/lib/' SVNVERSION=no \
+ LDFLAGS_NODIST='-L${LOCALBASE}/lib/' SVNVERSION=no \
LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
MAKE_ENV += LOCALBASE=${LOCALBASE} X11BASE=${X11BASE}
MAKE_FLAGS += LD_LIBRARY_PATH=${WRKSRC} PATH="${WRKDIST}:${PORTPATH}"
-MAKE_FLAGS += LDFLAGS='-L${WRKSRC} -L${LOCALBASE}/lib/'
+MAKE_FLAGS += LDFLAGS_NODIST='-L${WRKSRC} -L${LOCALBASE}/lib/'
FAKE_FLAGS += RANLIB=:
that gives me a python that compiles the gdal extension from master fine
(eg still -L/usr/obj/gdal -L/usr/local/lib -lgdal, but not the 'extra'
-L flags before).
sadly, libintl library detection at configure time fails with this..
checking for bind_textdomain_codeset... no
so not there yet.
Landry
No comments:
Post a Comment