slackware.ru
http://www.slackware.ru/forum/

TDE/Trinity & KDE3 for Slackware
http://www.slackware.ru/forum/viewtopic.php?f=43&t=1918
Страница 8 из 12

Автор:  Algierd [ 22 дек 2017 23:41 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

По-поводу предыдущей проблемы, нужна помощь умных людей -bormant'а, sunjob'a и других мудрецов! Решил всё-таки добить x86_64 сборку которая падала из-за ошибка создания config.ci. В слакбилде tdebase дописал 2 ядра свего камня JOB_NUM="-j3" и внезапно пакет собрался без ошибок. Странно, ведь оно в глобальном конфиге TDE.options у меня уже настроено :du_ma_et: Возможно оно работает не полностью или что-то его переопределяет? Гляньте на всякий случай слакбилд, может чего подскажите, что можно, если нужно, поменять?

Код:
# Set the global config option variables if they are present. Only helpful when
# building all tde packages
if [ -r ../../TDE.options ]; then
  . ../../TDE.options
fi
# Global options may be overridden here (if need be):
if [ -r ./local.options ]; then
  . ./local.options
fi
# -----------------------------------------------------------------------------

# Set initial variables:
ARCHIVE_FORMAT=${ARCHIVE_FORMAT:-"tar.bz2"}
BUILD=${BUILD:-"1"}
JOB_NUM="" # Defined in the options file
LD_LIBRARY_PATH=""  # Will be defined later on
PRGNAM="tdebase"
PREFIX=${PREFIX:-"/opt/trinity"}
MANDIR=${MANDIR:-"${PREFIX}/man"}
SOURCE_SUBDIR=${SOURCE_SUBDIR:-"."}
SRCVER=${SRCVER:-"R14.0.4"}
TAG=${TAG:-"ch"}
TAR_OPTION=${TAR_OPTION:-"-xjvf"}
VERSION=$(echo ${SRCVER} | tr '-' '.')

DOCS="AUTHORS COPYING* HOW.TO.BUILD INSTALL README* TRINITY.RELEASE"

# Set the following variable to tgz if you wish to build a package for a
# Slackware version < 13.0.
PKG_FORMAT=${PKG_FORMAT:-"txz"}

# Where do we look for sources?
SRCDIR=$(cd $(dirname $0); pwd)

# Place to build (TMP) package (PKG) and output (OUTPUT) the program:
CWD=`pwd`
TMP=${TMP:-/tmp/build}
PKG=${TMP}/package-${PRGNAM}
OUTPUT=${OUTPUT:-/tmp}

SOURCE="${SRCDIR}/${PRGNAM}-${SRCVER}.${ARCHIVE_FORMAT}"

##
## --- with a little luck, you won't have to edit below this point --- ##
##

# Determine target architecture
if [ -z "${MARCH}" ]; then
   MARCH=`uname -m`
fi
if [ -z "${ARCH}" ]; then
   case "${MARCH}" in
      i?86)
         export ARCH=i486
      ;;
      arm*)
         export ARCH=arm
      ;;
      *)
         export ARCH=${MARCH}
      ;;
   esac
fi

echo -e "\E[0;32m+-----------------------+\E[0;0m"
echo -e "\E[0;32m|     ARCH=${ARCH}      |\E[0;0m"
echo -e "\E[0;32m+-----------------------+\E[0;0m"

case "${ARCH}" in
   arm)
      # Use Embedded Application Binary Interface. EABI was created as a common
      # binary interface that should permit code compiled with a specific
      # toolchain/compiler to be linked to projects compiled with another one.
      # arm-slackware-linux-gnueabi and arm-slackware-linux are different
      # targets.
      BUILD_ARCH=${ARCH}"-slackware-linux-gnueabi"
      SLKCFLAGS="-O2"; SLKLDFLAGS=""; LIBDIRSUFFIX=""
   ;;
   i486)
      BUILD_ARCH=${ARCH}"-slackware-linux"
      SLKCFLAGS="-O2 -march=i486 -mtune=i686"; SLKLDFLAGS="-L/usr/lib -ldl"; LIBDIRSUFFIX=""
   ;;
   i686)
      BUILD_ARCH=${ARCH}"-slackware-linux"
      SLKCFLAGS="-O2 -march=i686 -mtune=i686"; SLKLDFLAGS="-L/usr/lib -ldl"; LIBDIRSUFFIX=""
   ;;
   powerpc)
      BUILD_ARCH=${ARCH}"-slackware-linux"
      SLKCFLAGS="-O2"; SLKLDFLAGS=""; LIBDIRSUFFIX=""
   ;;
   s390)
      BUILD_ARCH=${ARCH}"-slackware-linux"
      SLKCFLAGS="-O2"; SLKLDFLAGS=""; LIBDIRSUFFIX=""
   ;;
   x86_64)
      BUILD_ARCH=${ARCH}"-slackware-linux"
      SLKCFLAGS="-O2 -fPIC"; SLKLDFLAGS="-L/usr/lib64"; LIBDIRSUFFIX="64"
   ;;
esac

# Exit the script on errors. Must go here for architecture detection to work.
set -e
trap 'echo "$0 FAILED on line $LINENO!" | tee ${OUTPUT}/${PRGNAM}_error.log' ERR
# Catch uninitialized variables:
set -u

