From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS autolearn=no autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:date:from:to:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to; bh=OqDbuFUuGy93Dv28CrukXWT5ZwRXdaBtt7bpiwQMYYc=; b=DR+eDWq5CkmRro+1gVf5agB8/bNEJjcYdBxIVELgyht2zW6jb5D+0CVVHIk3h/hNG8 kO7A+YuWwvJcytCIMa0K53zsB/IPaX631PU25q3YAP3tringxVt5EWV963Sx64oXu5Vk BhQ1TwvydcsQZOQNerfHWc2tRGB0NKqx/PuyDxZIguj5KwD5IEapysZLPfTVpzAK/2w4 NY/REx03zO9/VG/GZl5h2lEvNrGhK/N5mGT8CO10csKgMtCQw+EgTRygpvREsOWDOOKo nzw3kVj4q/a+3hw8jKmwaLmbSvpyKxfhcu2y2/9YNm3a1+jLThH0HyVfwY4md3DrOfWj VxEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:date:from:to:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to; bh=OqDbuFUuGy93Dv28CrukXWT5ZwRXdaBtt7bpiwQMYYc=; b=T1UAKbDxmXCSP0zNu3gb8cGpXLv6LJtx7xJRZeDS+FVwLyfpRzMtlVnPh17vkJybV6 saovNHmJAGvW1goHEzfcTsNYFXe7JsXi6axnT1mvC713Zc9Rk4o1uIQvxY3OIe6motB9 buaicWGBZgNUwM6kmgF6Sd+rYnlGajknHj359KREriqCN5ErUlZQFTyURdjMLkKDAF5E KTpsdvRCCZIoh/a5G9CA1h/cRotmioSvfV08BstGXDNvvatipS4owebehsHDQf1ItKqg J2YHMY3y24uxTJybWYf9lig6EfZANdnZyuLeel7PLrx7Nr3bYOBdlFm6vEvXnHnfoovf xkow== X-Gm-Message-State: AOAM533iqrbmt4TnE+wyQqi3faGzw8dM8zE0TkQRsz+320lHdbZ0X6nk lTVCavkr1U0ZfbNdvOb6x0ACOF58olo= X-Google-Smtp-Source: ABdhPJxa3glmVihB5N4CPejgnfJg5JQ61WVQufQkdSl09Vz4MCW8M/2ZvFJZVii+Caz+TfSopxPQfg== X-Received: by 2002:a05:6512:228a:: with SMTP id f10mr36747360lfu.13.1636982471185; Mon, 15 Nov 2021 05:21:11 -0800 (PST) Sender: "Ivan A. Melnikov" Date: Mon, 15 Nov 2021 17:21:09 +0400 From: "Ivan A. Melnikov" To: ALT Linux Team development discussions Message-ID: <20211115132109.bq5t2jhg4lzveeox@titan.localdomain> References: <20211113212653.GT26441@imap.altlinux.org> <20211115111416.vael7zgbqjt3ibrx@titan.localdomain> <29fa8faf-cc8c-67ea-d6bb-6fb9cbd0dfd1@basealt.ru> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <29fa8faf-cc8c-67ea-d6bb-6fb9cbd0dfd1@basealt.ru> 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 13:21:13 -0000 Archived-At: List-Archive: List-Post: 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". Последняя более полезна и спользуется почти всё время. Чаще всего это даже работает. -- wbr, iv m.