Резюме:
1. Чудес не бывает.
2. Если хочется странного, см. п.1
Пояснение:
Жила была оболочка (shell).
И жила она процессом в ОС.
И было у каждого процесса окружение (environment).
Было организовано оно в виде множества пар "переменная=значение".
И каждый вызываемый процесс получал копию окружения родительского процесса.
И мог вызванный процесс делать со своей копий что угодно, в том числе и менять её.
См. пред-предыдущий пункт.
VERSION=${VERSION:-1.0.1}
...
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
...
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
...
В чём разница между "name=${name:-something}" и "name=something"?
На этот простой вопрос ответ легко найти в man bash.
Теперь, вооружившись полученным знанием, легко ответить на вопрос, можно ли без изменения текста сценария заставить ./configure получить в его собственное окружение значение CFLAGS, переданное извне?
Не. SBOpkg здесь ни при чем, скорее всего. Просто не в каждом же слакбилде определены эти переменные.
Кроме того, насколько я понимаю, обычно делают наоборот (см. вызов configure в слакбилде):
Нет ему оправдания :-) Только что в рассылке промелькнула новость о новом sbo. И что ? А ни.. [ оставлено место для модератора] :-)
Как не было возможности задать свои флаги, так нет и сейчас.
Господа, sbopkg не рулит флагами (на самом деле, переменными окружения), за что купил, за то продал, тьфу, что получил, то и отдал слакбилду. Но автор откликается на просьбы, да и сам sbopkg -- перловый скрипт, добавить перед запуском слакбилда подмену чего-то на что-то (например ="$SLKCFLAGS" на ="$CUSTOMSLKCFLAGS") -- тьфу, было бы желание...
В чём разница между "name=${name:-something}" и "name=something"?
Я так понял, что в первом случае значение переменной присваивается если она пустая, а во втором по любому присваивается.
Ну так как же мне эти значения присвоить? По любому это просто но никто почему-то не хочет говорить ]:->
Вобщем никто не может просто ответить на простой вопрос, так тут таакое завернули что толку от этого ноль. А может никто и не знает? :D
[quote="bormant"]В чём разница между "name=${name:-something}" и "name=something"?
Я так понял, что в первом случае значение переменной присваивается если она пустая, а во втором по любому присваивается.
Ну так как же мне эти значения присвоить? По любому это просто но никто почему-то не хочет говорить ]:->
Вобщем никто не может просто ответить на простой вопрос, так тут таакое завернули что толку от этого ноль. А может никто и не знает? :D[/quote]
Не так, не то, и вообще делать вдоль :-)
Ну сказали же ведь, самый тупой случай - заменить sed флаги sbo на свои в его базе слакбилдов, самый умный - в самом скрипте sbo искать где запускается слакбилд и перед его запуском делать тоже самое.
Натравить sed на его базу слакбилдов. Можной оный сед добавить прямо в скрипт sbo
Натравить его много ума ненадо, но вот как его натравить-то, я в нём вообще не рублю, да и тупость это какая-то, по уму надо переменные указать чтобы любой слакбилд их слушал.
Натравить его много ума ненадо, но вот как его натравить-то, я в нём вообще не рублю, да и тупость это какая-то, по уму надо переменные указать чтобы любой слакбилд их слушал.
Этого не позволяет сама структура слакбилда, бормант же объяснил.
А по sed это к доктору - drBatty
Сам когда то хотел сделать, да лень заела, и самим sbo практически не пользуюсь
./usr/sbin/sbopkg: Bourne-Again shell script, ASCII text executable
Хоть убейте, не могу вспомнить, откуда в сознании взялся perl *CRAZY* , но sbopkg с самого начала был шелл скриптом на sh (с шебангом #!/bin/sh http://sbopkg.googlecode.com/svn/tags/0.0.1/usr/bin/sbopkg), а ныне -- с #!/bin/bash.
Прямо как про муху и Аристотеля ;)
Натравить его много ума ненадо, но вот как его натравить-то, ...
Я если просто добавить в скрипт /etc/sbopkg/sbopkg.conf: (почти в самом начале есть несколько строк, начинающихся на export ... ) строку export CFLAGS='свои флаги'? А не, так ручками каждый слакбильд, а что делать?
Я таким образом "export EDITOR=nano" установил для правки слакбилдов, а то все vim да vim, а я его не понимаю :)
vladimir.pa,
Указанное в сообщении No.3 загубит вашу идею на корню ;) После
CFLAGS="$SLKFLAGS"
плакал ваш экспорт для конкретного ./configure горючими слезами.
Это как посмотреть. Далее чисто умозрительно ;)
1) Если собирать вручную, без sbopkg, скачивая и правя отдельные слакбилды, то нет проблем.
2) Если использовать sbopkg или собственное зеркало репозитория со slackbuilds.org, появляется следующий нюанс. Допустим, поправили слакбилд. Но при следующем "sbopkg -r"/"rsync ..." к вам снова приедет прежняя его версия. Снова править? А если забудется?
3) Для sbopkg можно попробовать использовать его существующую возможность кастомизации slackbuild-ов. Осталось решить а) на что править, чтобы было боолее-менее универсально, и б) как синхронизировать .SlackBuild.local в случае обновления слакбилда в репозитории.
4) Править можно на что-то вроде:
CFLAGS="${CSLKCFLAGS:-$SLKCFLAGS}" \
CXXFLAGS="${CSLKCFLAGS:-$SLKCFLAGS}" \
./configure \
В таком случае, если в окружении есть переменная CSLKCFLAGS (от custom slk cflags), будет использовано её значение, иначе значение, присвоенное слакбилдом переменной SLKFLAGS. Вариант
CFLAGS="${CFLAGS:-$SLKCFLAGS}" \
CXXFLAGS="${CXXFLAGS:-$SLKCFLAGS}" \
./configure \
возможен, но мне кажется более рискованным: вдруг где-то встретится export CFLAGS=..., а поскольку переменная документирована именно для подобного применения, вероятность этого "вдруг" ненулевая.
5) Когда править? Очевидно, после синхронизации репозитория.
6) Чем править? find+sed вполне справятся с созданием *.SlackBuild.local, нужно только уточнить, где их создавать.