|
Персональные инструменты |
|||
|
Cygwin:Вызов Windows утилитМатериал из CustisWikiЭто снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений. При всех своих замечательных свойствах, Cygwin не является полноценной Windows-системой. Поэтому, часто радость отладки крупных систем, омрачается тем, что некоторые утилиты, используемые в них, собрать под Cygwinном не удается. Например, множество веб-систем используют утилиты из пакета Graphviz, а корректно собрать Graphviz (версий >=1.9) под Cygwin весьма сложно, и даже собранный может вести себя весьма непредсказуемо (проблемы с шрифтами и т. п.). С другой стороны, зачастую такие утилиты поставляются собранными и оттестированными, как консольные Windows-приложения. Единственная, но серьезная проблема — Windows-приложения не понимают Cygwiновских Unix-путей («/var/www/», «/usr/local» и т. п.). «По уму», эту проблему можно решать с помощью использования утилиты cygpath, но гораздо проще воспользоваться небольшим «эвристическим» с скриптом на питоне (Python входит в дистрибутив Cygwinа.). #!/usr/bin/python # -*- coding: windows−1251 -*- # # Данный файл представляет собой скрипт на питоне, предназначенный # для вызова внешних Windows-утилит из Cygwin. # Основной решаемой проблемой является преобразование аргументов # содержащих файловые пути, из формы # /usr/local/.. на c:/cygwin/usr/local # import fileinput import string import re import os import sys import shutil newarg=[] for ls_arg in sys.argv[1:]: ls_newarg=ls_arg for ls_ref in re.findall('(/usr/local|/usr/bin|/usr/share|/var/www|/var/log)',ls_arg): ls_newarg=string.replace(ls_newarg,ls_ref,"c:/cygwin"+ls_ref) newarg.append(ls_newarg) ls_str="" for ls_arg in newarg: ls_str=ls_str+" "+ls_arg+" " os.system(ls_str) Далее, требуемую утилиту, например «dot», заменяем следующим shell-скриптом: #!/usr/bin/bash moscowcalling.py c:/app/ATT/Graphviz/bin/dot.exe $@ Внимание! Данная статья выбрана для репликации во внешнюю базу знаний компании. Пожалуйста, не допускайте в этой статье публикацию конфиденциальной информации, ведения обсуждений в теле статьи, и более ответственно относитесь к качеству самой статьи — проверяйте орфографию, пишите по-русски, избегайте непроверенной вами информации. |
||