From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Andrey Orlov To: ALT Devel discussion list Date: Tue, 5 Oct 2004 17:09:48 +0400 User-Agent: KMail/1.6.2 MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Message-Id: <200410051709.48658.cray@neural.ru> Subject: [devel] =?koi8-r?b?7s/X2cogcHl0aG9uINTSyczMxdI=?= X-BeenThere: devel@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Oct 2004 13:05:27 -0000 Archived-At: List-Archive: List-Post: Hi! Только что я залил в дедалус пакет rpm-build-python-0.16-alt6.src.rpm. Это искалка зависимостей с доработанной логикой. Суть доработки сводится к тому, что теперь могут искаться зависимости вида "python" "." "(" [ "." ]* ")", чего раньше не было. Соответствующие Provides тоже ищутся. Наличие таких зависимостей позволило ввести возможность "распиливать" пакеты модулей на подпакеты, входящие в один модуль, что мы с Алексеем Морозовым назвали "Распиленные модули". Зачем это нужно - Алексей расскажет лучше меня, я же только могу посоветовать прочитать ответы на вопросы 28-30 FAQ (прилагается). Теперь немножко предупреждений. Так как до сих пор все пакеты собирались с упрощенной искалкой зависимостей, пересборка модуля с новой искалкой скорее всего вызовет unmets. Поэтому поиск зависимостей по умолчанию эмулируется старый, а вот provides ищутся уже новые - это не вызывает unmets (наверно). Чбы отключить эмуляцию нужно набрать в спеке %python_req_hier После чего, как уже было написано, ваш модуль, скорее всего, перестанент работать и нужно будет что-то с этим сделать. Через некоторое время rpm-build-python переедет в сизиф. А еще через некоторое время %python_req_hier окажется по умолчанию включенным. Вам стоит подготовится к этому, чбы не было как всегда - т.е. включить его самим. Ситуация осложняется тем, что чбы использовать все новые фичи нужно патчить rpm. Патч будет отправлен LDV и rpm пропатчится. Если кому-то опять не нравится имя макроса - python-hier или какого-либо еще из вновь добавленных - самое время наглюкать багрепорт: пожалуста, не тяните до сизифа, а тем более до релиза, как обычно бывает. Новые показания FAQ следуют, полная версия доступна в пакете или на http://www.neural.ru. == FAQ == Q28: Я хочу разбить модуль на две подпакета, только одна из которых содержит файл __init__.py, но искалка Provides находит только зависимости из одного пакета (в который входит __init__.py). Что делать? A28: Нужно воспользоваться макросом python_module_declare , где - путь к каталогу содержащему файл __init__.py : python_module_declare /usr/lib/python2.3/email/ Тогда поиск Provides для любого подпакета будет считать, что он обнаружил в каталоге файл __init__.py, а для пакета, в который включена такая декларация автоматически добавится зависимость на модуль, соответствующий пути ; (в текущей версии макрос python_module_declare может не работать) Q29: Что такое иерархическая зависимость? A29: Иерархическая зависимость - это зависимость на модуль, вложенный внутрь другого модуля. Такая зависимтость записывается как : "python" "." "(" [ "." ] * ")" И порождается синтаксической конструкцией вида : "import" " " [ "." ]* Имеющий смысл "импортировать модуль NAME (2) из модуля NAME (1)". Q30: Почему конструкция from import не порождает иерархическую зависимость? A30: Потому что в этой конструкции не обязательно соответствует модулю - т.е. файлу (каталогу), а может соответствовать любому имени, определенному в модуле MODULE. Для языка Python не существует способа составить полный список таких имен до исполнения программы (хотя бы потому, что их список может изменятся в процессе выполнения программы произвольным образом). ================ -- WthBstRgrds -- Андрей Орлов -- --- http: www.neural.ru, mail: cray@neural.ru, jid: cray@altlinux.org --- ----------------------------------------