Differences between revisions 4 and 31 (spanning 27 versions)
Revision 4 as of 2009-06-07 09:47:28
Size: 873
Editor: NeilWilliams
Comment:
Revision 31 as of 2010-03-17 19:49:23
Size: 6241
Editor: NeilWilliams
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

== RPATH ==

See [[Bug:367115]] and [[Bug:484277]] for details. Also, EmdebianAuditRpath for information on
work-in-progress and affected packages. See also EmdebianCodeAudit

== maintainer scripts ==

The only real way of handling maintainer script changes is to implement an no-op wrapper via {{{emsandbox}}} from the [[DebPkg:emdebian-rootfs]] package or by creating suitable wrappers using [[DebPkg:multistrap]] support.

As such, the maintainer scripts in the package would remain unchanged. Other changes (e.g. dropping specific options that are unsupported) are more difficult.

== Vendor ==

This snippet needs emvendor from [[DebPkg:emdebian-buildsupport]] (>= 2.1.2).

{{{
DEB_VENDOR=$(shell dpkg-vendor --query vendor)
ifeq (Debian,$(DEB_VENDOR))
  # Debian build
  EXCONFARGS=--disable-mono --disable-monodoc
else
  # any-vendor build
  EXCONFARGS=$(shell emvendor --vendor $(DEB_VENDOR) --package avahi --key EXCONFARGS)
endif
}}}

e.g. this (abridged) avahi patch:

{{{
 DEB_CONFIGURE_EXTRA_FLAGS += --enable-compat-libdns_sd --enable-compat-howl \
- --disable-mono --disable-monodoc
+ --disable-mono --disable-monodoc \
+ --disable-mono --disable-monodoc --disable-python \
+ --with-distro=debian
}}}

becomes:

{{{
DEB_VENDOR=$(shell dpkg-vendor --query vendor)
ifeq (,$(findstring emdebian-crush,$(DEB_VENDOR)))
  # Debian build
  EXCONFARGS=--disable-mono --disable-monodoc
else
  # emdebian build (crush)
  EXCONFARGS=--disable-mono --disable-monodoc --disable-python --with-distro=debian
endif
 DEB_CONFIGURE_EXTRA_FLAGS += --enable-compat-libdns_sd --enable-compat-howl ${EXCONFARGS}
}}}

{{{emvendor}}} provides an extra hierarchy of configuration settings, over and above what {{{dpkg-vendor}}} supports. It would be possible to include the relevant strings in {{{/etc/dpkg/origins/vendor}}} but each identifier string would need to be unique across all packages for each vendor, which would be an unrealistic limitation.
Line 5: Line 57:
 * drop dependency on [[DebPkg:debian-archive-keyring]] - not used in Emdebian.
  * TODO: assess whether this change can be dropped, the original reason was the extra dependency on gnupg.
 * Originally related to dropping the dependency on [[DebPkg:debian-archive-keyring]] - which is not used in Emdebian.
  * Assessed as insufficient reason not to use the version in Grip, original reason was the extra dependency on gnupg but gnupg was included in Crush 1.0 anyway.
Line 10: Line 62:
 * Need to disable the documentation generation as it tries to execute internal compiled binaries in the scan process.  * Need to disable the documentation generation as it tries to execute internal compiled binaries in the scan process. Avoid this issue by pulling the package from Grip where documentation is removed after the native build.
Line 15: Line 67:
 * Maintainer scripts call adduser.  * Maintainer scripts call adduser - Crush will simply provide an empty script.
 * Needs vendor support to implement changes in configure arguments. Problem will be matching these switches to the xcontrol support. A new source package, avahi-crush could be implemented to solve these problems.
 * Some of the disabled components could just be ignored if the packages could come from Grip but other binaries depend on adduser and could need replacement. Tests are needed to work out the best way to handle all the problems together.

== base-files ==

 * Drop the Pre-Depends on awk - TODO: might not be necessary anymore - needs to be tested against busybox.
 * Compress the licence texts and update the symlinks. (Not needed if using from Grip.)
