From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00, RCVD_IN_SORBS_WEB,SPF_PASS autolearn=no version=3.2.5 Date: Fri, 26 Jul 2013 23:47:01 +0300 From: Igor Vlasenko To: devel@lists.altlinux.org Message-ID: <20130726204700.GA21093@dad.imath.kiev.ua> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.21 (2010-09-15) X-imath-kiev-ua-MailScanner-Information: Please contact the ISP for more information X-imath-kiev-ua-MailScanner-ID: 8157C6C9DAD.A3CE2 X-imath-kiev-ua-MailScanner: Found to be clean X-imath-kiev-ua-MailScanner-From: vlasenko@imath.kiev.ua Subject: [devel] =?utf-8?b?STog0LTQvtC60YPQvNC10L3RgtCw0YbQuNGPINC/0L4g?= =?utf-8?b?0YPRgtC40LvQuNGC0LDQvCDQvtCx0YDQsNCx0L7RgtC60Lgg0YDQtdC/0L4=?= =?utf-8?b?0LfQuNGC0L7RgNC40Y8uIHYyLg==?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 26 Jul 2013 20:47:41 -0000 Archived-At: List-Archive: List-Post: Уважаемые коллеги, переработал документацию по утилитам уровня репозитория, к вашему вниманию. Третий уровень - утилиты обработки репозитория. От утилит второго уровня - утилит работы с пакетами -утилиты третьего уровня отличаются тем, что к ним подключены библиотеки работы с репозиториями (пакет perl-Source-Repository). Библиотека Source::Repository::Mass. Основной режим этой библиотеки отбор пакетов из исходного репозитория по некоторому критерию. Утилита, пользующаяся библиотекой, указывает ей 2 репозитория: Исходный репозиторий-источник (origin) и целевой (результирующий) репозиторий (destination). Далее на вход подаются имена исходных пакетов, библиотека ищет их в обеих репозиториях, есть критерий сравнения (например, пакет должен быть старше) и если критерий выполнен, то над исходным пакетом выполняется действие, определенное в клиенте этой библиотеки. Сравнение имен пакетов осуществляется с помошью указания объекта интерфейса Source::Repository::Mass::Matcher. Например, в утилитах python3-copycat для преобразования пакетов модулей python2 в пакеты модулей для python3 для сравнения имен используется класс Source::Repository::Mass:: Matcher::Py3CopyCat, который имена python-module-foo и python3-module-foo считает равными, а в утилите fcimport используется класс Source::Repository:: Mass:: Matcher:: DistroMap, который для сравнения имен использует базу данных DistroMap. Свои обьекты есть и для сравнения эпох, версий и релизов. Так, сравниватель релизов для бакпортирования релизы alt3 и alt2.M60T.1 считает равными (т. е. alt2.M60T.1 считается бакпортом для alt2.M60T.1). В результате сравнения имя разрешается в пару имен пакетов (например, при импорте из CPAN имени архива A-Foo соответствует имя пакета perl-A-Foo. Поэтому на самом деле в обработчик передается объект Source::Package::Pair, содержаший пару имен. Если по этим именам найдены реальные пакеты, то соответствующие объекты Source::Package также создаются и передаются в обработчик через Source::Package::Pair. В Source::Repository::Mass содержится более десятка разных критериев сравнения. Критерий newer = (такого пакета еще нет, или он есть но меньше по версии-релизу) используется для генерации пакетов. Критерий older используется в репозитории autoports для очистки репозитория от устаревших бакпортов. Критерий both используется в репозитории autoimports для выявления в нем пересечений с сизифом. Свои критерии есть для выявления пакетов, присутствующих в одном репозитории, но отсутствующих в другом и т. д. Выбранные в результате применения критерия сравнения имена исходных пакетов как объект Source::Package::Pair передаются в абстрактный обработчик. Обработчики могут быть самыми разными. В скрипте autorepo-purge обработчик удаляет выбранные критерием older пакеты. В скриптах croncopy обработчик просто передает полученное имя в incoming командой Ssh git.alt build -b $branch copy $name. Однако чаще всего используется обработчик Source::Repository::Mass:: Transform::Embedded, который обрабатывает выбранные пакеты как утилита 2-го уровня (утилита преобразования пакетов). С помощью этого обработчика на базе библиотеки Source::Repository::Mass можно создавать утилиты массового преобразования пакетов по списку имен. Соответственно, если пакет дистрибутивный, то на практике гораздо удобнее пользоваться не утилитами 2-го уровня, а соответствующей специально настроенной под этот дистрибутив утилитой 3-го уровня. Например, для импорта из mageia утилита 2-го уровня - srpmconvert-mga, утилита 3-го уровня - mgamass; для импорта из Fedora утилита 2-го уровня - srpmconvert-fc, утилита 3-го уровня - fcmass. Пример. Соберем пакет fritzing для радиотехники. $ fcmass fritzing Записан: ./OUT/fritzing-0.7.5b-alt1_2.src.rpm $ hshS ./OUT/fritzing-0.7.5b-alt1_2.src.rpm 2>&1 | tee hsh.log [ . . . ] E: Невозможно найти пакет quazip-devel $ fcmass quazip Записан: ./OUT/quazip-0.5-alt1_1.src.rpm $ hshS ./OUT/quazip-0.5-alt1_1.src.rpm 2>&1 | tee hsh.log [ . . . ] Wrote: /usr/src/RPM/SRPMS/quazip-0.5-alt1_1.src.rpm Wrote: /usr/src/RPM/RPMS/x86_64/quazip-0.5-alt1_1.x86_64.rpm Wrote: /usr/src/RPM/RPMS/x86_64/quazip-devel-0.5-alt1_1.x86_64.rpm Wrote: /usr/src/RPM/RPMS/x86_64/quazip-debuginfo-0.5-alt1_1.x86_64.rpm 8.43user 1.60system 0:17.16elapsed 58%CPU (0avgtext+0avgdata 232464maxresident)k0inputs+0outputs (0major+755716minor)pagefaults 0swaps $ hshS ./OUT/fritzing-0.7.5b-alt1_2.src.rpm 2>&1 | tee hsh.log [ . . . ] Wrote: /usr/src/RPM/SRPMS/fritzing-0.7.5b-alt1_2.src.rpm Wrote: /usr/src/RPM/RPMS/x86_64/fritzing-0.7.5b-alt1_2.x86_64.rpm Wrote:/usr/src/RPM/RPMS/x86_64/fritzing-debuginfo-0.7.5b-alt1_2.x86_64.rpm 391.82user 25.10system 6:59.92elapsed 99%CPU (0avgtext+0avgdata 1826656maxresident)k0inputs+0outputs (0major+8215063minor)pagefaults 0swaps Как видим, на этом уровне использование утилит автоматизации позволяет существенно ускорить подготовку исходных пакетов. -- Dr. Igor Vlasenko -------------------- Topology Department Institute of Math Kiev, Ukraine -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.