Шаблон для coreutils

Привет всем.

Есть патч для coreutils.
Хотелось “автоматизировать” наложение сего патча. Попробовал его наложить шаблонами. Но каменный цветок не вышел. Патч “не накладывается”

Шаблон такой:

$ head -1 /var/calculate/templates/2_ac_install_patch/sys-apps/coreutils/advcpmv-0.5-8.21.patch 
 # Calculate format=diff merge(sys-apps/coreutils)==8.21

На данный момент наложил “вручную”.

advmvcp.png

А в чем фишка, только в прогресс-баре?

Денис Терехов wrote:

А в чем фишка, только в прогресс-баре?

Именно! :slight_smile:

<<>>
Прикольно, у вас мой старый .screenrc, приятно знать что не зря когда-то выкладывал
Зацените новый, слегка допиленный вариант, с блекджеком и шл… более грамотным расположением элементов, теперь когда много окон, или длинный заголовок, часы не уйдут за пределы видимости, ну и память считается из /proc/meminfo (раньше я кажись free дергал и парсил, а это дольше), плюс батарейка сейчас считается по-другому(когда она есть).
В общем - гляньте, может даже что предложите о чем я не подумал.
<<>>
По теме - афигенная функция, ее бы, как минимум через IUSE в ebuild включить не мешало-бы. Порою такого очень не хватает.
Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.

Михаил Гагауз wrote:

Зацените новый, слегка допиленный вариант, с блекджеком и шл… более грамотным расположением элементов, теперь когда много окон, или длинный заголовок, часы не уйдут за пределы видимости, ну и память считается из /proc/meminfo (раньше я кажись free дергал и парсил, а это дольше), плюс батарейка сейчас считается по-другому(когда она есть).

Да, на одной из машин ваш вариант остался :slight_smile:

P.S. Добавил после… Новый вариант - Отличный вариант. Спасибо!

По теме - афигенная функция, ее бы, как минимум через IUSE в ebuild включить не мешало-бы. Порою такого очень не хватает.

В принципе да, флажок не помешал бы. Но пока хватит и просто “штатного” и работающего механизма накладывания патчей

Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.

CPU% на папке в 100Гб: <<“ntfs-3g”>> - 54, <<"cp gr">> 13

Да, на одной из машин ваш вариант остался :slight_smile:
P.S. Добавил после… Новый вариант - Отличный вариант. Спасибо!

так плюсаните предложение, если вариант понравился. Такой маленький знак поможет разрабам увидеть, что не одному мне этот шаблон нужен.

Но не грузит ли это процесс копирования? Видимо, это требует пересчет объёма dst, а подобная операция, в том-же mc порою занимает уйму времени.
CPU% на папке в 100Гб: “ntfs-3g” - 54, "cp gr" 13

А что по времени?
Предлагаю, ради теста, засечь время копирования чего-то тяжелого, чего-то попроще, и вообще что-то мелкое, с ключом и без.
К примеру следующим образом:

<code class="sh">
for k in '' 'g'; do
    mkdir -pv /var/calculate/tmp/test
    for d in /usr/portage /var/lib/layman/calculate /bin; do
        sync
        time cp -a${k} ${d} /var/calculate/tmp/test
    done
    rm -rf /var/calculate/tmp/test
done
</code>

Это если есть машина на которой можно все остальные службы остановить (для чистоты эксперемента).
Мне интересно на сколько может упасть скорость копирования на больших и малых количествах файлов.
Вот почему я предлагаю данные директории:

 # find /usr/portage| wc -l
154300
 # find /var/lib/layman/calculate| wc -l
17422
 # find /bin| wc -l
111

Забавные результаты
Всё таки линупс это сила! :slight_smile: Чем больше ОЗУ (на тестовой машине 8Гб), тем больше реальной пользы!

Да, <<CPU%>> в первом случае не поднялось выше 7, во втором - 25

Забавные результаты
Всё таки линупс это сила! :slight_smile: Чем больше ОЗУ (на тестовой машине 8Гб), тем больше реальной пользы!

Походу файловый кеш. я надеялся что он так сильно не скажется(и что рамы у вас поменьше).
Если честно - хз как его почистить (разве что активно начать читать все остальное, чтоб он другими данными забился), надежно почистит только ребут (опять-же из того что я знаю).

У вас есть возможность провести этот тест на машине которую можно ребутить?
Т.е. сделать так:
# Перезагрузите комп
# Как запустится - запустите скрипт

rm -rf /var/calculate/tmp/test
mkdir -pv /var/calculate/tmp/test
for d in /usr/portage /var/lib/layman/calculate /bin; do
    sync
    cmd="cp -a ${d} /var/calculate/tmp/test"
    echo "# $cmd"
    time $cmd
done 2>&1 >/tmp/result.log
wgetpaste /tmp/result.log >~/__first_run_log_url
rm -rf /var/calculate/tmp/test

# Снова перезагрузите комп
# Теперь запустите скрипт

