From: Igor Vlasenko <vlasenko@imath.kiev.ua> To: devel@lists.altlinux.org Subject: [devel] I: документация по утилитам обработки репозитория. v2. Date: Fri, 26 Jul 2013 23:47:01 +0300 Message-ID: <20130726204700.GA21093@dad.imath.kiev.ua> (raw) Уважаемые коллеги, переработал документацию по утилитам уровня репозитория, к вашему вниманию. Третий уровень - утилиты обработки репозитория. От утилит второго уровня - утилит работы с пакетами -утилиты третьего уровня отличаются тем, что к ним подключены библиотеки работы с репозиториями (пакет 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.
reply other threads:[~2013-07-26 20:47 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20130726204700.GA21093@dad.imath.kiev.ua \ --to=vlasenko@imath.kiev.ua \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
ALT Linux Team development discussions This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \ devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru public-inbox-index devel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git