On 02/09/2010 11:38 AM, Michael Cronenworth wrote:
What's the correct way to configure koji and friends to build i386 arch packages to an i686 target such as Fedora 12? I don't see any documentation on the Wiki and I don't see anything obvious to configure this.
The koji build task determines the arches to build from: - the srpm headers - the build tag - the package entry ("extra" arches) - the --arch-override option (for scratch builds)
The details are in the getArchList function, and they are a little detailed. Let me try to sum up:
1) We start with the arch list for the build tag and adding any extra arches for the package. This is the base arch list.
2) If the srpm has buildarchs data, this /replaces/ the base arch list.
3) excludesivearch and excludearch data from the srpm are used to filter the base arch list (with a little bit of magic to make noarch work right).
4) At this point, if an arch override applies, it replaces the current filtered list.
5) The list is filtered against the build tag's arch list. Any arches whose canonical* arch do not match a canonical entry from the tag's arch list are removed. Also, any duplicates are removed. This is the final result.
* The canonical arch is a mapping that koji performs to group like arches. For the most part, the canonical arch is the arch of a buildroot. Anytime you need to figure out which arch-dir of a buildroot use, that arch is canonicalized. i686 packages go into the i386 buildroot, so the canonical arch of i686 is i386.
So, if your build tag has i686 in the arch list and you want to build for i386, you can either: - Set the Buildarchs macro to override the base arch list - for scratch builds, just use --arch-override Your i386 arch won't be filtered out in step 5 because it does match the tag's arch list, modulo canonicalization.