LINUX.ORG.RU

Сборка KDE и проблемы с <sched.h>


0

1

Приветствую ЛОР!

Решил на днях в любимой генте собрать @kde-4.7 из оверлея kde. Всё шло прекрасно, пока дело не дошло до ненавистного мне непомука. Нафиг ненужный сервис, которую к моей великой печали пригвоздили намертво к кедам, не желает собираться. emerge --info, build log.

Знаю, сам виноват, что нестабильную версию собираю. Однако решил провести эксперимент. Скопировал в новый файл инклуды и проблемную функцию из nepomuk/servicestub/priority.cpp и попытался его собрать.

Вот что получилось:

#include <iostream>
#include <string.h>

#include <sys/time.h>
#include <sys/resource.h>

#include <unistd.h>
#ifndef _WIN32
#include <sys/syscall.h>
#include <errno.h>

#include <sched.h>
#endif

bool lowerSchedulingPriority()
{
    struct sched_param param;
    memset( &param, 0, sizeof(param) );
    param.sched_priority = 0;
    return !sched_setscheduler( 0, SCHED_IDLE, &param );
}

int main()
{
  std::cout << lowerSchedulingPriority() << std::endl;
  return 0;
}

А вот результат сборки:

$ g++ -o sched_test sched_test.c
sched_test.c: In function 'bool lowerSchedulingPriority()':
sched_test.c:20: error: 'SCHED_IDLE' was not declared in this scope

Что я упускаю? Почему обьявленные в <sched.h> константы и функции не видны в моём файле? Пробовал менять <sched.h> на <linux/sched.h>, тестовый файл собирается и работает, однако с непомуком этот трюк не сработал, появилась другая ошибка: «error: storage size of 'param' isn't known».

Очевидно, что всё должно собираться без таких манипуляций. У меня наверняка какая-то проблема с путями поиска либо где-то ебилд корявый. Как это продиагностировать?

Быть может, кто-то уже встречался с такой проблемой?

PS: Решил создать тему в этом разделе, а не в Development, т.к. основной задачей является всё-таки собрать кеды, а не ковыряться в дебрях планировщика задач.

Ответ на: комментарий от megabaks

Другие проги откажутся собираться, потребуют Change USE: +semantic-desktop. Я ведь этот флаг не из большой любви к семантик-десктопу включил...

TwisteR ★★ ()
Ответ на: комментарий от TwisteR

пример прог || 4.2 ибо

[ megabaks@desktop ] ~ $ qlist -Iv kde
kde-base/activitymanager-4.7.0
kde-base/ark-4.7.0
kde-base/attica-4.7.0
kde-base/drkonqi-4.7.0
kde-base/katepart-4.7.0
kde-base/kcalc-4.7.0
kde-base/kcharselect-4.7.0
kde-base/kcheckpass-4.7.0
kde-base/kcminit-4.7.0
kde-base/kcmshell-4.7.0
kde-base/kcontrol-4.7.0
kde-base/kde-env-4.7.0
kde-base/kde-l10n-4.7.0-r2
kde-base/kde-wallpapers-4.7.0
kde-base/kdebase-cursors-4.7.0
kde-base/kdebase-data-4.7.0
kde-base/kdebase-desktoptheme-4.7.0
kde-base/kdebase-kioslaves-4.7.0
kde-base/kdebase-menu-4.7.0
kde-base/kdebase-menu-icons-4.7.0
kde-base/kdebase-pam-7
kde-base/kdebase-runtime-meta-4.7.0
kde-base/kdebase-startkde-4.7.0
kde-base/kdebugdialog-4.7.0
kde-base/kdelibs-4.7.0-r1
kde-base/kdemultimedia-kioslaves-4.7.0
kde-base/kdepasswd-4.7.0
kde-base/kdesu-4.7.0
kde-base/kdialog-4.7.0
kde-base/kdm-4.7.0
kde-base/kdnssd-4.7.0
kde-base/kdontchangethehostname-4.7.0
kde-base/keditbookmarks-4.7.0
kde-base/keditfiletype-4.7.0
kde-base/kephal-4.7.0
kde-base/kfile-4.7.0
kde-base/kfind-4.7.0
kde-base/kfmclient-4.7.0
kde-base/kglobalaccel-4.7.0
kde-base/khotkeys-4.7.0
kde-base/kiconfinder-4.7.0
kde-base/kinfocenter-4.7.0
kde-base/kioclient-4.7.0
kde-base/klipper-4.7.0
kde-base/kmenuedit-4.7.0
kde-base/kmimetypefinder-4.7.0
kde-base/kmix-4.7.0
kde-base/knetattach-4.7.0
kde-base/knewstuff-4.7.0
kde-base/knotify-4.7.0
kde-base/konqueror-4.7.0
kde-base/konsole-4.7.0
kde-base/kpasswdserver-4.7.0
kde-base/kquitapp-4.7.0
kde-base/kreadconfig-4.7.0
kde-base/krosspython-4.7.0
kde-base/krunner-4.7.0
kde-base/ksmserver-4.7.0
kde-base/ksplash-4.7.0
kde-base/kstart-4.7.0
kde-base/kstartupconfig-4.7.0
kde-base/kstyles-4.7.0
kde-base/ksysguard-4.7.0
kde-base/ksystemlog-4.7.0
kde-base/ksystraycmd-4.7.0
kde-base/ktimezoned-4.7.0
kde-base/ktraderclient-4.7.0
kde-base/kuiserver-4.7.0
kde-base/kurifilter-plugins-4.7.0
kde-base/kwallet-4.7.0
kde-base/kwalletd-4.7.0
kde-base/kwin-4.7.0
kde-base/kwrite-4.7.0
kde-base/kwrited-4.7.0
kde-base/libkcddb-4.7.0
kde-base/libkcompactdisc-4.7.0
kde-base/libkonq-4.7.0
kde-base/libkworkspace-4.7.0
kde-base/liboxygenstyle-4.7.0
kde-base/libplasmaclock-4.7.0
kde-base/libplasmagenericshell-4.7.0
kde-base/libtaskmanager-4.7.0
kde-base/mplayerthumbs-4.7.0
kde-base/nsplugins-4.7.0
kde-base/okteta-4.7.0
kde-base/okular-4.7.0
kde-base/oxygen-icons-4.7.0
kde-base/phonon-kde-4.7.0
kde-base/plasma-apps-4.7.0
kde-base/plasma-runtime-4.7.0
kde-base/plasma-workspace-4.7.0
kde-base/pykde4-4.7.0
kde-base/qguiplatformplugin_kde-4.7.0
kde-base/renamedlg-plugins-4.7.0
kde-base/smoke-4.6.5
kde-base/solid-4.7.0
kde-base/solid-runtime-4.7.0
kde-base/svgpart-4.7.0
kde-base/systemsettings-4.7.0
kde-misc/ihatethecashew-0.4-r1
kde-misc/kcm-gtk-config-1.6
kde-misc/krusader-2.4.0_beta1
[ megabaks@desktop ] ~ $
найди непомук с первой попытки :3

