On Thu, Jan 21, 2016 at 10:11:47AM +0300, anatoly techtonik wrote:
> On Wed, Jan 13, 2016 at 1:19 PM, Thomas Dickey <dic...@his.com> wrote:
> > On Mon, Jan 11, 2016 at 02:05:49PM +0300, anatoly techtonik wrote:
> >> Hi,
> >>
> >> In this build on Ubuntu x86_64 autoconf is unable to find X11
> >> libraries:
> >>     https://travis-ci.org/techtonik/PDCurses/builds/101477536
> >> However, it works with explicit configure option
> >>     --x-libraries=/usr/lib/x86_64-linux-gnu
> >>     https://travis-ci.org/techtonik/PDCurses/builds/101506738
> >>
> >> It looks like the problem is PDCurses specific
> >> http://askubuntu.com/questions/539574/how-to-install-xaw-package-with-header-files/578003
> >> probably because people rarely use Xaw. Anyway, how to fix
> >> it? Is it an autoconf bug?
> >
> > no - it is a bug in PDCurses' configure script, which assumes that the
> > libraries are in a directory "../lib" relative to the location of the
> > X headers.
> 
> Thank for clarification. The ./configure script is autogenerated  - at
> least this is said in headers
> "Generated by GNU Autoconf 2.61 for PDCurses 3.4."
> So, is it a bug in Autoconf?
> 
> > You might find this to be useful:
> >
> >         http://anonscm.debian.org/cgit/users/agmartin/pdcurses.git/
> 
> I see only two patches, one of which is said to be fixed upstream
> https://anonscm.debian.org/cgit/users/agmartin/pdcurses.git/tree/debian/patches
> I can't extract the solution for complication problem from them.

hmm.  I started a while back by tweaking the configure script, and noticed
Martin's tree, made a copy of _that_, and eliminated most of the unnecessary
stuff.  Since I'm not going to publish _that_ tree (I maintain ncurses), it
would be of limited use.

So (referring to PDCurses 3.4)
this line in the configure script is the problem:

        mh_lib_dirs="$x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | 
sed s/include/lib/g`"

The problem is that 64-bit machines nowadays generally use lib64 - not lib,
as the script assumes.  When I tweaked it by hand, I just edited that line.

        mh_lib_dirs="$x_libraries `echo "$ac_x_includes $ac_x_header_dirs" | 
