1 (28.08.2011 03:58:26 отредактировано Fat-Zer)

собираю lfs, задолбался вводить однообразные команды, написал скрипт:

+ открыть спойлер

 Консоль:
lfs@goblin /mnt/lfs/usr/src $ cat ebuild.sh
#!/bin/bash

DISTDIR=$LFS/usr/src/distros/distfiles
SRCDIR=$LFS/usr/src
WORKDIR=$LFS/usr/src/build

die()
{
        echo $@
        exit -1
}

usage()
{
        echo "usage: ebuild.sh <package> <action>"
        echo "action: untar|config|compile|install"
}

untar() {
        local COMPRESSOR
        case $PF in
                *.tar.gz | *.tgz) COMPRESSOR=gzip ;;
                *.tar.bz2 | *.tbz2) COMPRESSOR=bzip2 ;;
                *.tar.xz | *.txz) COMPRESSOR=xz ;;
                *) die unknown archive ;;
        esac
        ($COMPRESSOR -dc $PD || die "decompress failed") | (tar -xC $SRCDIR || die "tar failed")
}

post_untar()
{
        S="$(ls -d $SRCDIR/$PN* | tail -1)"
        if [ -z "$S" ] ; then
                die no such source directory: $PN
        fi
        PS=$WORKDIR/$PN
        mkdir -p $PS
}

config()
{
        post_untar
        (
                cd $PS
                $S/configure $CONFIGOPTS
        ) || die configure failed
}

compile()
{
        post_untar
        (
                cd $PS
                make $MAKEOPTS $@
        ) || die make failed
}

check()
{
        compile check
}

inst()
{
        compile install
}

PN=$1
PD="$(ls  $DISTDIR/$PN* | tail -1)"

if [ -z "$PD" ] ; then
        die no such package: $PN
fi
PF="$(basename $PD)"

PS=""
S=""


case $2 in
        untar) untar; post_untar; ;;
        config) config;;

        compile) compile;;
        check) check;;
        install) inst;;
        pre_install)
                untar;
                config;
                compile; ;;
        all)
                untar;
                config;
                compile;
                check;
                inst; ;;
        *) usage; exit -1;;
esac

мне одному кажется, что я начал изобретать велосипед?  :o

95% процентов проблем находятся между клавиатурой и стулом.

Кто мягко шагает, тот далеко продвинется на своем пути (с)

//

3

Fat-Zer пишет:

собираю lfs, задолбался вводить однообразные команды, написал скрипт:

Fat-Zer пишет:

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

нет. делайте дальше так, и вы изобретёте Gentoo ab

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

4

drBatty пишет:

нет. делайте дальше так, и вы изобретёте Gentoo

я на это и намекал, думал лулзов больше будет... но то ли намёк слишком прозрачный... то ли ни кто не понял... то ли это не смешно... в общем пофиг.

раз лулзов нет, то как поприличней записать это?

PD="$(ls  $DISTDIR/$PN* | tail -1)"
95% процентов проблем находятся между клавиатурой и стулом.

5

Fat-Zer пишет:

раз лулзов нет, то как поприличней записать это?

PD="$(ls  $DISTDIR/$PN* | tail -1)"

вам просто надо проверить существование директории, но вы не знаете, что это за директория? просто непонятно...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

6

drBatty пишет:

вам просто надо проверить существование директории, но вы не знаете, что это за директория? просто непонятно...

Я думаю, эта команда выбирает последний файл из листинга директории.

Был, был и весь вышел...

7

Lupo Alberto пишет:

Я думаю, эта команда выбирает последний файл из листинга директории.

да. но с какой целью?

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

8

drBatty пишет:

да. но с какой целью?

Пока Fat-Zer всё сам не разъяснил  wink , попробую предположить, что нужно получить последнюю версию архива с исходными кодами для определённой программы.

Был, был и весь вышел...

9

Lupo Alberto пишет:

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

ну тогда это никак красивей не записать...
хотя можно конечно к каждому файлу записать в xattr атрибут user.installing=true, и устанавливать те файлы, которые успешно закачены, проверенны, но не установлены.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

10

Lupo Alberto пишет:

, попробую предположить, что нужно получить последнюю версию архива с исходными кодами для

в точку

drBatty пишет:

ну тогда это никак красивей не записать...

ясно...

drBatty пишет:

хотя можно конечно к каждому файлу записать в xattr атрибут user.installing=true, и устанавливать те файлы, которые успешно закачены, проверенны, но не установлены.

не...такое я городить не буду  smile

95% процентов проблем находятся между клавиатурой и стулом.

11

мне тут смысл вещей открываться начал:

 Консоль:

goblin linux-2.6.37 # make help
Cleaning targets:
  clean           - Remove most generated files but keep the config and
                    enough build support to build external modules
  mrproper        - Remove all generated files + config + various backup files
  distclean       - mrproper + remove editor backup and patch files

..............


вторая цель ведь с этим товарищем связана:
http://images-eu.amazon.com/images/P/3548362672.03.LZZZZZZZ.jpg

95% процентов проблем находятся между клавиатурой и стулом.

12

Fat-Zer, дык один чухонский студент слишком много смотрел быдлоящик...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

13

Fat-Zer пишет:

мне тут смысл вещей открываться начал:

кстати, это первое, что надо сделать при сборке ядра.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

14

drBatty пишет:

кстати, это первое, что надо сделать при сборке ядра.

Если подразумевается make mrproper, то не вполне очевидна обязательность его выполнения. Разве что, если захочется начать всё «с чистого листа...».

Был, был и весь вышел...

15

Lupo Alberto пишет:

Если подразумевается make mrproper, то не вполне очевидна обязательность его выполнения. Разве что, если захочется начать всё «с чистого листа...».

а как иначе?
Если хочется сохранить конфигурацию, то надо:

 Консоль:
cp .config ~/old_config
make mrproper
cp ~/old_config .config
make oldconfig

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

16

drBatty пишет:

а как иначе?

Это раньше было одним из рекомендуемых требований.
А сейчас, если у меня новые «исходники» — команда не нужна; если пересобираю новое ядро, но с незначительными изменениями, эта команда, IMHO, также избыточна. Не претендую на истину, но я ей не пользуюсь. В крайнем случае — make clean, чтобы избежать копирования конфигурационного файла туда-сюда.

Был, был и весь вышел...

17

Lupo Alberto пишет:

Не претендую на истину, но я ей не пользуюсь.

ну я не знаю. так в README написано...

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)