From ad98892e99f95d6eabac4bd20ac804c7bd919adb Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 6 Mar 2026 17:28:47 +0300 Subject: [PATCH] =?utf8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD?= =?utf8?q?=D0=B8=D0=B5=20distfiles=20=D0=B2=20BASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Всё продолжаю упарываться по теме distfiles в BASS проекте. Сделал большущее изменение того как всё скачивается. Раньше была директория distfiles, в которой в основном лежали .meta4 файлы, либо .do, которые клонировали репозитории и сами готовили tarball. distfiles/default.do находил .meta4 и вызывал всякое скачивание с проверкой контрольных сумм. Теперь же метаинформация хранится в "metadir" "формате". Например, чтобы скачать distfiles/dl/foo, надо создать директорию distfiles/meta/foo, где будут лежать файлы: * size, содержащий длину, ASCII десятичное число * hashes, содержащий "blake3-256 49dc..."-like строчки * urls, содержащий URL-ы, в том числе в "pri|loc|url" формате В принципе, это вся та же самая информация что и почти во всех .meta4 файлах, но только легко обрабатываемая в shell. И легко можно без XML библиотек сгенерировать .meta4 на основе подобной metadir. Вся прелесть в том, что никто же не мешает urls генерировать redo! -- distfiles/meta/less-692.tar.gz/urls.do -- echo "1|us|https://greenwoodsoftware.com/less/less-692.tar.gz" redo-ifchange ../utils/urls-for-gnu PRI=2 ../utils/urls-for-gnu less/less-692.tar.gz -- distfiles/meta/freetype-2.14.2.tar.xz/urls.do -- redo-ifchange ../utils/urls-for-savannah ../utils/urls-for-sourceforge ../utils/urls-for-savannah freetype/freetype-2.14.2.tar.xz PRI=5 ../utils/urls-for-sourceforge freetype freetype2/2.14.2/freetype-2.14.2.tar.xz где утилиты для генерирования ссылок выглядят как-то так: #!/bin/sh -e file=$1 [ -n "$file" ] PRI=${PRI:-1} cat <