On 2016-01-28 00:51, Koen Kooi wrote:
>> Op 28 jan. 2016, om 09:43 heeft Stefan Agner <ste...@agner.ch> het volgende 
>> geschreven:
>>
>> 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…
> 
> Doh, I skipped over the angstrom.inc bits.
> 
>>
>>>
>>> 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.
> 
> I think your patch is the right way to go forward, I’ll think on it
> some more and patch sort.sh to behave according and double check the
> layout on the feedserver. This being release week at work and FOSDEM
> weekend this will be delayed to next week. If anyone wants to look at
> fixing sort.sh before that, please do :)

Afact, if the patch is applied, sort.sh does not need a change...
sort.sh already processes non-thumb feeds. With the change, opkg will
fetch the non-thumb package files too, and all should work out of the
box. At least it worked for my gstreamer/tremor test case...

--
Stefan


> 
> regards,
> 
> Koen
> 
>>
>> --
>> 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