Moderatore: Staff

sed -e 's|/usr/lib${LIBDIRSUFFIX}/qt|/opt/qt4|g' qt.SlackBuild > qt-opt.SlackBuild# Add profile scripts
mkdir -p $PKG/etc/profile.d
sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.sh \
> $PKG/etc/profile.d/qt4.sh
sed -e "s#usr/lib/#usr/lib${LIBDIRSUFFIX}/#g" $CWD/profile.d/qt4.csh \
> $PKG/etc/profile.d/qt4.csh
chmod 0755 $PKG/etc/profile.d/*
# Add profile scripts
mkdir -p $PKG/etc/profile.d
sed -e "s#usr/lib/#PERCORSO IN /opt SOSTITUITO DA REGEX/#g" $CWD/profile.d/qt4.sh \
> $PKG/etc/profile.d/qt4-opt.sh
sed -e "s#usr/lib/#PERCORSO IN /opt SOSTITUITO DA REGEX/#g" $CWD/profile.d/qt4.csh \
> $PKG/etc/profile.d/qt4-opt.csh
chmod 0644 $PKG/etc/profile.d/*


# The infamous qt -> qt-${VERSION} link that keeps the full path out of .la files:
( cd $PKG/usr/lib${LIBDIRSUFFIX} ; ln -sf qt qt-${VERSION} )
# Link the shared libraries into /usr/lib:
( cd $PKG/usr/lib${LIBDIRSUFFIX}
for file in qt/lib/*.so* ; do
ln -sf $file .
done
)
# Link the shared libraries into /usr/lib:
( cd $PKG/usr/lib${LIBDIRSUFFIX}
for file in qt/lib/*.so* ; do
ln -sf $file .
done
)


export CC="ccache cc" CXX="ccache g++"

414N ha scritto:Hai ragione, nella regex che ho riportato si vanno a sostituire solo le occorrenze di /usr/lib${LIBDIRSUFFIX}/qt e non di /usr/lib${LIBDIRSUFFIX}.
Mea culpa
Riprova usando come pattern di sostituzione /usr/lib${LIBDIRSUFFIX}.
PS: ti consiglio di impostare il compilatore c e c++ di sistema a ccache nel fare queste prove, in modo da minimizzare i tempi di ricompilazione nel caso di errori.
Per farlo, ti basta esportare nella shell che usi per lanciare lo SlackBuild:
- Codice: Seleziona tutto
export CC="ccache cc" CXX="ccache g++"
Alcuni programmi hanno problemi nel gestire un compilatore contenente uno spazio all'interno del proprio percorso, ma non credo che cmake si spaventi per così poco.
# Put a ton of links to more "normal" places. I'd just use a prefix of /usr, but it
# creates a ton of new (and ambiguously named) /usr directories...
mkdir -p $PKG/usr/bin
( cd $PKG/opt/qt4/qt/bin
for file in * ; do
( cd $PKG/usr/bin ; ln -sf /opt/qt4/qt/bin/$file . )
done
)


414N ha scritto:Sì, mi pare sensato. Se lo SlackBuild dovesse uscire per errore proprio in quel frangente lì, controlla dove si trova la directory bin/ sotto /tmp/package-qt e sostituisci di conseguenza prima di rilanciare l'impacchettamento.
make[1]: Leaving directory `/tmp/qt-4.7.0_7abde40/translations'
cp -f -r /tmp/qt-4.7.0_7abde40/doc/html /tmp/package-qt/opt/qt4/qt/doc/html
cp: cannot stat `/tmp/qt-4.7.0_7abde40/doc/html': No such file or directory
make: [install_htmldocs] Error 1 (ignored)
cp -f -r /tmp/qt-4.7.0_7abde40/doc/qch /tmp/package-qt/opt/qt4/qt/doc/qch
cp: cannot stat `/tmp/qt-4.7.0_7abde40/doc/qch': No such file or directory
make: [install_qchdocs] Error 1 (ignored)


sed -e 's|usr/lib${LIBDIRSUFFIX}|opt/qt4|g' qt.SlackBuild > qt-opt.SlackBuildPATH="$PATH:$QT4DIR/bin"sed -i 's|$PATH:$QT4DIR/bin|$QT4DIR/bin:$PATH|' profile.d/qt4.sh
sed -i 's|$path $QT4DIR/bin|$QT4DIR/bin $path|' profile.d/qt4.csh

414N ha scritto:Figurati
Ho fatto qualche prova e guardato per bene lo SlackBuild e mi sono resto conto che alcune modifiche sono comunque necessarie, al di là delle banali sostituzioni:Con lo SlackBuild così modificato dovresti ottenere un pacchetto con tutto il contenuto in /opt (tranne i due script in /etc/profile.d).
- Usa come comando per la sostituzione il seguente:
- Codice: Seleziona tutto
sed -e 's|usr/lib${LIBDIRSUFFIX}|opt/qt4|g' qt.SlackBuild > qt-opt.SlackBuild
In questo modo, in un colpo solo risolviamo il problema del PREFIX nel quale andranno ad installarsi le qt.- Gli script per la modifica del profilo vanno bene in generale ma hanno un problema col PATH. Nello specifico, all'interno di questi script il PATH viene così modificato:
- Codice: Seleziona tutto
PATH="$PATH:$QT4DIR/bin"
che va bene per l'installazione "standard" delle qt, ma non va bene per un'installazione "affiancata", dato che i binari delle qt "originali" in /usr/bin avranno la precedenza rispetto ai binari delle qt in /opt. Visto che questi script di profilo li richiamerai solo quando necessario (ovvero quando vorrai compilare qualcosa con le nuove qt), sarebbe bene invertire questo ordine. Puoi farlo a mano oppure sempre tramite l'amico sed (supponendo di essere nella directory dello SlackBuild):
- Codice: Seleziona tutto
sed -i 's|$PATH:$QT4DIR/bin|$QT4DIR/bin:$PATH|' profile.d/qt4.sh
sed -i 's|$path $QT4DIR/bin|$QT4DIR/bin $path|' profile.d/qt4.csh- Tornando allo SlackBuild, ricordati di applicare le modifiche riguardanti i file di profilo riportate qualche post fa (cambio nome del file di destinazione e modifica dei permessi da 755 a 644).
- Rimuovi il blocco riguardante la creazione dei link in $PKG/usr/bin, che si trova proprio dopo il pezzetto che si occupa degli script di profilo. Diventa inutile visto che userai lo script in profile.d per impostare il PATH.
- Lascia il pezzetto relativo a pkgconfig subito dopo il blocco di $PKG/usr/bin, visto che qualche programma potrebbe averne bisogno.
- Rimuovi tutto il resto (icone, documentazione e file desktop) fino ad arrivare alla riga "mkdir -p $PKG/install"
Ovviamente, prima di installare (con installpkg, mi raccomando) verifica che questo sia vero.


. /etc/profile.d/qt4-new.sh
414N ha scritto:Ti sei ricordato di inserire questa riga prima di iniziare il processo di build all'interno dello SlackBuild di fcitx?
- Codice: Seleziona tutto
. /etc/profile.d/qt4-new.sh


414N ha scritto:Potresti riportare l'output del solo cmake, dopo aver caricato lo script qt4-new.sh?
fcitx-4.2.1/cmake/
fcitx-4.2.1/cmake/CMakeLists.txt
fcitx-4.2.1/cmake/COPYING-CMAKE-SCRIPTS
fcitx-4.2.1/cmake/FcitxConfig.cmake
fcitx-4.2.1/cmake/FcitxConfigVersion.cmake.in
fcitx-4.2.1/cmake/FcitxMacro.cmake
fcitx-4.2.1/cmake/FindDL.cmake
fcitx-4.2.1/cmake/FindICU.cmake
fcitx-4.2.1/cmake/FindLibexecinfo.cmake
fcitx-4.2.1/cmake/FindLibiconv.cmake
fcitx-4.2.1/cmake/FindLibintl.cmake
fcitx-4.2.1/cmake/FindLibkvm.cmake
fcitx-4.2.1/cmake/FindPthread.cmake
fcitx-4.2.1/cmake/UseDoxygen.cmake
fcitx-4.2.1/cmake/cmake_uninstall.cmake.in
...
...
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for doxygen...
-- Looking for doxygen... - found /usr/bin/doxygen
-- Looking for dot tool...
-- Looking for dot tool... - NOT found
-- Found DOXYFILE_IN: /tmp/SBo/fcitx-4.2.1/Doxyfile.in
-- Looking for include files HAVE_UNISTD_H
-- Looking for include files HAVE_UNISTD_H - found
-- Looking for include files HAVE_MALLOC_H
-- Looking for include files HAVE_MALLOC_H - found
-- Looking for include files HAVE_STDBOOL_H
-- Looking for include files HAVE_STDBOOL_H - found
-- Looking for asprintf
-- Looking for asprintf - found
-- Looking for dgettext
-- Looking for dgettext - found
-- Found Libintl: /usr/include
-- Looking for iconv_open
-- Looking for iconv_open - found
-- Performing Test ICONV_HAVE_WERROR
-- Performing Test ICONV_HAVE_WERROR - Success
-- Performing Test LIBICONV_SECOND_ARGUMENT_IS_CONST
-- Performing Test LIBICONV_SECOND_ARGUMENT_IS_CONST - Failed
-- Found Libiconv: /usr/include
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Found Pthread: /usr/include
-- Looking for backtrace
-- Looking for backtrace - found
-- Found LibExecinfo: /usr/include
-- Could NOT find Libkvm (missing: LIBKVM_INCLUDE_DIR LIBKVM_FOUND)
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so
-- Looking for XOpenDisplay in /usr/lib/libX11.so;/usr/lib/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/libX11.so
-- checking for module 'cairo-xlib >= 1.0'
-- found cairo-xlib , version 1.8.8
-- checking for module 'pangocairo >= 1.0'
-- found pangocairo , version 1.22.4
-- checking for module 'dbus-1 >= 1.1.0'
-- found dbus-1 , version 1.2.14
-- checking for module 'glib-2.0'
-- found glib-2.0, version 2.18.4
-- checking for module 'dbus-glib-1'
-- found dbus-glib-1, version 0.80
-- checking for module 'gtk+-2.0'
-- found gtk+-2.0, version 2.14.7
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt-Version 4.7.0
-- Found OpenSSL: /usr/lib/libssl.so
-- Looking for _POSIX_TIMERS
-- Looking for _POSIX_TIMERS - found
-- Found ICU header files in /usr/include
-- Found ICU libraries: /usr/lib/libicuuc.so
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/SBo/fcitx-4.2.1/build

Visitano il forum: Nessuno e 2 ospiti