Bug#693730: dpkg-cross: Add arm64 support
Package: dpkg-cross
Version: 2.6.7
Severity: normal
Tags: patch
User: debian-arm@lists.debian.org
This patch adds arm64 support to dpkg-cross. It also adds some new
packages and moves a few core variables to be global as they appear in
a lof of entries.
I realise this is a bit of a mish-mash, but it represents the current
state of the package as I have been updating it working through the
arm64 port. And it's better to be filed in a bugrep than sat on my disk.
Not all of this is thoroughly tested but it's cetainly better than
without. I believe the whole package is in need of some updating in
the various architectures for consistency, and globalising some more
'core things'. But of course this is very hard to do unless one has
an easy way of testing the results on many architectures.
If you accept the idea that _some_ variables could be declared
globally then I suggest we cautiously do that for things we are pretty
sure are the same everywhere and will not break other package builds.
It can always be reverted if problems are found later.
More automated cross-build infrastructure will help weed out such
issues.
-- System Information:
Debian Release: 6.0.6
APT prefers stable
APT policy: (990, 'stable')
Architecture: i386 (i686)
Kernel: Linux 2.6.32.33-kvm-i386-20111128-dirty (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
diff -Nru dpkg-cross-2.6.7/config/cross-config.arm64 dpkg-cross-2.6.7arm64/config/cross-config.arm64
--- dpkg-cross-2.6.7/config/cross-config.arm64 1970-01-01 01:00:00.000000000 +0100
+++ dpkg-cross-2.6.7arm64/config/cross-config.arm64 2012-10-24 22:41:43.000000000 +0100
@@ -0,0 +1,87 @@
+# read in package-specific and global values.
+. `dirname $ac_site_file`/cross-config.cache
+# now ensure the real architecture-dependent values take priority
+ac_cv_c_bigendian=no
+ac_cv_c_char_unsigned=yes
+ac_cv_sizeof_long_long=8
+ac_cv_sizeof_unsigned_long_long=8
+ac_cv_sizeof_long=8
+ac_cv_sizeof_unsigned_long=8
+ac_cv_sizeof_int=4
+ac_cv_sizeof_unsigned_int=4
+ac_cv_sizeof_short=2
+ac_cv_sizeof_unsigned_short=2
+ac_cv_sizeof_char=1
+ac_cv_sizeof_unsigned_char=1
+ac_cv_sizeof_signed_char=1
+ac_cv_sizeof_float=4
+ac_cv_sizeof_double=8
+ac_cv_sizeof_long_double=8
+ac_cv_sizeof_void_p=8
+ac_cv_sizeof_char_p=8
+ac_cv_sizeof_off_t=8
+ac_cv_sizeof_time_t=8
+
+
+#lots of things: turn off stack protector
+libc_cv_fno_stack_protector=no
+
+# Supplemental groups are disabled by default when crossing coreutils.
+# Should this go in generic file?
+ac_cv_func_getgroups_works=yes
+
+#Syscall resumable test passes (ie wait syscall is resumable)
+ac_cv_sys_restartable_syscalls=yes
+
+#Void ptr longer than long
+ap_cv_void_ptr_lt_long=no
+
+#apr
+#Verified with native test program
+apr_cv_process_shared_works=yes
+#Verifed with native test program
+apr_cv_mutex_robust_shared=yes
+#probably more general than just APR. verifed by cross compiling and running test from configure
+ac_cv_sizeof_struct_iovec=16
+
+# mysql
+# mysql wants to know stack direction:
+# STACK_DIRECTION > 0 => grows toward higher addresses
+# STACK_DIRECTION < 0 => grows toward lower addresses
+# STACK_DIRECTION = 0 => direction of growth unknown
+ac_cv_c_stack_direction=-1
+
+
+path=`dirname $ac_site_file`
+# now allow package-specific architecture-independent values to be set
+if [ -d $path/cross-config.d/arm64/ ]; then
+for file in `ls $path/cross-config.d/arm64/`; do
+ if [ "$file" = "$PACKAGE" -o "$file" = "$PACKAGE_NAME" ]; then
+ [ -d $path/cross-config.d/arm64/$file ] || . $path/cross-config.d/arm64/$file
+ HAVE_PKG_CACHE=1
+ fi
+done
+fi
+
+if [ -z "$HAVE_PKG_CACHE" ]; then
+ # orbit2 - only needed until liborbit-dev provides these directly
+ # using the mechanism above.
+ if [ "$PACKAGE" = "orbit2" -o "$PACKAGE_NAME" = "ORBit2" ]; then
+ ac_cv_alignof_CORBA_octet=1
+ ac_cv_alignof_CORBA_boolean=1
+ ac_cv_alignof_CORBA_char=1
+ ac_cv_alignof_CORBA_wchar=2
+ ac_cv_alignof_CORBA_short=2
+ ac_cv_alignof_CORBA_long=4
+ ac_cv_alignof_CORBA_long_long=4
+ ac_cv_alignof_CORBA_float=4
+ ac_cv_alignof_CORBA_double=4
+ ac_cv_alignof_CORBA_long_double=4
+ ac_cv_alignof_CORBA_struct=4
+ ac_cv_alignof_CORBA_pointer=4
+ fi
+ # parted
+ if [ "$PACKAGE" = "parted" -o "$PACKAGE_NAME" = "GNU parted" ]; then
+ ac_cv_sizeof_off_t=8
+ fi
+fi
diff -Nru dpkg-cross-2.6.7/config/cross-config.cache dpkg-cross-2.6.7arm64/config/cross-config.cache
--- dpkg-cross-2.6.7/config/cross-config.cache 2011-03-25 23:04:21.000000000 +0000
+++ dpkg-cross-2.6.7arm64/config/cross-config.cache 2012-10-24 22:39:27.000000000 +0100
@@ -7,9 +7,29 @@
# Settings are listed by package to avoid setting
# a value unless the package requires that value.
+
+# Common libc things - global until someone finds a reason not to
+ac_cv_func_malloc_0_nonnull=yes
+ac_cv_func_realloc_0_nonnull=yes
+# shadow
+ac_cv_func_setpgrp_void=yes
+
# override libtool until #367115 is fixed
hostarch=`dpkg-architecture -qDEB_HOST_GNU_TYPE`
-lt_cv_sys_lib_dlsearch_path_spec="/usr/$hostarch/lib /lib /usr/lib /usr/local/lib"
+lt_cv_sys_lib_dlsearch_path_spec=" /lib/$hostarch /usr/lib/$hostarch /lib /usr/lib /usr/local/lib"
+
+#apr
+if [ "$PACKAGE" = "apr" -o "$PACKAGE_NAME" = "apr" ]; then
+ac_cv_file__dev_zero=yes
+ac_cv_func_setpgrp_void=yes
+apr_cv_tcp_nodelay_with_cork=yes
+#apr's configure script will assume no epoll if cross compiling. Fix
+apr_cv_epoll=yes
+apr_cv_epoll_create1=yes
+# apr_cv_process_shared_works: maybe arch specific?
+# apr_cv_mutex_robust_shared: maybe arch specific?
+# ac_cv_sizeof_struct_iovec: is arch specific
+fi
# avahi
if [ "$PACKAGE" = "avahi" -o "$PACKAGE_NAME" = "avahi" ]; then
@@ -19,6 +39,11 @@
ac_cv_header_gdbm_h=yes
fi
+# bash
+if [ "$PACKAGE" = "bash" -o "$PACKAGE_NAME" = "bash" ]; then
+ac_cv_have_abstract_sockets=yes
+fi
+
# coreutils
if [ "$PACKAGE" = "coreutils" -o "$PACKAGE_NAME" = "GNU coreutils" ]; then
gl_cv_func_tzset_clobber=no
@@ -44,6 +69,7 @@
ac_cv_func_lstat_empty_string_bug=no
gl_cv_func_working_acl_get_file=yes
gl_cv_func_fchownat_nofollow_works=yes
+gl_cv_func_fstatat_zero_flag=yes
fi
# dbus-glib
@@ -57,16 +83,10 @@
ac_cv_have_abstract_sockets=yes
fi
-# devmapper does not support PACKAGE_NAME or PACKAGE
-# so this value is currently passed directly via
-# debian rules
-# if [ -z "$PACKAGE_NAME" -o "$PACKAGE_NAME" = "devmapper" ]; then
-# ac_cv_func_malloc_0_nonnull=yes
-# fi
-
# dpkg
if [ "$PACKAGE" = "dpkg" -o "$PACKAGE_NAME" = "dpkg" ]; then
dpkg_cv_va_copy=yes
+dpkg_cv_c99_snprintf=yes
fi
# findutils
@@ -97,6 +117,12 @@
ac_cv_type_mode_t=yes
fi
+# isc-dhcp
+if [ "$PACKAGE" = "isc-dhcp" -o "$PACKAGE_NAME" = "isc-dhcp" ]; then
+ac_cv_file__dev_random=yes
+fi
+
+
# krb5
if [ "$PACKAGE" = "krb5" -o "$PACKAGE_NAME" = "Kerberos 5" ]; then
krb5_cv_attr_constructor_destructor=yes,yes
@@ -123,6 +149,16 @@
#ac_cv_file__usr_lib_pkgconfig_libusb_pc=yes
#fi
+# mysql
+if [ "$PACKAGE" = "mysql" -o "$PACKAGE_NAME" = "mysql" ]; then
+mysql_cv_gcc_atomic_builtins=yes
+ac_cv_HAVE_IB_ATOMIC_PTHREAD_T_GCC=yes
+ac_cv_IB_GCC_ATOMIC_BUILTINS=yes
+ac_cv_HAVE_IB_GCC_ATOMIC_BUILTINS=yes
+ac_cv_HAVE_IB_SOLARIS_ATOMICS=yes
+# ac_cv_c_stack_direction is arch-sepcific
+fi
+
# mktemp
if [ "$PACKAGE" = "mktemp" -o "$PACKAGE_NAME" = "mktemp" ]; then
sudo_cv_ebcdic=no
@@ -145,17 +181,48 @@
libopts_cv_with_libregex=yes
fi
+# openldap
+if [ "$PACKAGE" = "openldap" -o "$PACKAGE_NAME" = "openldap" ]; then
+ac_cv_func_memcmp_working=yes
+fi
+
+# ossp-uuid
+if [ "$PACKAGE" = "ossp-uuid" -o "$PACKAGE_NAME" = "ossp-uuid" ]; then
+ac_cv_va_copy=yes
+fi
+
+# php
+if [ "$PACKAGE" = "php" -o "$PACKAGE_NAME" = "php" ]; then
+ac_cv_lib_gmp___gmp_randinit_lc_2exp_size=yes
+ac_cv_crypt_SHA512=yes
+ac_cv_crypt_SHA256=yes
+ac_cv_crypt_md5=yes
+fi
+
# popt
if [ "$PACKAGE" = "popt" -o "$PACKAGE_NAME" = "popt" ]; then
ac_cv_va_copy=yes
fi
-# psmisc
-if [ "$PACKAGE" = "psmisc" -o "$PACKAGE_NAME" = "psmisc" ]; then
-ac_cv_func_malloc_0_nonnull=yes
-ac_cv_func_realloc_0_nonnull=yes
+# procps
+if [ "$PACKAGE" = "procps" -o "$PACKAGE_NAME" = "procps" ]; then
+gl_cv_have_proc_uptime=yes
+fi
+
+
+# python2.7
+if [ "$PACKAGE" = "python" -o "$PACKAGE_NAME" = "python" ]; then
+ac_cv_buggy_getaddrinfo=no
+ac_cv_have_long_long_format=yes
+ac_cv_working_tzset=yes
+fi
+
+# rsyslog
+if [ "$PACKAGE" = "rsyslog" -o "$PACKAGE_NAME" = "rsyslog" ]; then
+ap_cv_atomic_builtins=yes
fi
+
# screen
if [ "$PACKAGE" = "screen" -o "$PACKAGE_NAME" = "screen" ]; then
ac_cv_prog_gcc_traditional=no
@@ -164,10 +231,10 @@
# shadow does not support PACKAGE_NAME or PACKAGE
# so this value is currently passed directly via
# debian rules
-#if [ "$PACKAGE" = "shadow" -o "$PACKAGE_NAME" = "shadow" ]; then
-#ac_cv_func_setpgrp=yes
-#ac_cv_func_setpgrp_void=yes
-#fi
+if [ "$PACKAGE" = "shadow" -o "$PACKAGE_NAME" = "shadow" ]; then
+ac_cv_func_setpgrp=yes
+ac_cv_func_setpgrp_void=yes
+fi
# sqlite does not support PACKAGE_NAME or PACKAGE
# need bespoke /etc/dpkg-cross/cross-config.d/arch:all support.
@@ -186,6 +253,12 @@
lf_cv_sane_realloc=yes
fi
+# sudo
+if [ "$PACKAGE" = "sudo" -o "$PACKAGE_NAME" = "GNU sudo" ]; then
+sudo_cv_uid_t_len=10
+sudo_cv_func_unsetenv_void=no
+fi
+
# tar
if [ "$PACKAGE" = "tar" -o "$PACKAGE_NAME" = "GNU tar" ]; then
ac_cv_have_decl_wcwidth=yes
@@ -202,20 +275,12 @@
tcl_cv_putenv_copy=${tcl_cv_putenv_copy='no'}
fi
-# tslib
-if [ "$PACKAGE" = "tslib" -o "$PACKAGE_NAME" = "tslib" ]; then
-ac_cv_func_malloc_0_nonnull=yes
-fi
-
-# usbutils
-if [ "$PACKAGE" = "usbutils" -o "$PACKAGE_NAME" = "usbutils" ]; then
-ac_cv_func_malloc_0_nonnull=yes
-fi
# util-linux
-if [ "$PACKAGE" = "util-linux" -o "$PACKAGE_NAME" = "util-linux-ng" ]; then
+if [ "$PACKAGE_NAME" = "util-linux" -o "$PACKAGE_NAME" = "util-linux-ng" ]; then
ac_cv_lib_blkid_blkid_known_fstype=yes
ac_cv_lib_uuid_uuid_is_null=yes
+scanf_cv_type_modifier=ms
fi
# xorg-server
diff -Nru dpkg-cross-2.6.7/debian/changelog dpkg-cross-2.6.7arm64/debian/changelog
--- dpkg-cross-2.6.7/debian/changelog 2012-07-25 20:50:51.000000000 +0100
+++ dpkg-cross-2.6.7arm64/debian/changelog 2012-10-24 22:44:55.000000000 +0100
@@ -1,3 +1,11 @@
+dpkg-cross (2.6.7arm64) precise; urgency=low
+
+ * Add arm64 support
+ * Add several new pacakges
+ * Make some core things global
+
+ -- Wookey <wookey@wookware.org> Wed, 24 Oct 2012 22:44:46 +0100
+
dpkg-cross (2.6.7) unstable; urgency=low
* Confine the postrm to only removing the config files
Reply to: