По ходу написания патча для Metromap, встала проблема определения, где запущена программа, на Maemo или же нет.
Пока родилось только такое:
import platform
if platform.uname()[4][:3]=='arm':
HILDON=True
else:
HILDON=FalseВ идеале конечно вставить бы еще проверку на ОС, но пока показалось лишним.
А этот вариант, нормально работает как в SDK так и на самой таблетке.
У кого какие еще варианты есть?
Неактивен
В /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
...
Неактивен
try:
import hildon
have_hildon = True
except ImportError, e:
have_hildon = FalseКак-то так, наверное...
UPD: да, использовать сравнение uname с arm плохая идея, имхо. Arm весьма распространён, и таблетки - дай бог 1% от всех устройств на базе arm'ов с чем-нибудь юниксоподобным унутре.
Отредактированно kemm (14-02-2008 23:33:47)
Неактивен
хм... попробую. хотя спорен такой вариант, так как те же хилдоновские библиотеки уже есть в Debian Lenny... появление биндингов для питона в нем же, дело времени, и будет все не так однозначно ![]()
не спорю что плохая... скорее комбинация каких-то параметров нужна... вопрос в том, каких ![]()
так что бы и SDK определялся как Maemo ![]()
Неактивен
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)
Неактивен
Если речь идет об определении maemo, то метод kemm лучше. Мои примеры - это определение запуска на девайсе.
Неактивен
kemm говорит:
Вот выпустит через годик Nokia какой-нибудь NN920 на базе NetBSD с Qt4, к примеру, что делать бум? 8)) Hildon'а там может и не быть, а эти проверки пройдут (да и на osso тоже вполне может, оно, вроде бы, не сильно завязано на hildon)
Ответный удар - вот включит нокия в маймо Qt и выкинет хилдон, на который вы проверяете. А платформа будет та же - maemo. И ваша проверка пойдет туда же, куда и моя.
А еще лучше - переименует в hildon1 ![]()
Неактивен
хм. вот этот вариант больше подходит:
HILDON=os.path.exists('/etc/osso_software_version')оно хотя бы будет работать и в SDK ![]()
1 и 3 в SDK не работают корректно ![]()
Неактивен
Wall говорит:
Ответный удар - вот включит нокия в маймо Qt и выкинет хилдон, на который вы проверяете. А платформа будет та же - maemo. И ваша проверка пойдет туда же, куда и моя.
А еще лучше - переименует в hildon1 :)
Э-э-э, ну так нам надо узнать "есть ли в данных условиях Hildon?", а не "мы запустились на чём-то маленьком и странном?". 8))
Неактивен
kemm говорит:
Э-э-э, ну так нам надо узнать "есть ли в данных условиях Hildon?", а не "мы запустились на чём-то маленьком и странном?". 8))
в идеале комбинация ![]()
то есть и факт определения запуска на "маленьком и странном" и факт наличия Hildon (на текущий момент).
Неактивен
Unatine говорит:
хм... попробую. хотя спорен такой вариант, так как те же хилдоновские библиотеки уже есть в Debian Lenny... появление биндингов для питона в нем же, дело времени, и будет все не так однозначно :)
Э-э-э, а нафига оно там? 8-O
Unatine говорит:
не спорю что плохая... скорее комбинация каких-то параметров нужна... вопрос в том, каких :)
так что бы и SDK определялся как Maemo :)
В голову ничего разумного не приходит... Hildon + arch не сработает в sb с target == SDK_X86. Hildon + /etc/osso_software_version, наверное...
Неактивен
kemm говорит:
Э-э-э, а нафига оно там? 8-O
это вопрос скорее к мантейнерам данных пакетов в Ленни ![]()
kemm говорит:
В голову ничего разумного не приходит... Hildon + arch не сработает в sb с target == SDK_X86. Hildon + /etc/osso_software_version, наверное...
хм. не могу это пока проверить ![]()
но у лично у меня, с этим проблем пока нет, так как делаю все под SDK_ARM.. и там работает ![]()
Неактивен
Я так и не понял что именно требовалось. Вопрос 'запущена ли программа на maemo?' можно трактовать по разному, что мы собственно и сделали.
Если воспринимать maemo как SDK, то один ответ, если как набор библиотек - другой. А я вообще решил, что речь идет о таблетках.
Неактивен
По-разному - наоборот хорошо в данном случае, так как рассмотрено больше вариантов.
Имелось ввиду maemo. И как таблетка и как sdk ![]()
Просто проверка набора библиотек (того же Hildon) уже может не дать нужного результата.
Спасибо всем за варианты. Сегодня буду проверять все ![]()
Неактивен