[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: