Re: [bunk@fs.tum.de: Bug#210307: ncurses doesn't build on s390]
On Wednesday 10 September 2003 22:32, Daniel Jacobowitz wrote:
> Hi folks,
>
> Ncurses now tries to build a 64-bit library. But it looks like the
> S/390 build daemon can't _run_ 64-bit binaries? Do I need to make it
> do this as a cross-compile instead?
Yes, that's also what I did in my original approach when doing the
same for amd64. For reference, here is my old patch, which happens
to be very similar to your changes.
Doing a cross-compile will also be necessary when the 64-bit
support is enabled on i386, because the build servers will
remain 32 bit for a long time.
Arnd <><
diff -urN ncurses-5.3.20021109/debian/control ncurses-5.3.20021109-64/debian/control
--- ncurses-5.3.20021109/debian/control 2003-01-22 00:52:33.000000000 +0100
+++ ncurses-5.3.20021109-64/debian/control 2003-01-21 23:00:42.000000000 +0100
@@ -64,6 +64,14 @@
.
This package includes support for wide characters.
+Package: libncurses5-64
+Architecture: any
+Section: devel
+Priority: extra
+Depends: libncurses5 (= ${Source-Version})
+Description: 64 bit libraries for ncurses
+ This package contains the 64 bit libraries for ncurses.
+
Package: ncurses-bin
Architecture: any
Section: base
diff -urN ncurses-5.3.20021109/debian/libncurses5-64.dirs ncurses-5.3.20021109-64/debian/libncurses5-64.dirs
--- ncurses-5.3.20021109/debian/libncurses5-64.dirs 1970-01-01 01:00:00.000000000 +0100
+++ ncurses-5.3.20021109-64/debian/libncurses5-64.dirs 2003-01-21 23:00:42.000000000 +0100
@@ -0,0 +1 @@
+lib64
diff -urN ncurses-5.3.20021109/debian/libncurses5-64.files ncurses-5.3.20021109-64/debian/libncurses5-64.files
--- ncurses-5.3.20021109/debian/libncurses5-64.files 1970-01-01 01:00:00.000000000 +0100
+++ ncurses-5.3.20021109-64/debian/libncurses5-64.files 2003-01-21 23:00:42.000000000 +0100
@@ -0,0 +1,4 @@
+lib64/libncurses.so.*
+usr/lib64/libpanel.so.*
+usr/lib64/libform.so.*
+usr/lib64/libmenu.so.*
diff -urN ncurses-5.3.20021109/debian/libncurses5-dev.files ncurses-5.3.20021109-64/debian/libncurses5-dev.files
--- ncurses-5.3.20021109/debian/libncurses5-dev.files 2003-01-22 00:52:33.000000000 +0100
+++ ncurses-5.3.20021109-64/debian/libncurses5-dev.files 2003-01-21 23:00:42.000000000 +0100
@@ -8,4 +8,13 @@
usr/lib/libform.a
usr/lib/libmenu.a
usr/lib/libpanel.a
+usr/lib64/libncurses.so
+usr/lib64/libform.so
+usr/lib64/libmenu.so
+usr/lib64/libpanel.so
+usr/lib64/libncurses.a
+usr/lib64/libncurses++.a
+usr/lib64/libform.a
+usr/lib64/libmenu.a
+usr/lib64/libpanel.a
usr/share/man/man3
diff -urN ncurses-5.3.20021109/debian/rules ncurses-5.3.20021109-64/debian/rules
--- ncurses-5.3.20021109/debian/rules 2003-01-22 00:52:33.000000000 +0100
+++ ncurses-5.3.20021109-64/debian/rules 2003-01-22 00:53:48.000000000 +0100
@@ -22,8 +22,14 @@
package-devw=libncursesw$(soname)-dev
package-dbg=libncurses$(soname)-dbg
package-dbgw=libncursesw$(soname)-dbg
+package-64=libncurses$(soname)-64
package-term=ncurses-term
+build64-i386 = yes
+build64-sparc = yes
+build64-s390 = yes
+build64 = $(build64-$(shell dpkg-architecture -qDEB_HOST_ARCH))
+
workdir=$(shell pwd)
tempdir=debian/tmp
fulltempdir=$(workdir)/$(tempdir)
@@ -33,6 +39,7 @@
wobjdir=$(srcdir)/obj-wide
objdir-debug=$(srcdir)/obj-debug
wobjdir-debug=$(srcdir)/obj-wide-debug
+objdir-64=$(srcdir)/obj-64
CFLAGS = -O2 -g
CONFARGS = --prefix=/usr \
@@ -82,7 +89,23 @@
--with-install-prefix=$(fulltempdir) \
--disable-overwrite --enable-widec
-build: build-normal build-wide build-debug build-wide-debug
+$(objdir-64)/config.status: configure build-normal
+ test -d $(objdir-64) || mkdir $(objdir-64)
+ cd $(objdir-64) && CFLAGS="$(CFLAGS) -m64" LDFLAGS="$(LDFLAGS) -m64" \
+ CXXFLAGS="$(CFLAGS) -m64" $(srcdir)/configure \
+ $(CONFARGS) \
+ --with-install-prefix=$(fulltempdir) \
+ --with-build-libs="-L/usr/lib" \
+ --with-build-cflags="$(CFLAGS)" \
+ --with-build-ldflags="$(LDFLAGS)" \
+ --libdir='$${exec_prefix}/lib64' \
+ --host=`dpkg-architecture -qDEB_HOST_GNU_TYPE | \
+ sed -e 's/i386/x86_64/g' -e 's/s390/s390x/g' \
+ -e 's/sparc/sparc64/g'` \
+ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \
+ --enable-overwrite
+
+build: build-normal build-wide build-debug build-wide-debug build-64
build-normal: $(objdir)/config.status
# For ia64...
@@ -116,6 +139,16 @@
cd $(wobjdir-debug) && $(MAKE)
touch $@
+build-64: $(objdir-64)/config.status
+ifeq ($(build64), yes)
+ # For ia64...
+ cd $(objdir-64)/c++ \
+ && cat Makefile | sed 's, -c ../c++/demo.cc, -O0 -c ../c++/demo.cc,' > Makefile.tem \
+ && mv -f Makefile.tem Makefile
+ cd $(objdir-64) && $(MAKE)
+ touch $@
+endif
+
clean:
dh_testdir
dh_testroot
@@ -124,6 +157,7 @@
rm -rf $(wobjdir)
rm -rf $(objdir-debug)
rm -rf $(wobjdir-debug)
+ rm -rf $(objdir-64)
rm -f debian/shlibs.local
dh_clean
@@ -146,6 +180,7 @@
# Install non -DTRACE versions.
$(MAKE) -C $(objdir) install.libs
$(MAKE) -C $(wobjdir) install.libs
+ $(MAKE) -C $(objdir-64) install.libs
# Compile this before moving files into their packages.
LD_LIBRARY_PATH=$${LD_LIBRARY_PATH}:$(fulltempdir)/usr/lib:$(fulltempdir)/lib \
@@ -156,7 +191,11 @@
test -d $(tempdir)/lib || mkdir $(tempdir)/lib
mv $(tempdir)/usr/lib/libncurses.so.$(vername) $(tempdir)/lib/
mv $(tempdir)/usr/lib/libncurses.so.$(soname) $(tempdir)/lib/
-
+ifeq ($(build64), yes)
+ test -d $(tempdir)/lib64 || mkdir $(tempdir)/lib64
+ mv $(tempdir)/usr/lib64/libncurses.so.$(vername) $(tempdir)/lib64/
+ mv $(tempdir)/usr/lib64/libncurses.so.$(soname) $(tempdir)/lib64/
+endif
dh_movefiles
# We keep the libncurses shared library in /lib.
@@ -167,6 +206,12 @@
ln -sf libncurses.so debian/$(package-dev)/usr/lib/libtermcap.so
ln -sf libncurses.a debian/$(package-dev)/usr/lib/libtermcap.a
ln -sf libncurses.a debian/$(package-dev)/usr/lib/libcurses.a
+ifeq ($(build64), yes)
+ ln -sf libncurses.so debian/$(package-dev)/usr/lib64/libcurses.so
+ ln -sf libncurses.so debian/$(package-dev)/usr/lib64/libtermcap.so
+ ln -sf libncurses.a debian/$(package-dev)/usr/lib64/libtermcap.a
+ ln -sf libncurses.a debian/$(package-dev)/usr/lib64/libcurses.a
+endif
# Generate new terminfo entries for ncurses-base, move to /etc
mv debian/$(package-base)/usr/share/terminfo debian/$(package-base)/etc
@@ -212,6 +257,9 @@
mkdir -p debian/$(package-bin)/usr/share/doc
mkdir -p debian/$(package-dbg)/usr/share/doc
mkdir -p debian/$(package-dbgw)/usr/share/doc
+ifeq ($(build64), yes)
+ mkdir -p debian/$(package-64)/usr/share/doc
+endif
ln -s $(package-lib) \
debian/$(package-bin)/usr/share/doc/$(package-bin)
ln -s $(package-dev) \
Reply to: