• cvsdate.h

    From Semen Panevin@2:5025/121 to All on Tue Oct 17 18:08:12 2023
    Доброго здоровьица тебе, All!

    При билде husky cvsdate.h генерится только при make update
    При этом делается обязательный pull/checkout из ремоута сначала, хотя для получения даты используется потом только git log, которому remote вроде бы и не нужен.

    ельзя ли как-то отделить pull/checkout от генерации cvsdate.h ?
    fetch/checkout делается средствами пакетного менеджера Gentoo, саму сборку хочется сделать полностью offline, но для этого приходится героически костылить мейкфайл...

    С наилучшими пожеланиями, Семён.

    ... езаменимых людей нет, но исключением стать хочется... (c)...
    --- GoldED+/LNX 1.1.5-b20231008 (Linux 6.1.53-gentoo-r1 iF6M10)
    * Origin: IceLAN (2:5025/121)
  • From Michael Dukelsky@2:5020/1042 to Semen Panevin on Tue Oct 17 20:48:08 2023
    Привет, Semen!

    17 October 2023 18:08, Semen Panevin послал(а) письмо к All:

    При билде husky cvsdate.h генерится только при make update
    При этом делается обязательный pull/checkout из ремоута сначала, хотя
    для получения даты используется потом только git log, которому remote вроде бы и не нужен.

    ельзя ли как-то отделить pull/checkout от генерации cvsdate.h ? fetch/checkout делается средствами пакетного менеджера Gentoo,

    А нельзя попросить его не делать pull?

    саму
    сборку хочется сделать полностью offline, но для этого приходится героически костылить мейкфайл...

    е знаю, зачем надо героически костылить мейкфайл. Сборка делается полностью оффлайн так:
    make -j NN depend && make -j NN

    Здесь NN - это число параллельных веток исполнения мейкфайла.

    Желаю успехов, Semen!
    За сим откланиваюсь, Michael.

    ... node (at) f1042 (dot) ru
    --- GoldED+/LNX 1.1.5-b20231008
    * Origin: ==<<.f1042.ru.>>== (2:5020/1042)
  • From Semen Panevin@2:5025/121 to Michael Dukelsky on Tue Oct 17 21:34:28 2023
    Доброго здоровьица тебе, Michael!

    Tuesday October 17 2023 20:48, Michael Dukelsky писал Semen Panevin:

    ельзя ли как-то отделить pull/checkout от генерации cvsdate.h ?
    fetch/checkout делается средствами пакетного менеджера Gentoo,
    А нельзя попросить его не делать pull?
    у так я это и прошу :) е делать pull при make update (это единственный способ сгенерить csvdate.h, ну кроме как делать это "руками", украв код из мейкфайла... Или я чего-то недопонял в этой жизни)

    саму
    сборку хочется сделать полностью offline, но для этого приходится
    героически костылить мейкфайл...

    е знаю, зачем надо героически костылить мейкфайл. Сборка делается полностью оффлайн так: make -j NN depend && make -j NN
    Ииии... при этом нету csvdate.h т.к. он генерится только при make update (который вызывается из build.sh, если его использовать, и не передать ему опцию --offline)
    И ничё не работает.

    Это поведение даже в доках описано, что csvdate.h генерится только при update (который мне не нужен, т.к. у меня скачанные репы и так up-to-date, и при ./build.sh --offline всё равно не вызывается)

    Поскольку в Gentoo ebuild за fetch+checkout отвечает фаза src_unpack, которая ничего не знает про build.sh поскольку его ещё нету пока не скачана репа huskybase - эта фаза сама фетчит и чекаутит все нужные репы. И build.sh вообще не используется, разруливание зависимостей делается средствами управления зависимостями Gentoo а не ворнингами из build.sh.

    А поскольку src_unpack уже обновила и зачекаутила все нужные для сборки репы - эта фаза из make update становится бессмысленной и беспощадной.

    Здесь NN - это число параллельных веток исполнения мейкфайла.
    Что делает параметр -j я в курсе :)

    В Gentoo сборка делается в песочнице, в которую исходники попадают через фазу src_unpack. И ходить из уже спопулированной песочницы в remote в других фазах сборки - моветон и может быть вообще запрещено настройками безопасности.

    е, ну я-то конечно уже закостылил в своём Gentoo ebuild Makefile с помощью sed, но хочется, чтобы такая возможность была более штатной. Gentoo не единственная система, работающая с исходниками, а не готовыми бинарными пакетами. Давно не имел дела с фрёй, там от портов ещё не отказались? Если нет - то там похожие грабли могут быть...

    Вторая проблема, описанная в следующем письме, про gzip, более серьёзная. Gentoo предлагает возможность с помощью фича-флагов пакетного менеджера включать-выключать автоматическое сжатие манов-доков и автоматический стрип бинарей на этапе мержа собранных и заинсталенных в песочнице исходников в корень системы, и очень ругается, если на этапе сборки оно было уже сжато или стрипнуто, и очень просит так не делать. И позволяет законфигурить желаемый метод упаковки (bzip2 по дефолту). А gzip в мейкахфайлах хаски ну прям гвоздями прибит :( strip в общем-то тем же sed-ом относительно легко костылится...

    С наилучшими пожеланиями, Семён.

    ... Жизнь принуждает человека ко многим добровольным действиям... (c)...
    --- GoldED+/LNX 1.1.5-b20231008 (Linux 6.1.53-gentoo-r1 iF6M10)
    * Origin: IceLAN (2:5025/121)
  • From Michael Dukelsky@2:5020/1042 to Semen Panevin on Tue Oct 17 22:58:50 2023
    Привет, Semen!

    17 October 2023 21:34, Semen Panevin послал(а) письмо к Michael Dukelsky:

    ельзя ли как-то отделить pull/checkout от генерации cvsdate.h ?
    fetch/checkout делается средствами пакетного менеджера Gentoo,
    А нельзя попросить его не делать pull?
    у так я это и прошу :) е делать pull при make update (это
    единственный способ сгенерить csvdate.h, ну кроме как делать это
    "руками", украв код из мейкфайла... Или я чего-то недопонял в этой
    жизни)

    Я имел в виду, что может можно не делать git pull средствами твоего пакетного менеджера, а сделать это с помощью make update. еужто в этом Gentoo всё прибито гвоздями и ничего нельзя сконфигурировать? Как-то не верится.

    саму
    сборку хочется сделать полностью offline, но для этого
    приходится героически костылить мейкфайл...

    е знаю, зачем надо героически костылить мейкфайл. Сборка
    делается полностью оффлайн так: make -j NN depend && make -j NN
    Ииии... при этом нету csvdate.h т.к. он генерится только при make
    update (который вызывается из build.sh, если его использовать, и не передать ему опцию --offline) И ничё не работает.

    Это поведение даже в доках описано, что csvdate.h генерится только при update (который мне не нужен, т.к. у меня скачанные репы и так
    up-to-date, и при ./build.sh --offline всё равно не вызывается)

    Поскольку в Gentoo ebuild за fetch+checkout отвечает фаза src_unpack, которая ничего не знает про build.sh поскольку его ещё нету пока не скачана репа huskybase - эта фаза сама фетчит и чекаутит все нужные
    репы.

    Зачем тут checkout вообще не понял. Пропусти эту фазу. Поставь вместо неё make update.

    И build.sh вообще не используется, разруливание зависимостей
    делается средствами управления зависимостями Gentoo а не ворнингами из build.sh.

    Какое ещё управление зависимостями с помощью предупреждений из build.sh??? Ты о чём?

    А поскольку src_unpack уже обновила и зачекаутила все нужные для
    сборки репы - эта фаза из make update становится бессмысленной и беспощадной.

    Пропусти src_unpack или переконфигури её.

    В Gentoo сборка делается в песочнице, в которую исходники попадают
    через фазу src_unpack. И ходить из уже спопулированной песочницы в
    remote в других фазах сборки - моветон и может быть вообще запрещено настройками безопасности.

    Сборка разбита на два чётко разделённых этапа. а первом обновляются исходники и для этого нужен доступ в сеть. а втором происходит собственно сборка и на этом этапе сеть не нужна и не используется. Если ты посмотришь на сборку rpm, то увидишь, что там второй этап происходит в chroot со сменой пространств имён, в том числе и сетевого. Так что не надо ломиться в открытую дверь.

    Желаю успехов, Semen!
    За сим откланиваюсь, Michael.

    ... node (at) f1042 (dot) ru
    --- GoldED+/LNX 1.1.5-b20231008
    * Origin: ==<<.f1042.ru.>>== (2:5020/1042)
  • From Semen Panevin@2:5025/121 to Michael Dukelsky on Wed Oct 18 07:14:14 2023
    Доброго здоровьица тебе, Michael!

    Tuesday October 17 2023 22:58, Michael Dukelsky писал Semen Panevin:

    А нельзя попросить его не делать pull?
    у так я это и прошу :) е делать pull при make update (это
    единственный способ сгенерить csvdate.h, ну кроме как делать это
    "руками", украв код из мейкфайла... Или я чего-то недопонял в
    этой жизни)

    Я имел в виду, что может можно не делать git pull средствами твоего пакетного менеджера, а сделать это с помощью make update.
    Где его взять? :) Чтобы его сделать - нужно сначала выкачать huskybase. Сам себя он не выкачает :)

    еужто в
    этом Gentoo всё прибито гвоздями и ничего нельзя сконфигурировать?
    Как-то не верится.
    Как раз в нём сконфигурировано, где должны храниться клоны гит репозиториев для пакетов, куда должны распаковываться рабочие копии указанных бранчей. А huskybase/Makefile про это ничего не знает.

    Более того, в Gentoo встроена опция отключения online операций при работе с EVCS, т.е. я одной переменной могу ему сказать не ходить в remote, не фетчить обновы. При этом ничто не мешает ходить между бранчами локальных клонов уже скачанных реп. о вот husky не умеет при этом перегенерить csvdate.h т.к. он это делает только при make update который хочет сходить в remote сначала.

    В общем в Gentoo как раз всё более гибко сделано, а текущий build flow хаски не позволяет эту гибкость реализовать в полной мере штатными средствами. о большую часть таки можно за-sed-ить :)

    И build.sh вообще не используется, разруливание зависимостей
    делается средствами управления зависимостями Gentoo а не
    ворнингами из build.sh.

    Какое ещё управление зависимостями с помощью предупреждений из
    build.sh??? Ты о чём?

    if [ -n "$(grep 'PROGRAMS=' $huskymak | grep 'hpt')" ] && \
    [ -n "$(grep '^PERL=1' $huskymak)" ] && \
    ( [ -z "$(perl -v 2>&1 | grep 'This is perl')" ] || \
    [ -z "$(perl -MExtUtils::Embed -e 'print "Yes"' 2>&1 | grep 'Yes')" ] ) then
    printf '%s\n' "To build hpt with Perl, you must install Perl" >&2
    die "and Perl module 'ExtUtils::Embed'"
    fi

    у и ещё парочка рядом. Может я конечно неправильно это назвал "управлением зависимостей" :)

    А поскольку src_unpack уже обновила и зачекаутила все нужные для
    сборки репы - эта фаза из make update становится бессмысленной и
    беспощадной.
    Пропусти src_unpack или переконфигури её.
    Злой ты :) Хочешь чтобы я Gentoo превратил в какую-нибудь шлакварь :)

    В Gentoo сборка делается в песочнице, в которую исходники
    попадают через фазу src_unpack. И ходить из уже спопулированной
    песочницы в remote в других фазах сборки - моветон и может быть
    вообще запрещено настройками безопасности.

    Сборка разбита на два чётко разделённых этапа. а первом обновляются исходники и для этого нужен доступ в сеть.
    Да понимаю я как работает build.sh и make update, у них есть некоторое количество ограничений. К примеру, захардкоженный base path к репозиториям, что не позволяет использовать зеркала или форки, не позволяет работать оффлайн с разными бранчами средствами пакетного менеджера.

    В общем не позволят оно в текущем виде полностью следовать Gentoo way...

    Поэтому make update я не хочу использовать для скачивания и распаковки нужных репозиториев, хочу идти gentoo way, но вот cvsdate.h сама себя не сгенерит :(


    С наилучшими пожеланиями, Семён.

    ... Ребята, давайте жить дружно! (с) Леопольд
    --- GoldED+/LNX 1.1.5-b20231008 (Linux 6.1.53-gentoo-r1 iF6M10)
    * Origin: IceLAN (2:5025/121)