problemino con sed in uno SlackBuild

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

problemino con sed in uno SlackBuild

Messaggio da samiel »

Volevo modificare il Makefile di licq
in modo che la r. 78 da:
LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error
diventasse:
LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error -liconv.
Perciò, dopo il configure ho messo:

Codice: Seleziona tutto

sed -i "s|LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error| \
LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error -liconv|g" \
Makefile
ma lo SlackBuild se ne frega allegramente
e non aggiunge -liconv.
Ora... dove sbaglio?

Grazie
M.

Avatar utente
chrix
Linux 2.x
Linux 2.x
Messaggi: 375
Iscritto il: gio 30 set 2004, 0:00
Località: Trieste
Contatta:

Messaggio da chrix »

prova a redirigere l'output sul Makefile:

# sed s/'stringa'/'stringa1'/g pippo.txt > filemodificato.txt

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio da samiel »

Ho provato mettendo:

Codice: Seleziona tutto

sed -i "s|LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error| \
LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error -liconv|g" \
Makefile > Makefile
COsì in effetti funziona, ma in maniera poco elegante,
perché fa un primo giro di configure e mi dice:
make: *** No targets. Stop.
make: *** No rule to make target `install'. Stop.
Poi ripassa tutto il configure una seconda volta e inizia a compilare.
comunque Makefile > Makefile suona un tantino assurdo...
Ci dev'essere un modo milgiore...!

Grazie
M.
[/quote]

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

prova

Codice: Seleziona tutto

sed  "s/LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error/LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error -liconv/" -i Makefile 

Avatar utente
chrix
Linux 2.x
Linux 2.x
Messaggi: 375
Iscritto il: gio 30 set 2004, 0:00
Località: Trieste
Contatta:

Messaggio da chrix »

veramente potevi fare anche:
> make.tmp
poi cat make.tmp > Makefile

è quello che intendevo...

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio da samiel »

Ho provato li suggerimento di Paoletta,
ma non funge. Il make dà il solito errore
di quando -liconv non è inserito, ergo...
sed non ha fatto i suo lavoro. Per quanto
riguarda l'ultimo suggerimento di chrix,
domani lo provo, anche se mi sembra
una procedura molto sporca per sed...

Intanto grazie
M.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

strano... sei sicuro di essere nella dir giusta quando usi sed?

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Messaggio da samiel »

Non sono più sicuro di nulla (solo relativamente
a sta cosa, naturalmente...). comunque lo SlackBuild
verrebbe fuori semplicemente così:


#!/bin/sh

CWD=`pwd`
if [ "$TMP" = "" ]; then
TMP=/tmp
fi
PKG=$TMP/package-licq
NAME=licq
VERSION=1.3.2
ARCH=i686
BUILD=1ms
if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
cd $TMP
tar xjvf $CWD/$NAME-$VERSION.tar.bz2
cd $NAME-$VERSION
chown -R root.root .
zcat $CWD/emailfix.diff.gz | patch -p1 -E --backup --verbose
chown -R root.root .
CFLAGS="-O3 -march=i686 -mtune=i686" ./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux

sed 's|LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error| \
LIBS = -lssl -lcrypto -ldl -lpthread -lnsl -lgpgme -lgpg-error -liconv|' \
-i Makefile
make
make install DESTDIR=$PKG
# Plugin (qt-gui) compilation
cd ./plugins/qt-gui
./configure --with-x --with-kde --with-qt \
--with-qt-includes=/usr/lib/qt/include \
--with-qt-libraries=/usr/lib/qt/lib \
--prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Plugin (Msn) compilation
cd ../msn
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Plugin (Auto-reply) compilation
cd ../auto-reply
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Plugin (Console) compilation
#cd ../console
#./configure --prefix=/usr \
#--program-prefix="" \
#--program-suffix="" \
#$TARGET-slackware-linux
#make
#make install DESTDIR=$PKG
# Plugin (Email) compilation
cd ../email
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Plugin (RMS) compilation
cd ../rms
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
# Plugin (Osd) compilation
cd ../osd
./configure --prefix=/usr \
--program-prefix="" \
--program-suffix="" \
$ARCH-slackware-linux
make
make install DESTDIR=$PKG
chown -R root.bin $PKG/usr/bin
( cd $PKG
find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs
strip --strip-unneeded 2> /dev/null
find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
)
cd $TMP/$NAME-$VERSION
mkdir -p $PKG/usr/doc/$NAME-$VERSION
cp -a ChangeLog INSTALL LICENSE README* \
$PKG/usr/doc/licq-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
rm -rf $PKG/tmp
cd $PKG
makepkg -l y -c n $CWD/licq-$VERSION-$ARCH-$BUILD.tgz
if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/licq-$VERSION
rm -rf $PKG
fi

Rispondi