On 2016-01-28 00:35, Koen Kooi wrote:
>> Op 27 jan. 2016, om 23:36 heeft Stefan Agner <ste...@agner.ch> het volgende 
>> geschreven:
>>
>> From: Stefan Agner <stefan.ag...@toradex.com>
>>
>> Several packages are only available in the non-thumb (ARM) feeds.
>> E.g. tremor (libvorbisdec1) uses ARM_INSTRUCTION_SET = "arm" in its
>> recipe, and therefor is built only for non-thumb architectures such
>> as armv7ahf-vfp-neon.
> 
> That’s what I suspected, thanks for tracking this down.
> 
>> This introduces TUNE_ARMPKGARCH which is TUNE_PKGARCH without the
>> thumb part (ARMPKGSFX_THUMB). FEED_ARCHS can contain multiple
>> architectures, and the feed configuration files are generated
>> accordingly.
> 
> This is what distro-feed-configs.bb does as well and it leads to problems:

Not exactly. The patch only adds one additional arch, the same arch as
TUNE_PKGARCH, just without the thumb...

> 
> 1) it adds all archs, including arch(N-1), arch(N-2), so it will also
> pick up armv6 in your case and other x86 archs in the x86_64 case. If
> for some reason you want a newer version of $package for arch(N-1),
> but not arch(N) this breaks.
> 2) not all archs have a feed dir, since a lot of them are
> autogenerated and to be honest, bogus. So users will get 404s.

As soon as there is one package with ARM_INSTRUCTION_SET = "arm", the
non thumb arch will be there anyway. And libc is one of the packages
making use of that, so it is practically guaranteed...

> 3) extra feed lists on the device which makes opkg slow.

It seems that you are not building explicitly armv7ahf-vfp-neon platform
currently. Hence armv7ahf-vfp-neon and armv7at2hf-vfp-neon are
practically disjoint sets... Hence it's 2 smaller ones vs 1 large
package file...

> 
> Having said all that, how about this:
> 
> diff --git a/contrib/sort.sh b/contrib/sort.sh
> index 8953e4c..12f1718 100755
> --- a/contrib/sort.sh
> +++ b/contrib/sort.sh
> @@ -118,6 +118,10 @@ case "$arch" in
>         "armv7at2hf-vfp-neon-mx6")
>                         archdir="armv7ahf-vfp-neon"
>                         machines="" ;;
> +       "armv7ahf-vfp-neon")
> +                       archdir="armv7at2hf-vfp-neon" ;;
> +       "armv7ahf-vfp")
> +                       archdir="armv7at2hf-vfp" ;;
>         "armv7ahfb-vfp-neon")
>                         machine="genericarmv7ab" ;;
>         "armv7a-vfp")
> @@ -128,15 +132,16 @@ case "$arch" in
>                         archdir="blackfin"
>                         machines="adsp-bf537-stamp" ;;
>         "cortexa5t2hf-vfp-neon")
> -                       archdir="armv7ahf-vfp-neon"
> +                       archdir="armv7at2hf-vfp-neon"
>                         machines="" ;;
>         "cortexa5hf-vfp-neon")
> -                       archdir="armv7ahf-vfp-neon"
> +                       archdir="armv7at2hf-vfp-neon"
>                         machines="" ;;
>         "cortexa9hf-vfp-neon")
> +                       archdir="armv7at2hf-vfp-neon"
>                         machines="" ;;
>         "cortexa9hf-vfp-neon-mx6")
> -                       archdir="cortexa9hf-vfp-neon"
> +                       archdir="armv7at2hf-vfp-neon"
>                         machine="" ;;
>         "geode")
>                         machines="alix geodegx geodelx iei-nanogx-466 xo" ;;
> 
> That will sort related bits into a single feed. And on the feedserver
> we symlink armv7at2hf-vfp-neon -> armv7ahf-vfp-neon and so on. In
> theory the sort.sh change should be enough, but it is possible to
> construct a broken MACHINE.conf, so let’s be safe.

Hm, I see. The server side solution would also have the advantage that
it solves the issue for all the devices out there immediately.

It just feels a bit wrong to sort armv7ahf-vfp-neon into
armv7at2hf-vfp-neon.

--
Stefan


>> ---
>>
>> conf/distro/include/angstrom.inc                   | 2 ++
>> recipes-angstrom/angstrom/angstrom-feed-configs.bb | 5 ++++-
>> 2 files changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/conf/distro/include/angstrom.inc 
>> b/conf/distro/include/angstrom.inc
>> index c5f9fab..0b5ea25 100644
>> --- a/conf/distro/include/angstrom.inc
>> +++ b/conf/distro/include/angstrom.inc
>> @@ -21,6 +21,8 @@ ONLINE_PACKAGE_MANAGEMENT = "full"
>> #Alphabetically sorted
>>
>> FEED_ARCH ?= "${TUNE_PKGARCH}"
>> +TUNE_ARMPKGARCH = 
>> "${ARMPKGARCH}${ARMPKGSFX_DSP}${ARMPKGSFX_EABI}${ARMPKGSFX_ENDIAN}${ARMPKGSFX_FPU}"
>> +FEED_ARCHS ?= "${TUNE_PKGARCH} ${TUNE_ARMPKGARCH}"
>>
>> #blackfin machines
>> FEED_ARCH_bfin          = "blackfin"
>> diff --git a/recipes-angstrom/angstrom/angstrom-feed-configs.bb 
>> b/recipes-angstrom/angstrom/angstrom-feed-configs.bb
>> index 4b14b2a..e40057a 100644
>> --- a/recipes-angstrom/angstrom/angstrom-feed-configs.bb
>> +++ b/recipes-angstrom/angstrom/angstrom-feed-configs.bb
>> @@ -13,7 +13,10 @@ do_compile() {
>>      mkdir -p ${S}/${sysconfdir}/opkg
>>
>>      for feed in base debug perl python gstreamer ; do
>> -              echo "src/gz ${feed} 
>> ${ANGSTROM_URI}/${FEED_BASEPATH}${FEED_ARCH}/${feed}" > 
>> ${S}/${sysconfdir}/opkg/${feed}-feed.conf
>> +            rm ${S}/${sysconfdir}/opkg/${feed}-feed.conf
>> +            for feed_arch in ${FEED_ARCHS} ; do
>> +                    echo "src/gz ${feed}-${feed_arch} 
>> ${ANGSTROM_URI}/${FEED_BASEPATH}${feed_arch}/${feed}" >> 
>> ${S}/${sysconfdir}/opkg/${feed}-feed.conf
>> +            done
>>      done
>>
>>      echo "src/gz ${MACHINE_ARCH} 
>> ${ANGSTROM_URI}/${FEED_BASEPATH}${FEED_ARCH}/machine/${MACHINE_ARCH}" >  
>> ${S}/${sysconfdir}/opkg/${MACHINE_ARCH}-feed.conf
>> --
>> 1.9.3
>>

_______________________________________________
Angstrom-distro-devel mailing list
Angstrom-distro-devel@linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/angstrom-distro-devel

Reply via email to