Line 20: Line 79:

== cpio ==

 * drop win32 bindings - needs xcontrol support for dropping the package.
 * update-alternatives changes in maintainer scripts

== cracklib2 ==

 * python support needs to be handled in xcontrol
 * Debian package uses chrpath which fails with a cross-built binary.

== cron ==

 * adduser dependency needs to be handled (uses addgroup in preinst).

== curl ==

 * generates a SONAME bump during the build, libcurl-gnutls.so.5.1.1 ??
 * drop ldap support and disable ssh support.
 * drop dependency on ca-certificates (v.large)

== dash ==

 * scripts drop dpkg-divert support - possible to handle this in emsandbox but that could easily cause package installation failures and will need careful management.

== dbus ==

 * Remove adduser dependency and probably use empty adduser support in emsandbox. Users and groups will need to be handled manually.

== dbus-glib ==

 * Needs patches to skip examples and tools directories from build - tools tries to execute the built binaries. examples ignores the cross-compiler.

== dpkg ==

 * Needs xcontrol|vendor support to (pre-)depend on busybox instead of coreutils

== hal ==

 * {{{adduser}}} dependency removal
 * --disable-smbios change.

== libxi ==

 * does not notice the {{{ac_cv_func_malloc_0_nonnull=yes}}} cache variable, needs a patch for {{{debian/rules}}} to add the package-specific {{{./configure}}} option {{{--enable-malloc0returnsnull}}}

== libxinerama ==

 * does not notice the {{{ac_cv_func_malloc_0_nonnull=yes}}} cache variable, needs a patch for {{{debian/rules}}} to add the package-specific {{{./configure}}} option {{{--enable-malloc0returnsnull}}}

== libxrandr ==

 * does not notice the {{{ac_cv_func_malloc_0_nonnull=yes}}} cache variable, needs a patch for {{{debian/rules}}} to add the package-specific {{{./configure}}} option {{{--enable-malloc0returnsnull}}}

== libxrender ==

 * does not notice the {{{ac_cv_func_malloc_0_nonnull=yes}}} cache variable, needs a patch for {{{debian/rules}}} to add the package-specific {{{./configure}}} option {{{--enable-malloc0returnsnull}}}

== openssh ==

 * {{{adduser}}} dependency removal
 * drop {{{binary-ssh-krb5}}} target in {{{debian/rules}}}
 * drop {{{update-alternatives}}} from maintainer scripts.


----
CategoryEmdebian

Details of the changes in the EmdebianCodeAudit

RPATH

See 367115 and 484277 for details. Also, EmdebianAuditRpath for information on work-in-progress and affected packages. See also EmdebianCodeAudit

maintainer scripts

The only real way of handling maintainer script changes is to implement an no-op wrapper via emsandbox from the emdebian-rootfs package or by creating suitable wrappers using multistrap support.

As such, the maintainer scripts in the package would remain unchanged. Other changes (e.g. dropping specific options that are unsupported) are more difficult.

Vendor

This snippet needs emvendor from emdebian-buildsupport (>= 2.1.2).

DEB_VENDOR=$(shell dpkg-vendor --query vendor)
ifeq (Debian,$(DEB_VENDOR))
  # Debian build
  EXCONFARGS=--disable-mono --disable-monodoc
else
  # any-vendor build
  EXCONFARGS=$(shell emvendor --vendor $(DEB_VENDOR) --package avahi --key EXCONFARGS)
endif

e.g. this (abridged) avahi patch:

 DEB_CONFIGURE_EXTRA_FLAGS += --enable-compat-libdns_sd --enable-compat-howl \
-                             --disable-mono --disable-monodoc
+                             --disable-mono --disable-monodoc \
+                             --disable-mono --disable-monodoc --disable-python \
+                             --with-distro=debian 

becomes:

DEB_VENDOR=$(shell dpkg-vendor --query vendor)
ifeq (,$(findstring emdebian-crush,$(DEB_VENDOR)))
  # Debian build
  EXCONFARGS=--disable-mono --disable-monodoc