# Prepare a sane build environment:
mkdir -p ${TMP}/tmp-${PRGNAM}  # Location to build the source
rm -rf ${TMP}/tmp-${PRGNAM}/*  # Remove the remnants of previous build and continue
mkdir -p ${PKG}                # Place for the package to be built
rm -rf ${PKG}/*                # We always erase old package's contents
mkdir -p ${OUTPUT}             # Place for the package to be saved

# Source files availability:
if ! [ -f ${SOURCE} ]; then
   # Source archive not present.
   echo "File '$(basename ${SOURCE})' not available... aborting the build."
   exit -1
fi

# --- PACKAGE BUILDING ---
echo -e "\E[0;32m+-----------------------+\E[0;0m"
echo -e "\E[0;32m| Start SlackBuild ${PRGNAM} |\E[0;0m"
echo -e "\E[0;32m+-----------------------+\E[0;0m"

cd ${TMP}/tmp-${PRGNAM}

echo -e "\E[0;32m+-----------------------------------------------------+\E[0;0m"
echo -e "\E[0;32m|  Extracting the source archive(s) for ${PRGNAM}...  |\E[0;0m"
echo -e "\E[0;32m+-----------------------------------------------------+\E[0;0m"
tar ${TAR_OPTION} ${SOURCE}
[ "${SRCVER}" != "${VERSION}" ] && mv ${PRGNAM}-${SRCVER} ${PRGNAM}-${VERSION}
# Enter the source root directory (Changes with TDE release)
case ${VERSION} in
   3.5.13.2)
      DIR_SRC=${PRGNAM}-${VERSION}
   ;;
   R14.0.*)
      DIR_SRC=${SOURCE_SUBDIR}/${PRGNAM}
   ;;
esac
cd ${DIR_SRC}

# Change user permission
chown -R root:root .
find . \
 \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
 -exec chmod 755 {} \; -o \
 \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
 -exec chmod 644 {} \;

zcat $CWD/fix-client.diff.gz | patch -p1 --verbose || exit 1

#for p in $CWD/patches/*.patch.gz; do
#    zcat $p | patch --verbose -p1
#done

echo -e "\E[0;32m+-----------------------+\E[0;0m"
echo -e "\E[0;32m|      Building ...     |\E[0;0m"
echo -e "\E[0;32m+-----------------------+\E[0;0m"

# Clean cmake cache
find . -name CMakeCache.txt -exec rm {} \;

# Create a directory where to build source (cmake wants the name to be build).
cd ${TMP}/tmp-${PRGNAM}
mkdir build
cd build

# Comment out the compton-tde build requirement. It seems Slackware does not
# support the TDE fork. It does support the latest official compton release
# by the way. Were You willing to try it download the SlackBuild script from
# www.slackbuilds.org
( cd ${TMP}/tmp-${PRGNAM}/${DIR_SRC}; sed -i "twin/CMakeLists.txt" -e "/compton-tde/ s/^/#/" )

# Add temporary paths to handle new libraries during build
export LD_LIBRARY_PATH=${PREFIX}/lib${LIBDIRSUFFIX}:${PREFIX}/lib${LIBDIRSUFFIX}/trinity:${LD_LIBRARY_PATH}
export LIBDIR=${PREFIX}/lib${LIBDIRSUFFIX}
export MANDIR
export PATH=${PREFIX}/bin:${PATH}
export PKG_CONFIG_PATH=${PREFIX}/lib${LIBDIRSUFFIX}/pkgconfig:${PKG_CONFIG_PATH}
export PREFIX
export QTDIR=${PREFIX}
export SYSCONFDIR=/etc/trinity
# Enable only one of the following:
# export DEBUG_AUTOTOOL_OPT="--disable-debug"
export DEBUG_CMAKE_OPT=""

cmake ${TMP}/tmp-${PRGNAM}/${DIR_SRC} \
   -DCMAKE_C_FLAGS:STRING="${SLKCFLAGS}" \
   -DCMAKE_CXX_FLAGS:STRING="${SLKCFLAGS} $DEBUG_CMAKE_OPT" \
   -DCMAKE_INSTALL_PREFIX=${PREFIX} \
   -DCMAKE_SKIP_RPATH="OFF" \
   -DLIB_SUFFIX=${LIBDIRSUFFIX} \
   -DMAN_INSTALL_DIR=${MANDIR} \
   -DSYSCONF_INSTALL_DIR=${SYSCONFDIR} \
   -DBUILD_CRASHTEST=ON \
   -DWITH_ARTS=ON \
   -DWITH_HAL=OFF \
   -DWITH_LDAP=ON \
   -DWITH_LIBRAW1394=ON \
   -DWITH_OPENEXR=ON \
   -DWITH_PAM=OFF \
   -DWITH_GCC_VISIBILITY=OFF \
   -DWITH_SAMBA=ON \
   -DWITH_SASL=ON \
   -DWITH_SHADOW=ON \
   -DWITH_TDEHWLIB=ON \
   -DWITH_USBIDS="/usr/share/hwdata/usb.ids" \
   -DWITH_XCOMPOSITE=ON \
   -DWITH_XCURSOR=ON \
   -DWITH_XDAMAGE=ON \
   -DWITH_XDMCP=ON \
   -DWITH_XEXT=ON \
   -DWITH_XFIXES=ON \
   -DWITH_XINERAMA=ON \
   -DWITH_XRANDR=ON \
   -DWITH_XRENDER=ON \
   -DWITH_XTEST=ON \
   -DBUILD_ALL=ON \
   2>&1 | tee ${OUTPUT}/${PRGNAM}_configure.log

# Build using make
make VERBOSE=1 ${JOB_NUM} 2>&1 | tee ${OUTPUT}/${PRGNAM}_make.log
make install DESTDIR=${PKG} 2>&1 | tee ${OUTPUT}/${PRGNAM}_install.log

# Strip binaries
find ${PKG} | xargs file | grep -e "executable" -e "shared object" \
    | grep ELF | cut -f 1 -d: | xargs strip --strip-unneeded 2> /dev/null

# Enter sources directory.
cd ${TMP}/tmp-${PRGNAM}/${DIR_SRC}

# Add some documentation to the package:
mkdir -p ${PKG}/usr/doc/${PRGNAM}"-"$VERSION
cp -a ${DOCS} ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
chown -R root:root ${PKG}/usr/doc/${PRGNAM}"-"${VERSION}
find ${PKG}/usr/doc -type f -exec chmod 644 {} \;

# Add man pages
if [ -d ${PKG}/${MANDIR} ]; then
   gzip -9 $PKG/${MANDIR}/man?/*
fi

# Add a package description.
mkdir -p ${PKG}/install
cat ${SRCDIR}/slack-desc > ${PKG}/install/slack-desc
cat ${SRCDIR}/doinst.sh | sed -e "s|DESKTOP|trinity|g" > ${PKG}/install/doinst.sh

# Add some configuration files / scripts needed by TDE.
mkdir -p ${PKG}/etc/trinity
mkdir -p ${PKG}/etc/rc.d
mv ${PKG}/${PREFIX}/share/config/tdm ${PKG}/etc/trinity/tdm
( cd ${PKG}/${PREFIX}/share/config ; ln -sf /etc/trinity/tdm tdm )

# Set sane permissions for the include files.
if [ -d ${PKG}/${PREFIX}/include ]; then
   find ${PKG}/${PREFIX}/include -type f -exec chmod 0644 {} \;
fi

# Ensure correct login manager session file is available.
mkdir -p ${PKG}/usr/share/apps/tdm/sessions
cp ${PKG}/${PREFIX}/share/apps/tdm/sessions/tde.desktop ${PKG}/usr/share/apps/tdm/sessions/

cat ${SRCDIR}/rc.4 | sed "s|PREFIX/|${PREFIX}/|g" > ${PKG}/etc/rc.d/rc.4.new

# In the old days these files were copied over existing ones. Folks who
# customized these files got smacked. Now they are created as *.new files.
# The doinst.sh install script will either remove the .new extension or leave
# things be for the user to decide.
mkdir -p ${PKG}/etc/X11/xinit ${PKG}/etc/profile.d
cat ${SRCDIR}/xinit/xinitrc.trinity | sed "s|PREFIX|${PREFIX}|g" > ${PKG}/etc/X11/xinit/xinitrc.trinity.new
cat ${SRCDIR}/profile.d/trinity.sh  | sed "s|PREFIX|${PREFIX}|g" > ${PKG}/etc/profile.d/trinity.sh.new
cat ${SRCDIR}/profile.d/trinity.csh | sed "s|PREFIX|${PREFIX}|g" > ${PKG}/etc/profile.d/trinity.csh.new
# Assign some sane permissions to the scripts.
chmod 755 ${PKG}/etc/X11/xinit/xinitrc.*.new ${PKG}/etc/profile.d/*.*.new

# Copy desktop environment start script.
if [[ -f ${PKG}/${PREFIX}/bin/starttde ]]; then
   mkdir -p ${PKG}/usr/bin
   cp ${PKG}/${PREFIX}/bin/starttde ${PKG}/usr/bin/starttde.new
fi
mkdir -p ${PKG}/usr/bin
cat ${SRCDIR}/xinit/xwmconfig > ${PKG}/usr/bin/xwmconfig.new
chmod +x ${PKG}/usr/bin/xwmconfig.new

#==============================================================================
# Subjective Default Usability Tweaks
# Enabled only for personal build. Otherwise default options will be used
if [[ "sg" = ${TAG} ]] ; then
   # Change the konsole defaults to look like the standard Linux console.
   # The default konsole uses the BlackOnWhite.schema while the config file
   # uses the Linux.schema and adds some useful keyboard shortcuts
   cat ${SRCDIR}/config/konsolerc > ${PKG}/${PREFIX}/share/config/konsolerc
   chmod 644 ${PKG}/${PREFIX}/share/config/konsolerc

   # Set some anti-aliasing defaults
   # Set a sane double-click interval ([KDE]DoubleClickInterval=700)
   # Set single-click as default ([KDE]SingleClick=true)
   if [[ ! -e ${PKG}/${PREFIX}/share/config/kdeglobals ]]; then
      cat ${SRCDIR}/config/kdeglobals > ${PKG}/${PREFIX}/share/config/kdeglobals
      chmod 644 ${PKG}/${PREFIX}/share/config/kdeglobals
   else
      # This might be fixed or unsafe. Better check.
      echo
      echo "BAILOUT: kdeglobals already exists. Check to see if anti-aliased"
      echo "         fonts work out-of-the-box now..."
      echo
      exit 1
   fi

   # Setup config files for TDM:
   ${PKG}/${PREFIX}/bin/gentdmconf --no-old --no-old-scripts --no-backup --in ${PKG}/etc/trinity/tdm
   # Allow root to login
   cat ${PKG}/etc/trinity/tdm/tdmrc | perl -pi -e 's|AllowRootLogin=false|AllowRootLogin=true|' > ${PKG}/etc/trinity/tdm/tdmrc.new
   mv ${PKG}/etc/trinity/tdm/Xsession ${PKG}/etc/trinity/tdm/Xsession.orig
   cat ${SRCDIR}/config/Xsession | sed "s|PREFIX|${PREFIX}|g" > ${PKG}/etc/trinity/tdm/Xsession
   mv ${PKG}/etc/trinity/tdm/backgroundrc ${PKG}/etc/trinity/tdm/backgroundrc.new
   if [[ -r ${PKG}/${PREFIX}/etc/trinity/tdm/README ]]; then
      sed -i "s|${TMP}/package-tdebase/etc/trinity/tdm|/etc/trinity/tdm|" ${PKG}/${PREFIX}/etc/trinity/tdm/README
   fi

   # Set konq_treeview as the default konqueror file manager view
   sed -i -e "s/View2_ServiceName=konq_iconview/View2_ServiceName=konq_treeview/" ${PKG}/${PREFIX}/share/apps/konqueror/profiles/filemanagement

   # Add a nice Slackware login splash theme.
   cp -dR ${SRCDIR}/FBSlackware ${PKG}/${PREFIX}/share/apps/ksplash/Themes/
fi
# End of Subjective Default Usability Tweaks
#==============================================================================

# Build the package in txz or tgz format.
cd ${PKG}
makepkg --linkadd y --chown n ${OUTPUT}/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKG_FORMAT} 2>&1 | tee ${OUTPUT}/${PRGNAM}_makepkg.log
# Calculate hash file for the package.
cd ${OUTPUT}
md5sum ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKG_FORMAT} > ${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.${PKG_FORMAT}.md5
# Create a description file for the package.
cd -
cat ${PKG}/install/slack-desc | grep "^${PRGNAM}" > ${OUTPUT}/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.txt
# Create a list of dependencies for the package.
if [ -f ${PKG}/install/slack-required ]; then
   cat ${PKG}/install/slack-required > ${OUTPUT}/${PRGNAM}-${VERSION}-${ARCH}-${BUILD}${TAG}.dep
fi


Что бы это могло быть, какой-то глюк с cmake или что-нибудь ещё?

Автор:  sunjob [ 23 дек 2017 21:29 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Цитата:
В слакбилде tdebase дописал 2 ядра свего камня JOB_NUM="-j3"

могу ошибаться, это заставляет принудительно использовать 3 потока, для сборки, т.е. при использовании "гиперфрединга" - по два потока на ядро..., т.е. для 2х ядер нужно
Код:
JOB_NUM="-j4"


... да, бывает такая "фигня", что нек. проектов надо собирать в один поток, т.е. без разспараллеливания процесса сборки, в этом слоучае
Код:
-j1


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

по поводу "всего остального" - пока ни чего не подскажу, с телефона читать не удобно (а уж как писать... ильф и петров застрелились бы... :о)

Автор:  Algierd [ 23 дек 2017 23:55 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Тогда вопрос: какой уровень параллелизма, -j1 или -j4, "правильнее" и безопаснее использовать при сборке TDE на двухъядерном камне?

Автор:  sunjob [ 24 дек 2017 07:51 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

точного "математически" выверенного ответа я не знаю :о) не натыкался в манах, т.к. быстрее на практике было проверить, чем искать "сокральный смысль" в текстах

могу предположить, что:
- для обычной сборки правильно будет "по потоку на ядро", т.е. для 2х ядерного -> -j4 (учитывая гиперфрединг)
- для критических моментов -> -j1

(* - критический случай, это когда для правильной/нормальной сборки необходимо собирать последовательно все "цели сборки", без распаралелливания... в TDE точно есть такие моменты, какие именно приложения не помню, но точно есть и не одно приложение )

уточнение:
- для обычной сборки можно так же задать и больше потоков, чем имеестя возможность, допустим, для 8и ядерного процессора задать 24 потока, и "make" честно отработает - запустит сборку в 24 потока, при этом четко видно как процессор загружается значительно больше, чем при "свободном" выборе или "по потоку на ядро")

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

другой момент, уже писал об этом, но попробую уточнить:
- при обычной сборке можно не особо "каматозить" по поводу "распараллеливания" работы, особенно, если используем слакбилды, скачанные со стоковых хланилищь, там все уже предусмотрено, если что...
- НО, при работе с большими проектами, где собирается несколько пакетов/приложений, иногда приходится принудительно прописывать для конкретного приложения "сборку в один поток"

я обычно делаю так:
- устанавливаю по умолчанию потоки:
если необходимо, устанавливаю глобальную переменнаую, для всего проекта/TDE
Код:
export NUMJOBS=16


далее в каждом слакбилде прописываю "свою стандартную шапку", в которую входит
Код:
JOB="-j ${NUMJOBS:-$(($(cat /proc/cpuinfo|grep -c processor )))}"


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

Код:
make $JOB # для обычной сборки
make -j1  # для одного потока


ну... примерно как-то так, можно, конечно, заточить под себя...
по поводу необходимости одного потока - "писатели" используют еще такую фишку

Код:
make ||  make -j1 || exit # не отработает обычная сборка - запустится сборка в один поток и уж если она вернет ошибку...:о)



глубоко в теорию я не капал (времени нет, да и не очень интересно :hi_hi_hi: ) и думаю, будет неплохо, все таки, услышать комменты борманта

Автор:  Algierd [ 24 дек 2017 19:54 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

по поводу необходимости одного потока - "писатели" используют еще такую фишку

Код:
make ||  make -j1 || exit # не отработает обычная сборка - запустится сборка в один поток и уж если она вернет ошибку...:о)

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

Кстати, а где взять Ast модуль необходимый для сборки libtqt-perl?

Цитата:
config.status: creating smoke/tqt/generate.pl
readline() on closed filehandle DEFS at generate.pl line 79.
Can't locate Ast.pm in @INC (you may need to install the Ast module) (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at kalyptus line 17.
BEGIN failed--compilation aborted at kalyptus line 17.
config.status: error: cannot find input file: `smoke/Makefile.in'


спрашивал у bormant'а, но он мне не ответил, может не знает или я ему просто надоел со своими вопросами :-)

Автор:  sunjob [ 24 дек 2017 20:13 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Цитата:
надо будет покумекать как включить этот механизм для всего сборочного сценария

ни чего делать не надо, по умолчанию сборка идет с максимально оптимальными параметрами, по "потоку на поток", т.е. на 2х ядерном процессоре будет по умолчанию занято все 4е потока...

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

Цитата:
где взять Ast модуль

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

гугль, вторая или третья ссылка (не знаю, то, или нет, смотрите сами)
http://search.cpan.org/~sriram/Jeeves1.0/

Автор:  bormant [ 24 дек 2017 20:14 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

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

Автор:  sunjob [ 24 дек 2017 20:20 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

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

всего то... :о)

ВСЕХ С НОВЫМ ГОДОМ! ... с новыми сборками...

Автор:  Algierd [ 23 фев 2018 23:42 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Для тех у кого происходит рассинхрон во время загрузки kdesktop на некоторых камнях (core2duo, например) собирайте основные пакеты используя Clang, проверено, падений нет. В принципе, можно даже всю среду им сконпелять, у меня не получилось собрать только Krusader, хрен его знает, что ему надо, на git'е ничего не нашёл, может кто подскажет в чём тут дело?

Цитата:
mv -f .deps/kglookfeel.Tpo .deps/kglookfeel.Po
In file included from ../../../krusader/Konfigurator/kgarchives.cpp:34:
In file included from ./../../../krusader/Konfigurator/kgarchives.h:34:
In file included from ../../../krusader/Konfigurator/konfiguratorpage.h:34:
In file included from ../../../krusader/Konfigurator/konfiguratoritems.h:45:
In file included from /opt/trinity/include/kurlrequester.h:27:
In file included from /opt/trinity/include/kpushbutton.h:25:
In file included from /opt/trinity/include/kguiitem.h:29:
/opt/trinity/include/kicontheme.h:176:21: warning: private field 'd' is not used
[-Wunused-private-field]
TDEIconPrivate *d;
 ^
10 warnings generated.
mv -f .deps/kgarchives.Tpo .deps/kgarchives.Po
make[3]: Leaving directory '/tmp/build/tmp-krusader/applications/krusader/build-krusader/krusader/Konfigurator'
Makefile:953: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/tmp/build/tmp-krusader/applications/krusader/build-krusader/krusader'
Makefile:591: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/tmp/build/tmp-krusader/applications/krusader/build-krusader'
Makefile:508: recipe for target 'all' failed
make: *** [all] Error 2

Автор:  bormant [ 24 фев 2018 09:56 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Либо где-то есть -Werror, либо ошибка выше по журналу.
В цитате только предупреждение: неиспользуемое приватное поле, но не ошибка.

Автор:  Algierd [ 24 фев 2018 10:37 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Похоже вот оно:

Цитата:
r/Konfigurator/kgstartup.cpp:58:42: error: variable length array
of non-POD element type 'KONFIGURATOR_NAME_VALUE_PAIR'
KONFIGURATOR_NAME_VALUE_PAIR comboItems[ profileList.count() ];
 ^
In file included from In file included from ../../../krusader/Konfigurator/kglookfeel.cpp:32:
In file included from ../../../krusader/Konfigurator/../krusader.h:42:
In file included from /opt/trinity/include/tdeparts/mainwindow.h:24:
In file included from /opt/trinity/include/tdeaction.h:674:
/opt/trinity/include/tdeactionclasses.h:700:50: warning: 'TDEListAction' is
deprecated [-Wdeprecated-declarations]
class TDEUI_EXPORT TDERecentFilesAction : public TDEListAction // TODO ...
 ^
/opt/trinity/include/tdeactionclasses.h:584:31: note: 'TDEListAction' has been
explicitly marked deprecated here
class TDEUI_EXPORT_DEPRECATED TDEListAction : public TDESelectAction
 ^
7 warning../../../krusader/Konfigurator/kgstartup.cpps generated.
:31:
In file included from ./../../../krusader/Konfigurator/kgstartup.h:34:
In file included from ../../../krusader/Konfigurator/konfiguratorpage.h:34:
In file included from ../../../krusader/Konfigurator/konfiguratoritems.h:45:
In file included from /opt/trinity/include/kurlrequester.h:27:
In file included from /opt/trinity/include/kpushbutton.h:25:
In file included from /opt/trinity/include/kguiitem.h:29:
/opt/trinity/include/kicontheme.h:176:21: warning: private field 'd' is not used
[-Wunused-private-field]
TDEIconPrivate *d;
 ^
6 warnings and 1 error generated.
Makefile:582: recipe for target 'kgstartup.o' failed
make[3]: *** [kgstartup.o] Error 1
make[3]: *** Waiting for unfinished jobs....

Автор:  bormant [ 24 фев 2018 12:07 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Если быть точным:
Код:
../../../krusader/Konfigurator/kgstartup.cpp:58:42: error: variable length array
      of non-POD element type 'KONFIGURATOR_NAME_VALUE_PAIR'
  KONFIGURATOR_NAME_VALUE_PAIR comboItems[ profileList.count() ];
                                         ^

По мнению компилятора, KONFIGURATOR_NAME_VALUE_PAIR не является POD-типом, поэтому из таких элементов нельзя делать массивы переменной длины при помощи использованного синтаксиса.

Вариантов больше одного: 1) посмотреть, нет ли ключей, позволяющих компилятору не быть столь строгим и "закрыть глаза", или 2) патчить исходник, устраняя несоответствие текста программы стандарту C++ (а еще точнее, нестандарному расширению C++).

Автор:  bormant [ 24 фев 2018 12:20 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Вон там:
https://github.com/KDE/krusader/blob/ma ... tartup.cpp

поступили так (заменили VLA на массив в динамической памяти (new[], delete[])):
Код:
    const int profileListSize = profileList.size();
    KONFIGURATOR_NAME_VALUE_PAIR *comboItems = new KONFIGURATOR_NAME_VALUE_PAIR[ profileListSize ];
    for (int i = 0; i != profileListSize; i++)
        comboItems[ i ].text = comboItems[ i ].value = profileList [ i ];
    comboItems[ 0 ].value = "";

    profileCombo = createComboBox("Startup", "Starter Profile Name", comboItems[ 0 ].value, comboItems, profileListSize, panelsGrp, false, false);
    profileCombo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
    panelsGrid->addWidget(profileCombo, 0, 1);

    delete [] comboItems;

Суть изменения:
Код:
    const int profileListSize = profileList.size();
    KONFIGURATOR_NAME_VALUE_PAIR *comboItems = new KONFIGURATOR_NAME_VALUE_PAIR[ profileListSize ];
    // ...
    delete [] comboItems;


Дополнительно: http://ysonggit.github.io/coding/2015/0 ... -type.html

Автор:  bormant [ 24 фев 2018 12:50 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Применительно к trinity замена могла быть такой:
Код:
  const int profileListCount = profileList.count();
  KONFIGURATOR_NAME_VALUE_PAIR *comboItems = new KONFIGURATOR_NAME_VALUE_PAIR[ profileListCount ];
  for( unsigned int i=0; i != profileListCount; i++ )
    comboItems[ i ].text = comboItems[ i ].value = profileList[ i ];   
  comboItems[ 0 ].value = "";

  profileCombo = createComboBox( "Startup", "Starter Profile Name", comboItems[ 0 ].value, comboItems, profileListCount, panelsGrp, false, false );
  profileCombo->setSizePolicy( TQSizePolicy::Expanding, TQSizePolicy::Fixed );
  panelsGrid->addWidget( profileCombo, 0, 1 );

  delete [] comboItems;

Автор:  Algierd [ 24 фев 2018 13:06 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Это место проскочили, но повылазило следующее:

Код:
../../../krusader/Panel/krdetailedviewitem.cpp:174:35: error: 'getIcon' is a
      protected member of 'KrView'
                        setPixmap(COLUMN(Name),KrView::getIcon(_vf));
                                                       ^
../../../krusader/Panel/krview.h:227:19: note: declared protected here
  static TQPixmap getIcon(vfile *vf);
                  ^
../../../krusader/Panel/krdetailedviewitem.cpp:192:51: warning:
      'backgroundColor' is deprecated [-Wdeprecated-declarations]
         _cg.setBrush(TQColorGroup::Base, TQBrush(backgroundColor(), *pm));
                                                  ^
/opt/trinity/include/tdelistview.h:1168:18: note: 'backgroundColor' has been
      explicitly marked deprecated here
  const TQColor &backgroundColor() KDE_DEPRECATED;  // #### should be re...
                 ^
../../../krusader/Panel/krdetailedviewitem.cpp:198:8: warning: add explicit
      braces to avoid dangling else [-Wdangling-else]
       else
       ^
In file included from ../../../krusader/Panel/krbriefviewitem.cpp:6:
In file included from ../../../krusader/Panel/listpanel.h:55:
../../../krusader/Panel/../Dialogs/krsqueezedtextlabel.h:27:10: warning:
      'KrSqueezedTextLabel::setText' hides overloaded virtual function
      [-Woverloaded-virtual]
         void setText( const TQString &text, int index=-1, int length=-1 );
              ^
/opt/trinity/include/ksqueezedtextlabel.h:64:8: note: hidden overloaded virtual
      function 'KSqueezedTextLabel::setText' declared here: different number of
      parameters (1 vs 3)
  void setText( const TQString & );
       ^
In file included from ../../../krusader/Panel/krdetailedviewitem.cpp:31:
In file included from ../../../krusader/Panel/../krusader.h:42:
In file included from /opt/trinity/include/tdeparts/mainwindow.h:24:
In file included from /opt/trinity/include/tdeaction.h:33:
In file included from /opt/trinity/include/kguiitem.h:29:
/opt/trinity/include/kicontheme.h:176:21: warning: private field 'd' is not used
      [-Wunused-private-field]
    TDEIconPrivate *d;
                    ^
8 warnings and 1 error generated.
Makefile:579: ошибка выполнения рецепта для цели «krdetailedviewitem.o»
make[3]: *** [krdetailedviewitem.o] Ошибка 1
make[3]: *** Ожидание завершения заданий…
../../../krusader/Panel/krbriefviewitem.cpp:103:26: error: 'getIcon' is a
      protected member of 'KrView'
       itemIcon =KrView::getIcon(_vf);
                         ^
../../../krusader/Panel/krview.h:227:19: note: declared protected here
  static TQPixmap getIcon(vfile *vf);
                  ^
3 warnings generated.
mv -f .deps/krview.Tpo .deps/krview.Po
In file included from ../../../krusader/Panel/krbriefviewitem.cpp:1:
In file included from ../../../krusader/Panel/krbriefview.h:33:
In file included from ../../../krusader/Panel/krview.h:36:
In file included from ../../../krusader/Panel/../krusader.h:42:
In file included from /opt/trinity/include/tdeparts/mainwindow.h:24:
In file included from /opt/trinity/include/tdeaction.h:33:
In file included from /opt/trinity/include/kguiitem.h:29:
/opt/trinity/include/kicontheme.h:176:21: warning: private field 'd' is not used
      [-Wunused-private-field]
    TDEIconPrivate *d;
                    ^
7 warnings and 1 error generated.

Автор:  bormant [ 24 фев 2018 13:07 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Algierd,
лучше как в моём сообщении выше.
Иначе:
1) замена .count() на .size() -- а можно ли?
2) если вводите константу вместо вызова .count(), то почему б ей и дальше не пользоваться вместо вызова.
Стоит ли вводить константу -- не знаю, это надо смотреть на то, чем на самом деле является .count() и может ли быть оптимизатором подставлено значение без доп.вызовов. Но в целом хуже не будет.

Автор:  bormant [ 24 фев 2018 13:28 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Цитата:
Код:
../../../krusader/Panel/krdetailedviewitem.cpp:174:35: error: 'getIcon' is a protected member of 'KrView'
                        setPixmap(COLUMN(Name),KrView::getIcon(_vf));
                                                       ^
Если собирать с -DFASTER, то этот кусок будет отключён.
Там так:
Код:
void KrDetailedViewItem::repaintItem() {
...
    setText(COLUMN(Name), name);
#ifndef FASTER
    // display an icon if needed
    if (PROPS->displayIcons)
      setPixmap(COLUMN(Name),KrView::getIcon(_vf));
#endif
}

А иначе KrView::getIcon(_vf) можно звать только из наследника KrView, с этим к разработчикам.

Быстрый и грязный фикс мог бы быть таким:
в krusader/Panel/krview.h перенести из protected: в public: строку
Код:
  static TQPixmap getIcon(vfile *vf);
А как по уму -- это разбираться надо...

Автор:  Algierd [ 24 фев 2018 13:52 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

bormant, спасибо за помощь! Со всеми этими бубенами оно таки собралось :ya_hoo_oo:

Изображение

Автор:  Algierd [ 24 фев 2018 14:58 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Подскажите ещё, плиз, что поправить в слакбилде, чтобы dolphin собирался с поддержкой русского языка? В настройках проекта выбираю "ru", ругается на несвязанную переменную:

Цитата:
dolphin.SlackBuild: line 87: langs: unbound variable
dolphin.SlackBuild FAILED at line 88


Где-то накосячил, а где?

Код:
#!/bin/sh
# Generated by Alien's SlackBuild Toolkit: http://slackware.com/~alien/AST
# Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015  Eric Hameleers, Eindhoven, Netherlands
# Copyright 2015-2017  Thorn Inurcide
# Copyright 2015-2017  tde-slackbuilds project on GitHub
# All rights reserved.
#
#   Permission to use, copy, modify, and distribute this software for
#   any purpose with or without fee is hereby granted, provided that
#   the above copyright notice and this permission notice appear in all
#   copies.
#
#   THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
#   WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#   MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
#   IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
#   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
#   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
#   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
#   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
#   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
#   SUCH DAMAGE.

PRGNAM=dolphin
VERSION=${VERSION:-$TDEVERSION}
BUILD=${BUILD:-1}
TAG=${TAG:-_tde}

source ../../get-source.sh
getsource_fn

untar_fn

listdocs_fn


## Patches to edit/create CMakeLists.txt for documentation and locales support
sed -i 's|src )|src )\nadd_subdirectory( po )\nadd_subdirectory( doc )|' CMakeLists.txt

## for doc - based on amarok CMakeLists.txt:
echo "tde_auto_add_subdirectories()
" > doc/CMakeLists.txt
echo "tde_create_handbook( LANG en DESTINATION d3lphin )
" > doc/en/CMakeLists.txt
## for po - based on tde-style-qtcurve CMakeLists.txt:
echo 'exec_program(tde-config
             ARGS --install locale --expandvars
             OUTPUT_VARIABLE TDE_LOCALE_PREFIX)

find_program(GETTEXT_MSGFMT_EXECUTABLE msgfmt)
 
if(NOT GETTEXT_MSGFMT_EXECUTABLE)
    message("------\n"
            "NOTE: msgfmt not found. Translations will *not* be installed\n"
            "------\n")
else(NOT GETTEXT_MSGFMT_EXECUTABLE)
    set(catalogname d3lphin)
    add_custom_target(translations ALL)
    file(GLOB PO_FILES *.po)
    foreach(_poFile ${PO_FILES})
        get_filename_component(_poFileName ${_poFile} NAME)
        string(REGEX REPLACE "^${catalogname}_?" "" _langCode ${_poFileName} )
        string(REGEX REPLACE "\\.po$" "" _langCode ${_langCode} )
        if(_langCode)
            get_filename_component(_lang ${_poFile} NAME_WE)
            set(_gmoFile ${CMAKE_CURRENT_BINARY_DIR}/${_lang}.gmo)
            add_custom_command(TARGET translations
                    COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --check -o ${_gmoFile} ${_poFile}
                    DEPENDS ${_poFile})
            install(FILES ${_gmoFile} DESTINATION  ${TDE_LOCALE_PREFIX}/${_langCode}/LC_MESSAGES/ RENAME ${catalogname}.mo)
        endif( _langCode )
    endforeach(_poFile ${PO_FILES})
endif(NOT GETTEXT_MSGFMT_EXECUTABLE)
' > po/CMakeLists.txt

# set support for additional language(s) as per I18N variable
# but only for languages available with this package
# langs="";for Lang in $I18N;do [[ -e po/$Lang".po" ]] && langs="$langs $Lang"".po";done
# echo $langs
#
## output list of available locales ...
ls -1 po | while read line
do
## ... and compare to selected locales & remove those not required
[[ $(echo $line|grep po) ]] && [[ $langs != *$line* ]] && rm -rf po/$line
done
langs=$(echo $langs | sed 's|.po||g')


chown_fn

cd_builddir_fn

  cmake \
    -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS $TQT_INCLUDE_PATH" \
    -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
    -DCMAKE_C_COMPILER=${COMPILER} \
    -DCMAKE_CXX_COMPILER=${COMPILER_CXX} \
    -DCMAKE_INSTALL_PREFIX=${INSTALL_TDE} \
    -DLIB_SUFFIX=${LIBDIRSUFFIX} \
    -DSYSCONF_INSTALL_DIR="/etc/trinity" \
    -DMAN_INSTALL_DIR=${INSTALL_TDE}/man \
    ..

make_fn

installdocs_fn

strip_fn

mkdir_install_fn

echo "
# HOW TO EDIT THIS FILE:
# The 'handy ruler' below makes it easier to edit a package description.  Line
# up the first '|' above the ':' following the base package name, and the '|' on
# the right side marks the last column you can put a character in.  You must make
# exactly 11 lines for the formatting to be correct.  It's also customary to
# leave one space after the ':'.
       |-----handy-ruler------------------------------------------------------|
$PRGNAM: $PRGNAM (Dolphin file manager for TDE)
$PRGNAM:
$PRGNAM: Dolphin file manager for TDE
$PRGNAM:
$PRGNAM:
$PRGNAM:
$PRGNAM: With language support for:
$PRGNAM:
$PRGNAM: en $langs
$PRGNAM:
$PRGNAM:
$PRGNAM: Home: https://www.trinitydesktop.org/index.php
" > $PKG/install/slack-desc

cat <<EOINS >> $PKG/install/doinst.sh
# Update the desktop database:
if [ -x usr/bin/update-desktop-database ]; then
  chroot . /usr/bin/update-desktop-database ${INSTALL_TDE}/share/applications > /dev/null 2>&1
fi

# Update hicolor theme cache:
if [ -d usr/share/icons/hicolor ]; then
  if [ -x /usr/bin/gtk-update-icon-cache ]; then
    chroot . /usr/bin/gtk-update-icon-cache -f -t ${INSTALL_TDE}/share/icons/hicolor 1> /dev/null 2> /dev/null
  fi
fi

EOINS
makepkg_fn

Автор:  bormant [ 24 фев 2018 15:11 ]
Заголовок сообщения:  Re: TDE/Trinity & KDE3 for Slackware

Цитата:
Где-то накосячил, а где?
В строке 87 используется переменная $langs, но нигде выше по тексту сценария она не задается (строка 80, в которой предполагалось ее заполнение, закомментирована).

Страница 8 из 12 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/