sed s/include/lib64/g`"

But I prefer packages...

Refreshing my memory, I see that Martin may not have _fixed_ that.
But I did, using a script in the debian/rules file.  I'm attaching
that, for discussion.

> > Before noticing this, I would simply build PDCurses with a quick fix
> > for its configure script bug.  (Actually now I build it using Martin's
> > version plus some further fixes -- I use that for test-builds, e.g.,
> > of lynx, dialog).
> 
> Can you clarify how to fix this configure script? Looks like the file that
> should be fixed is
> https://anonscm.debian.org/cgit/users/agmartin/pdcurses.git/tree/configure.ac
> but I don't understand its semantics well enough to find the
> problem myself.
> 
> Thanks.

-- 
Thomas E. Dickey <dic...@invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

include /usr/share/quilt/quilt.make

# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)

# Use default buildflags for hardening
CFLAGS             := $(shell dpkg-buildflags --get CFLAGS) -Wall
CPPFLAGS           := $(shell dpkg-buildflags --get CPPFLAGS)
LDFLAGS            := $(shell dpkg-buildflags --get LDFLAGS)

# Make sure we do not link against unneeded libs.
LDFLAGS            += -Wl,--as-needed

export CFLAGS CPPFLAGS LDFLAGS

ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
        INSTALL_PROGRAM += -s
endif

# Shared library versions
include version.mif
version = $(VERDOT)
major   = $(word 1,$(subst ., ,$(VERDOT)))

# The installation dir for shared library package
my_pdcursesdir = $(CURDIR)/debian/pdcurses$(major)

DEBIAN_FULL_DESTDIR = $(CURDIR)/debian/tmp
PUBLIC_FULL_DESTDIR = $(CURDIR)/debian/pdcurses3
PUBLIC_FULL_LIBDIR  = $(CURDIR)/debian/pdcurses3/usr/lib

config.status: configure
        dh_testdir

ifneq "$(wildcard /usr/share/misc/config.sub)" ""
        cp -f /usr/share/misc/config.sub config.sub
endif
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
        cp -f /usr/share/misc/config.guess config.guess
endif
        ln -s curses.h xcurses.h

        # The configure script assumes that all X libraries are in the "lib"
        # directory matching the "include" directory.  Change that to be the
        # set of directories that ldconfig knows about.
        ldconfig -p |fgrep '=>' |sed -e 's%^.* => %%' -e 's%/[^/]*$$%%' |sort 
-u |tr '\n' ' ' >all_dirs
        cat all_dirs
        echo 's,^mh_lib_dirs=.*,mh_lib_dirs="'`cat all_dirs`'",' >fixup.sed
        cat fixup.sed
        sed -i -f fixup.sed configure

        # Add here commands to configure the package.
        ./configure CFLAGS="$(CFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" \
                --host=$(DEB_HOST_GNU_TYPE) \
                --build=$(DEB_BUILD_GNU_TYPE) \
                --prefix=/usr \
                --libdir=\$${prefix}/lib \
                --mandir=\$${prefix}/share/man \
                --infodir=\$${prefix}/share/info \
                -x-libraries=/usr/lib \
                --enable-xim


build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp:  config.status
        dh_testdir

        # Add here commands to compile the package.
        $(MAKE) RXPACKEXPORTS="-Wl,-soname,libXCurses.so.$(major) ${LDFLAGS}"

        touch build-stamp

clean: 
        dh_testdir
        dh_testroot
        rm -f build-stamp
        -[ -L "xcurses.h" ] && rm xcurses.h

        # Add here commands to clean up after the build process.
        [ ! -f Makefile ] || $(MAKE) distclean

        dh_clean

install: build
        dh_testdir
        dh_testroot
        dh_prep
        dh_installdirs

        # Add here commands to install the package into debian/tmp
        # Need to set {bin,lib}dir to work around buggy Makefile.in 
unconditionally setting it
        $(MAKE) install DESTDIR=$(DEBIAN_FULL_DESTDIR) \
                libdir=$(PUBLIC_FULL_LIBDIR) \
                bindir=$(PUBLIC_FULL_LIBDIR)/pdcurses
        mkdir -p $(my_pdcursesdir)/etc/X11/Xresources/XCurses
        mkdir -p $(my_pdcursesdir)/usr/share/pixmaps
        install -m 644 debian/XCurses.xresources \
                $(my_pdcursesdir)/etc/X11/Xresources/XCurses
        install -m 644 x11/little_icon.xbm \
                $(my_pdcursesdir)/usr/share/pixmaps/xcurses32.xbm
        install -m 644 x11/big_icon.xbm \
                $(my_pdcursesdir)/usr/share/pixmaps/xcurses64.xbm
        ( cd $(PUBLIC_FULL_LIBDIR) && \
                mv libXCurses.so libXCurses.so.$(version) && \
                ln -s libXCurses.so.$(version) libXCurses.so.$(major) && \
                ln -s libXCurses.so.$(major) libXCurses.so && \
                ln -sf libXCurses.so libXpanel.so && \
                ln -sf libXCurses.a libXpanel.a && \
                ln -sf libXpanel.a libxpanel.a )

        # Install Debian xcurses-config wrapper
        mkdir -p $(PUBLIC_FULL_DESTDIR)/usr/bin
        install debian/xcurses-config.wrapper 
$(PUBLIC_FULL_DESTDIR)/usr/bin/xcurses-config


# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.

# Build architecture-dependent files here.
binary-arch: build install
        dh_testdir
        dh_testroot
        dh_installchangelogs
        dh_installdocs -A doc/x11.txt README
        dh_installexamples
#       dh_installinfo
        dh_movefiles
        dh_installman
        dh_link
        # dh_strip
        dh_strip -ppdcurses3 --dbg-package=pdcurses3-dbg
        dh_compress
        dh_fixperms
        dh_makeshlibs
        dh_installdeb
        dh_shlibdeps
        dh_gencontrol
        dh_md5sums
        dh_builddeb

binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Autoconf mailing list
Autoconf@gnu.org
https://lists.gnu.org/mailman/listinfo/autoconf

Reply via email to