megabaks ★★★★ ()
Ответ на: комментарий от megabaks
# USE="-semantic-desktop" emerge -av @kde-4.7

These are the packages that would be merged, in order:

Calculating dependencies... done!

The following USE changes are necessary to proceed:
#required by kde-base/klinkstatus-4.7.49.9999, required by kde-base/kdewebdev-meta-4.7.49.9999, required by @kdewebdev-4.7, required by @kde-4.7 (argument)
=kde-base/kdepimlibs-4.7.49.9999 semantic-desktop
#required by kde-base/sweeper-4.7.49.9999, required by kde-base/kdeutils-meta-4.7.49.9999, required by @kdeutils-4.7, required by @kde-4.7 (argument)
>=kde-base/kdelibs-9999 semantic-desktop

NOTE: This --autounmask behavior can be disabled by setting
      EMERGE_DEFAULT_OPTS="--autounmask=n" in make.conf.

Use --autounmask-write to write changes to config files (honoring CONFIG_PROTECT).

emerge: there are no ebuilds built with USE flags to satisfy ">=kde-base/kdelibs-4.7:4[aqua=,semantic-desktop]".
!!! One of the following packages is required to complete your request:
- kde-base/kdelibs-4.7.0-r1::gentoo (Change USE: +semantic-desktop)
(dependency required by "kde-base/nepomuk-4.7.49.9999" [ebuild])
(dependency required by "@kdebase-runtime-4.7" [set])
(dependency required by "@kdebase-4.7" [set])
(dependency required by "@kde-4.7" [argument])
TwisteR ★★ ()
Ответ на: комментарий от TwisteR
[ root@desktop ] megabaks # for i in `qlist -ICv kde`;do equery u $i | grep "semantic" && echo $i;done
-semantic-desktop
kde-base/activitymanager-4.7.0
-semantic-desktop
kde-base/kdebase-runtime-meta-4.7.0
-semantic-desktop
kde-base/kdelibs-4.7.0-r1
-semantic-desktop
kde-base/plasma-workspace-4.7.0
-semantic-desktop
kde-base/pykde4-4.7.0
-semantic-desktop
kde-base/smoke-4.6.5
[ root@desktop ] megabaks #

что делать понятно?

megabaks ★★★★ ()
Ответ на: комментарий от megabaks

Понятно, пересобрать всё с новыми USE-флагами. Только собрано уже больше половины пакетов кед... Оставлю этот вариант на крайний случай, сейчас попытаюсь всё-таки понять, почему не собирается непомук.

TwisteR ★★ ()

Разобрался, почему при включении <sched.h> у меня не было обьявлений необходимых констант и функций: в системе стояла устаревшая версия glibc :) После обновления glibc до текущей версии тестовая программа корректно собралась и заработала. Непомук тоже собрался 8)

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

TwisteR ★★ ()
Ответ на: комментарий от TwisteR

Это я к тому, что из реп УМВР. Непомук выпилен разве что.

x0r ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.