else
  # emdebian build (crush)
  EXCONFARGS=--disable-mono --disable-monodoc --disable-python --with-distro=debian 
endif
 DEB_CONFIGURE_EXTRA_FLAGS += --enable-compat-libdns_sd --enable-compat-howl ${EXCONFARGS}

emvendor provides an extra hierarchy of configuration settings, over and above what dpkg-vendor supports. It would be possible to include the relevant strings in /etc/dpkg/origins/vendor but each identifier string would need to be unique across all packages for each vendor, which would be an unrealistic limitation.

apt

  • Originally related to dropping the dependency on debian-archive-keyring - which is not used in Emdebian.

    • Assessed as insufficient reason not to use the version in Grip, original reason was the extra dependency on gnupg but gnupg was included in Crush 1.0 anyway.

atk1.0

  • Need to disable the documentation generation as it tries to execute internal compiled binaries in the scan process. Avoid this issue by pulling the package from Grip where documentation is removed after the native build.

avahi

  • Lots of components are disabled, including python, qt3, qt4, docs and gobject components. Quite a difficult package to handle, overall, due to the number of possible permutations. The gobject code didn't cross-build last time it was tried.
  • Maintainer scripts call adduser - Crush will simply provide an empty script.
  • Needs vendor support to implement changes in configure arguments. Problem will be matching these switches to the xcontrol support. A new source package, avahi-crush could be implemented to solve these problems.
  • Some of the disabled components could just be ignored if the packages could come from Grip but other binaries depend on adduser and could need replacement. Tests are needed to work out the best way to handle all the problems together.

base-files

  • Drop the Pre-Depends on awk - TODO: might not be necessary anymore - needs to be tested against busybox.
  • Compress the licence texts and update the symlinks. (Not needed if using from Grip.)

busybox

  • Large functional changes - due to the completely different roles of busybox in Debian (d-i and initramfs) and Emdebian (replacing coreutils, boot support).

cpio

  • drop win32 bindings - needs xcontrol support for dropping the package.
  • update-alternatives changes in maintainer scripts

cracklib2

  • python support needs to be handled in xcontrol
  • Debian package uses chrpath which fails with a cross-built binary.

cron

  • adduser dependency needs to be handled (uses addgroup in preinst).

curl

  • generates a SONAME bump during the build, libcurl-gnutls.so.5.1.1 ??
  • drop ldap support and disable ssh support.
  • drop dependency on ca-certificates (v.large)

dash

  • scripts drop dpkg-divert support - possible to handle this in emsandbox but that could easily cause package installation failures and will need careful management.

dbus

  • Remove adduser dependency and probably use empty adduser support in emsandbox. Users and groups will need to be handled manually.

dbus-glib

  • Needs patches to skip examples and tools directories from build - tools tries to execute the built binaries. examples ignores the cross-compiler.

dpkg

  • Needs xcontrol|vendor support to (pre-)depend on busybox instead of coreutils

hal

  • adduser dependency removal

  • --disable-smbios change.

libxi

  • does not notice the ac_cv_func_malloc_0_nonnull=yes cache variable, needs a patch for debian/rules to add the package-specific ./configure option --enable-malloc0returnsnull

libxinerama

  • does not notice the ac_cv_func_malloc_0_nonnull=yes cache variable, needs a patch for debian/rules to add the package-specific ./configure option --enable-malloc0returnsnull

libxrandr

  • does not notice the ac_cv_func_malloc_0_nonnull=yes cache variable, needs a patch for debian/rules to add the package-specific ./configure option --enable-malloc0returnsnull

libxrender

  • does not notice the ac_cv_func_malloc_0_nonnull=yes cache variable, needs a patch for debian/rules to add the package-specific ./configure option --enable-malloc0returnsnull

openssh

  • adduser dependency removal

  • drop binary-ssh-krb5 target in debian/rules

  • drop update-alternatives from maintainer scripts.


CategoryEmdebian