Am Mittwoch, 14. April 2010 17:57:21 schrieb Ludwig Nussel:
Ludwig Nussel wrote:
Martin Mohring wrote:
Ludwig Nussel wrote:
Martin Mohring wrote:
Ludwig Nussel wrote:
There's a hack for ARM in the build script, it looks at 'changetarget' in prjconf in order to define the target I think. Maybe that feature could be used here too.
This is not a hack, it is due to the behavior of rpm. We found no other way working with all rpm versions to handle this. And: the problem solved with this is not limited to ARM.
Atm it is both a hack (conflicts with ABUILD_TARGET_ARCH AFAICS) and is limited to ARM :-)
1613 # case arm, extract changetarget 1614 # this is restricted to arm to make sure it doesn't interfere with x86 1615 if [ "$BUILD_ARCH" != "${BUILD_ARCH#arm}" ]; then
Ok. Let me say it another way: Yes, it is of course a hack (and the #arm is a hack). But how does the "solution" instead of the hack look like? I the only solution we found is to pass in worst case the full triple to rpm. If the implementation of this is a hack, lets fix it.
Well, I guess that solution is fine if it integrates with ABUILD_TARGET_ARCH. I'd probably rename the option to 'defaulttarget' or just 'target' instead of 'changetarget' though.
Since --target is buggy in rpm anyways what about using buildarchtranslate instead? The default rpmrc on 11.2 contains the line "buildarchtranslate: armv5tel: armv4l". Which is the reason you need to change the target I guess. 'getoptflags' writes a ~/.rpmrc anyways so if we'd change it to also extract buildarchtranslate from the config you could specify "buildarchtranslate: armv5tel: armv5tel" in the prjconf instead of having to pass --target to rpmbiuld.
Nack. Partly. The reason is: qemu-user advertizes armv7 as cpu and rpm's autodetection would (try to) build armv7 even on armv5 userspace (btw - cool for bootstrapping). Also think vice versa. Older qemu-user advertized armv5 but also executed armv7. But the idea is good, lets elaborate it further. The point is: we need to make _sure_ the architecture chosen gets built and not screwed up by e.g. autodetection returning "wrong" results - which is not the fault of the autodetection per se. And keep in mind: it has to work with different distros ! Lets look at an example: So we'd need to set for arm buildarchtranslate: armv5tel: armv5tel buildarchtranslate: armv5tevl: armv5tel [...]tejl tejvl ... whatever other string. Mess! buildarchtranslate: armv6l: armv5tel buildarchtranslate: armv6vl: armv5tel buildarchtranslate: armv7l: armv5tel buildarchtranslate: armv7vl: armv5tel basically all arches that _might_ show up within the autodetection (emulated or native). An we'd have to make sure that part of the macro inclusion chain wins also for conflicting definitions. Is that easier than one --target ?? Best, Jan-Simon -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org