Unatine @ 14-02-2008 22:10:31

По ходу написания патча для Metromap, встала проблема определения, где запущена программа, на Maemo или же нет.

Пока родилось только такое:

Код:

import platform

if platform.uname()[4][:3]=='arm':
    HILDON=True
else:
    HILDON=False

В идеале конечно вставить бы еще проверку на ОС, но пока показалось лишним.
А этот вариант, нормально работает как в SDK так и на самой таблетке.

У кого какие еще варианты есть?

Wall @ 14-02-2008 23:05:18

В /etc/osso_software_version, лежит версия прошивки.
И еще в /proc/component_version тоже что-то было.
Ну и по разрешению экрана, но это почти пальцем в небо, учитывая что девайсы с таким разрешением появляются.
Можно еще по пакетам, но при наличии вышеуказаных возможностей скорее всего не нужно.

PS: немножко кода:
1. HILDON=platform.uname()[1].lower().startswith('nokia')
2. HILDON=os.path.exists('/etc/osso_software_version')
3. HILDON = re.search('^nolo[ ]+[1-9.]+$',open('/proc/component_version').read(), re.M) != None
...

kemm @ 14-02-2008 23:31:29

Код:

try:
    import hildon
    have_hildon = True
except ImportError, e:
    have_hildon = False

Как-то так, наверное...

UPD: да, использовать сравнение uname с arm плохая идея, имхо. Arm весьма распространён, и таблетки - дай бог 1% от всех устройств на базе arm'ов с чем-нибудь юниксоподобным унутре.

Unatine @ 14-02-2008 23:39:29

хм... попробую. хотя спорен такой вариант, так как те же хилдоновские библиотеки уже есть в Debian Lenny... появление биндингов для питона в нем же, дело времени, и будет все не так однозначно :)

не спорю что плохая... скорее комбинация каких-то параметров нужна... вопрос в том, каких :)
так что бы и SDK определялся как Maemo :)

kemm @ 14-02-2008 23:40:15

Wall говорит:

1. HILDON=platform.uname()[1].lower().startswith('nokia')
3. HILDON = re.search('^nolo[ ]+[1-9.]+$',open('/proc/component_version').read(), re.M) != None
...

Вот выпустит через годик Nokia какой-нибудь NN920 на базе NetBSD с Qt4, к примеру, что делать бум? 8)) Hildon'а там может и не быть, а эти проверки пройдут (да и на osso тоже вполне может, оно, вроде бы, не сильно завязано на hildon)

Wall @ 14-02-2008 23:40:35

Если речь идет об определении maemo, то метод kemm лучше. Мои примеры - это определение запуска на девайсе.

Wall @ 14-02-2008 23:43:07

kemm говорит:

Вот выпустит через годик Nokia какой-нибудь NN920 на базе NetBSD с Qt4, к примеру, что делать бум? 8)) Hildon'а там может и не быть, а эти проверки пройдут (да и на osso тоже вполне может, оно, вроде бы, не сильно завязано на hildon)

Ответный удар - вот включит нокия в маймо Qt и выкинет хилдон, на который вы проверяете. А платформа будет та же - maemo. И ваша проверка пойдет туда же, куда и моя.
А еще лучше - переименует в hildon1 :)

Unatine @ 14-02-2008 23:44:30

хм. вот этот вариант больше подходит:

Код:

HILDON=os.path.exists('/etc/osso_software_version')

оно хотя бы будет работать и в SDK :)
1 и 3 в SDK не работают корректно :)

kemm @ 14-02-2008 23:47:41

Wall говорит:

Ответный удар - вот включит нокия в маймо Qt и выкинет хилдон, на который вы проверяете. А платформа будет та же - maemo. И ваша проверка пойдет туда же, куда и моя.
А еще лучше - переименует в hildon1 :)

Э-э-э, ну так нам надо узнать "есть ли в данных условиях Hildon?", а не "мы запустились на чём-то маленьком и странном?". 8))

Unatine @ 14-02-2008 23:49:30

kemm говорит:

Э-э-э, ну так нам надо узнать "есть ли в данных условиях Hildon?", а не "мы запустились на чём-то маленьком и странном?". 8))

в идеале комбинация :)
то есть и факт определения запуска на "маленьком и странном" и факт наличия Hildon (на текущий момент).

kemm @ 14-02-2008 23:51:37

Unatine говорит:

хм... попробую. хотя спорен такой вариант, так как те же хилдоновские библиотеки уже есть в Debian Lenny... появление биндингов для питона в нем же, дело времени, и будет все не так однозначно :)

Э-э-э, а нафига оно там? 8-O

Unatine говорит:

не спорю что плохая... скорее комбинация каких-то параметров нужна... вопрос в том, каких :)
так что бы и SDK определялся как Maemo :)

В голову ничего разумного не приходит... Hildon + arch не сработает в sb с target == SDK_X86. Hildon + /etc/osso_software_version, наверное...

Unatine @ 14-02-2008 23:55:46

kemm говорит:

Э-э-э, а нафига оно там? 8-O

это вопрос скорее к мантейнерам данных пакетов в Ленни :)

kemm говорит:

В голову ничего разумного не приходит... Hildon + arch не сработает в sb с target == SDK_X86. Hildon + /etc/osso_software_version, наверное...

хм. не могу это пока проверить :/
но у лично у меня, с этим проблем пока нет, так как делаю все под SDK_ARM.. и там работает :)

Wall @ 15-02-2008 03:54:46

Я так и не понял что именно требовалось. Вопрос 'запущена ли программа на maemo?' можно трактовать по разному, что мы собственно и сделали.
Если воспринимать maemo как SDK, то один ответ, если как набор библиотек - другой. А я вообще решил, что речь идет о таблетках.

Unatine @ 15-02-2008 04:12:24

По-разному - наоборот хорошо в данном случае, так как рассмотрено больше вариантов.

Имелось ввиду maemo. И как таблетка и как sdk :)
Просто проверка набора библиотек (того же Hildon) уже может не дать нужного результата.

Спасибо всем за варианты. Сегодня буду проверять все :)