From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <7345237b-9064-d20b-15a9-5f4b92b03ce9@basealt.ru> Date: Mon, 15 Nov 2021 18:02:56 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.3.0 Content-Language: ru To: devel@lists.altlinux.org References: <20211113212653.GT26441@imap.altlinux.org> <20211115111416.vael7zgbqjt3ibrx@titan.localdomain> <29fa8faf-cc8c-67ea-d6bb-6fb9cbd0dfd1@basealt.ru> <20211115132109.bq5t2jhg4lzveeox@titan.localdomain> From: Anton Farygin Organization: BaseALT In-Reply-To: <20211115132109.bq5t2jhg4lzveeox@titan.localdomain> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [devel] [devel-ports] renoarch: noarch.rpm -> src.rpm 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: Mon, 15 Nov 2021 15:02:57 -0000 Archived-At: List-Archive: List-Post: On 15.11.2021 16:21, Ivan A. Melnikov wrote: > On Mon, Nov 15, 2021 at 03:15:18PM +0300, Anton Farygin wrote: >> On 15.11.2021 14:14, Ivan A. Melnikov wrote: >>> К тому же, как тут пишет рядом rider@, эту задачу сложно >>> формализовать. Зависимости могут быть неточными (когда >>> написано BR: foo, а на самом деле требуется foo > 2.0), >>> специфичными для платформы и так далее. Циклы надо как-то >>> разрывать опять же. >> На самом деле нужно написать solver, который будет разделять бинарные >> жёсткие зависимости и сборочные зависимости. >> >> unmet'ы при сборке вылезают из-за бинарых (библиотечных) зависимостей и >> именно по ним исходные пакеты надо упорядочивать. >> >> Мы сделали попытку написать такой solver (oneandhalf опция в rdb), но циклы >> оно всё равно рвать не умеет. >> >> По идее можно попробовать добавить параметр к запросу, который позволит >> порвать циклы вручную. Или опцию, которая будет искать и рвать все >> циклические зависимости и сортировать без их учёта). >> >> Последнее мне нравится больше всего, т.к. всё равно приходится с этими >> пакетами что-то делать для сборки. > У меня тоже сделана подобная штука. Сначала определяется множество > пакетов исходного репозитория (скажем, Sisyphus x86_64), такое, что > их совместная сборка в целевой репозиторий > (скажем, sisyphus_riscv64) не порождает новых > анметов ни по сборочным, ни по бинарным зависимостям, ну и естественно > содержащее нужные пакеты. Потом происходит попытка упорядочить эти > для задачи пакеты по принципу "пакет А собирается > раншье пакета Б, если результаты сборки пакета А попадают в сборочный > chroot пакета Б". Сборочный chroot обсчитывается нагло замыканием > сборочных зависимостей через обход в ширину графа зависимостей > в исходном репозитории, совсем не так, как > это делает apt, но для моих целей примерного сходства достаточно. > > Циклы при упорядочивании рвутся где придётся, но записываются > и показываются отдельно от списка пакетов, чтобы можно было > оценить ужас происходящего и что-то с этим сделать. > > Есть опции вида "игнорировать зависимость foo от bar" (чтобы > порвать какой-то цикл в конкретном месте) и "игнорировать > все зависимости на foo". Последняя более полезна и спользуется > почти всё время. > > Чаще всего это даже работает. А давай сравним вывод ? curl 'https://rdb.altlinux.org/api/package/what_depends_src?packages=ocaml&branch=sisyphus&depth=1&dptype=both&finite_package=false&onea ndhalf=true'|jq  -r '.dependencies[].name' Как у тебя получилось отсортировать все пакеты, которые зависят по сборки и runtime от ocaml (включая те, что из него собираются) ?