rm -rf /var/calculate/tmp/test
mkdir -pv /var/calculate/tmp/test
for d in /usr/portage /var/lib/layman/calculate /bin; do
    sync
    cmd="cp -ag ${d} /var/calculate/tmp/test"
    echo "# $cmd"
    time $cmd
done 2>&1 >/tmp/result.log
wgetpaste /tmp/result.log >~/__second_run_log_url
rm -rf /var/calculate/tmp/test

По итогу - файлы ~/__first_run_log_url и ~/__second_run_log_url закиньте сюда

Ещё более странные результаты.

_first_run_log_url:

 # cp -a /usr/portage /var/calculate/tmp/test

real    4m47.424s
user    0m22.156s
sys     0m2.210s
 # cp -a /var/lib/layman/calculate /var/calculate/tmp/test

real    0m17.867s
user    0m2.578s
sys     0m0.267s
 # cp -a /bin /var/calculate/tmp/test

real    0m0.863s
user    0m0.021s
sys     0m0.011s

_second_run_log_url:

 # cp -ag /usr/portage /var/calculate/tmp/test/
130309 files (852.6 MiB) copied in 274.6 seconds (  1.1 MiB/s).

real    4m34.567s
user    0m33.925s
sys     0m2.539s
 # cp -ag /var/lib/layman/calculate /var/calculate/tmp/test/
13646 files (101.1 MiB) copied in 17.2 seconds (  2.0 MiB/s).

real    0m17.247s
user    0m3.727s
sys     0m0.276s
 # cp -ag /bin /var/calculate/tmp/test/
93 files (  8.9 MiB) copied in 0.8 seconds ( 10.2 MiB/s).

real    0m0.843s
user    0m0.036s
sys     0m0.012s

Да, но прежде всего меня интересует: почему при помощи шаблона - патч не наложился?

Результаты действительно странные.
Общая продолжительность выполнения с ключом -g меньше, но время пользователя в полтора раза выше, и время ядра очень незначительно выше.
Расшифровка значений утилиты time
А выполнять в другом порядке пробовали?

Да, но прежде всего меня интересует: почему при помощи шаблона - патч не наложился?

наложится.
Но это, имхо, моветон. Правильнее было-бы предложить фичреквест на https://bugs.gentoo.org

Михаил Гагауз wrote:

Результаты действительно странные.

Да, я так и сказал. Что и как показывает time знаю :slight_smile:

А выполнять в другом порядке пробовали?

Пробовал, результаты - схожи. Доли секунды не в счет.
Возможно, причиной тому “не стандартное” ядро - geek-sources

наложится.

В том и дело, что я прикладываю патчи к некоторым пакетам шаблонам. Но именно к этому пакету, патчи как-будто игнорируются.

Правильнее было-бы предложить фичреквест…

Зачем ИМ это? Захотели бы, давно приложили этот патч.
Меня интересует только “штатный” калько-механизм “патчинга”

Шаблон можно создать непосредственно в /var/calculate/templates со всеми необходимыми условиями

 # Calculate format=diff env=install ac_install_patch==on&&merge(sys-apps/coreutils)==8.21
содержимое патча

Если используете builder и assemble (эти пакеты используют шаблоны весии 2.2), то патч стоит поместить в каталог 3.1 c условием

 # Calculate append=skip cl_name==calculate-core&&cl_ver>=3.1.1

Mikhail Hiretsky wrote:

Шаблон можно создать непосредственно в /var/calculate/templates со всеми необходимыми условиями

Таким образом я уже тоже пробовал.
В результате шаблон всё равно не наложился.

Приложите пожалуйста патч (с заголовками шаблона) или заархивируйте ветку (со всеми .calculate_directory) /var/calculate/templates/2_ac_install_patch/sys-apps/coreutils/advcpmv-0.5-8.21.patch.

Попробовал я тут ваш эксперимент повторить, и вот что у меня получилось:

portage почему-то отказывается патчить пакет при сборке. почему, пока не выяснил.
но вот если сделать так:

# cl-core-patch --no-progress --pkg-version 8.21 --pkg-slot 0 --pkg-category sys-apps --pkg-path /var/calculate/tmp/portage/sys-apps/coreutils-8.21/work/ --pkg-name coreutils --verbose
 * Using patches for the coreutils package by Calculate Utilities ...
 * Appling patch advcpmv-0.5-8.21.patch
 * Calculate Utilities have changed files:
 *      coreutils-8.21/src/copy.c
 *      coreutils-8.21/src/copy.h
 *      coreutils-8.21/src/cp.c
 *      coreutils-8.21/src/mv.c

то, как видите, патч прекрасно применился. Осталось разобраться, почему оно на автомате не срабатывает.

А не. Наглейшим образом вру. Применяется патч и при сборке.

Просто разрабы кальки почему-то, на мой взгляд, не ту фазу для их применения выбрали - “compile”, хотя для этого есть специальная фаза “prepare”… Но это пусть будет на их совести :slight_smile:

Во вложении архив с моими шаблонами для применения этого патча. Пользуйтесь на здоровье :slight_smile:

ЗЫ
Архив надо распаковать в каталог /var/calculate/templates

3.1.tar.gz (390 Bytes)