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

Re: [PATCH] Allow use of foreign linux-headers packages with a native compiler



On Fri, Oct 25, 2013 at 10:11:24PM +0100, Ben Hutchings wrote:
> The meta-packages do not exist and cross-architecture dependencies are
> not supported by dak or britney.  So for now, introduce our own
> meta-packages where we need them.

Okay as a workaround, but your solution is a bit overengineered.

I would do it this way:
- Add linux-compiler-@version@-x86/linux-compiler-@version@-s390 to
  linux-tools:template/config.extra.in (not sure if support is currently
  in there or if it needs to be copied from linux-latest) and don't try
  to auto-generate them, it is a workaround, no solution.
- Add some sort of override to the relations:
  [relations]
  headers%gcc-4.8: linux-compiler-@version@-x86

> +        'base': {
> +            'compiler-multilib-names': config.SchemaItemList(),
> +         },

"base" looks wrong as you introduce a new compiler-section.

>          cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-arch %s" % makeflags]
> +        for compiler_multilib in self.config['base',]['compiler-multilib-names']:
> +            if arch in self.config['base', 'compiler', compiler_multilib]['arches']:
> +                cmds_binary_arch.append(
> +                    "$(MAKE) -f debian/rules.real install-dummy"
> +                    " DH_OPTIONS='-plinux-compiler-%s-%s' %s" %
> +                    (self.version.linux_version, compiler_multilib, makeflags))

This is the wrong direction. The real arch needs to specify what
compiler it needs, not the compiler which arch.

> +            if compiler_multilib:
> +                # We cannot directly depend on all valid compilers
> +                # without specifying package:arch, which is not
> +                # supported by dak.  Use an intermediate meta-package.
> +                package_headers['Depends'].extend(
> +                    PackageRelation('linux-compiler-%s-%s' %
> +                                    (self.version.linux_version,
> +                                     compiler_multilib)))

Needs to be specified as relation in the config, not hardcoded.

> +        for compiler_multilib in self.config['base',]['compiler-multilib-names']:
> +            if arch in self.config['base', 'compiler', compiler_multilib]['arches']:
> +                vars['compiler-multilib'] = compiler_multilib
> +                vars['compiler-arches'] = ' '.join(
> +                    self.config['base', 'compiler', compiler_multilib]['arches'])
> +                vars['compiler-desc'] = \
> +                    self.config['base', 'compiler', compiler_multilib]['description']
> +                package_compiler_meta, = \
> +                    self.process_packages(self.templates["control.compiler"],
> +                                          vars)
> +                # XXX: Should check that the compiler is the same for
> +                # all arches building this meta-package.
> +                package_compiler_meta['Depends'].extend(relations_compiler)
> +                packages.append(package_compiler_meta)

Urgs.

> +  [ Ben Hutchings ]
> +  * [x86,s390,s390x] Introduce linux-compiler meta-packages to allow use of
> +    foreign linux-headers packages with a native compiler

You miss arm.  Or is armel and armhf not compatible?

Bastian

-- 
Where there's no emotion, there's no motive for violence.
		-- Spock, "Dagger of the Mind", stardate 2715.1

Attachment: signature.asc
Description: Digital signature


Reply to: