LINUX.ORG.RU

Manjaro, Arch компиляция Pyside2. Помогите разобраться.

 , ,


0

1

Здравствуйте. Неоднократно пытался скомпилировать пакеты Pyside2 из арчевского аура, но постоянно были какие-то проблемы, сначала с shiboken, а потом с самим pyside. Я откладывал и ждал, когда починят. Сегодня надоело ждать и взялся ковырять сам.

Проблема в компиляции возникала ошибка:

Clang: 1 diagnostic messages:
  /../lib64/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../include/c++/7.1.1/x86_64-pc-linux-gnu/bits/os_defines.h:39:10: fatal: 'features.h' file not found
Как оказалось, проблема в путях cpp, там какая-то ошибка:
cpp -v
Используются внутренние спецификации.
COLLECT_GCC=cpp
Целевая архитектура: x86_64-pc-linux-gnu
Параметры конфигурации: /build/gcc-multilib/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --enable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
Модель многопоточности: posix
gcc версия 7.1.1 20170630 (GCC) 
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/cc1 -E -quiet -v - -mtune=generic -march=x86-64
несуществующий каталог "/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../x86_64-pc-linux-gnu/include" проигнорирован
порядок поиска для #include "...":
порядок поиска для #include <...>:
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/include-fixed
 /usr/include
Сравните, кстати, с выхлопом «cc -v» и «gcc -v».

Но проблема при компиляции, как оказалось, даже не из-за самой этой ошибки, а из-за перевода. Я бился насмерть с подстановкой путей пока не вспомнил недавние проблемы с expat и русской локалью (его приходится откатывать, чтобы работать в FreeCAD). Итак, я запустил «LANG=C yaourt -SS pyside2-common-git» и о чудо, заработало.

Теперь самое главное, кто виноват? Арч? Манджара? Разработчики Pyside или разработчики clang/gcc? И что со всем этим делать? Ктонить может подтвердить/опровергнуть или объяснить мне что с чем и как?

Deleted

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

Ну, надо сказать, что при очередной компиляции фрикада опять были непонятные ошибки с участием /usr/include/features.h. Так что, тут что-то толи с глобальными настройками системы, толи локализаторы слишком глубоко засунули руки. Подставил LANG=C и всё скомпилировалось.

Поставил систему с нуля (мало ли что, да ктому же SSD купил, хотел обновить всё) и всё те же ошибки.

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

Deleted
()

yaourt -SS

SS - таки арийско верно.

Для сборке/компиляции - создай свой .makepkg.conf в своём /home/челобака.
Ты же собираешь пакеты с PKGBUILD?
Там и пропиши, LANG=C.

#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
#
CARCH="x86_64"
CHOST="x86_64-pc-linux-gnu"

#CC=$(which clang)
#CXX=$(which clang++)

#-- Compiler and Linker Flags
# -march (or -mcpu) builds exclusively for an architecture
# -mtune optimizes for an architecture, but builds for whole processor family
CPPFLAGS="-D_FORTIFY_SOURCE=2"
CFLAGS="-march=native -O3 -pipe -fstack-protector-strong -fdiagnostics-color -fno-plt -flto=6 -fuse-linker-plugin"
CXXFLAGS="${CFLAGS}"
LDFLAGS="-Wl,-O3,-plugin-opt=-O3,--gc-sections,--sort-common,--as-needed,-z,relro,-z,now,-fuse-ld=gold -flto=6"

И арийско верно - собирать пакеты с arch-chroot.

blitz@inode ~/abs/extra % cat ~/blitz/abs/extra archroot-makepkg.sh
#!/bin/sh

spawn=1

x86_64_chroot="/var/spool/makepkg/chroot/x86_64"

if [[ -n ${spawn} ]]; then
  [[ -d "${x86_64_chroot}" ]] && sudo rm -rf "${x86_64_chroot}" && \
  sudo mkdir -p "${x86_64_chroot}" && \
  sudo /usr/bin/mkarchroot \
    -C /etc/pacman.conf \
    -M /etc/makepkg.conf \
    "${x86_64_chroot}/root" \
    base-devel sed

  sudo /usr/bin/arch-nspawn "${x86_64_chroot}/root" /bin/bash -c \
    "echo -e \"XZ_DEFAULTS='--threads=0'\" >>/etc/environment ; \
    sed \
    -e 's/^#MAKEFLAGS=.*$/MAKEFLAGS=\"-j$(echo $(getconf _NPROCESSORS_ONLN)+2 | bc)\"/' \
    -i /etc/makepkg.conf"
fi

sudo /usr/bin/makechrootpkg -c -r "${x86_64_chroot}"

blitz
()
Ответ на: комментарий от Deleted

И вот что ещё неясно.
Допускаем, что FreeCAD собирается с отдельно указанной locale.
И как же этот пакет работает, с иной system locale?

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

Я так понял, что локаль каким-то образом мешает при самой компиляции, например, возвращая переведённые отзывы, что толи make толи cpp толи clang не понимают. Уже три пакета попались, которые пришлось собирать в другой локали. Все из AUR.

Вместо того чтобы прописывать в каждый makepkg легче запустить yaourt таким образом. Это не решение, это обход, который со временем может аукнуться в другом месте. Проблема существует, и, очевидно, затрагивает только меня, потому что никто не подтверждает (но и не опровергает, что напрягает).

Ну, допустим старая система была засрана (а она была засрана), но новый, свежий дистрибутив должен работать штатно, значит мои кривые грабли не при чём. А что тогда? Почему в путях инклюдов cpp прописана несуществующая директория? На самом деле там перепутаны две последних директории местами, и где это настраивается и кто так сделал? И в каком виде cpp отвечает make'у про это несоответствие, на русском?

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

На твоём месте - исполнил бы следующую комманду:

sudo pacman - Sv --force base base-devel

У самого, случился подобный трабл.
Когда, непонятно почему, перестал собираться kernel.
Подумав - решил проблему именно этой коммандой.

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

А, забыл, делал я это. Там ещё конфликт gcc-libs и gcc-libs-multilib. Я пробовал ставить gcc-libs (и что там ещё с ним немультилибное), как предлагает пакман и возвращал gcc-libs-multilib вручную, вывод один и тот же. Где оно сидит - хрен знает.

Deleted
()
Ответ на: комментарий от blitz

Не, я имею в виду, где все эти настройки окружения всех этих гэцэцэй и шлангов системные? Откуда влезла несуществующая директория?

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

В Arch Linux настройки GCC - в /etc/makepkg.conf, в системной директории.
В персональной директории юзера - есть ~/.makepkg.conf

Крупные пакеты, как FreeCAD - компилируются со своими флагами, сбрасывая системные настройки.

Покажи PKGBUILD этого пакета.

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

Хм... вот тебе: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=shiboken2-git https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=pyside2-git https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=freecad-qt5-git

Там, кстати, в шибокенском обсуждении упоминается проблема с features.h, правда, там, вроде, на английском и всё равно не компилилось. И там шлангом компилится.

И покажи свой cpp -v и скажи, он выполняет эту команду или «застревает» в ней?

Deleted
()
Ответ на: комментарий от Deleted
blitz@inode ~/abs/core/linux % cpp -v
Using built-in specs.
COLLECT_GCC=cpp
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --enable-libmpx --with-system-zlib --with-isl --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --disable-libssp --enable-gnu-unique-object --enable-linker-build-id --enable-lto --enable-plugin --enable-install-libiberty --with-linker-hash-style=gnu --enable-gnu-indirect-function --disable-multilib --disable-werror --enable-checking=release --enable-default-pie --enable-default-ssp
Thread model: posix
gcc version 7.1.1 20170630 (GCC) 
COLLECT_GCC_OPTIONS='-E' '-v' '-mtune=generic' '-march=x86-64'
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/cc1 -E -quiet -v - -mtune=generic -march=x86-64
ignoring nonexistent directory "/usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/include
 /usr/local/include
 /usr/lib/gcc/x86_64-pc-linux-gnu/7.1.1/include-fixed
 /usr/include
End of search list.
blitz
()
Ответ на: комментарий от Deleted
:: resolving dependencies...
pacaur -Syu pyside2-git  167.23s user 119.60s system 183% cpu 2:36.64 total

Даже до компиляции не дошло с pyside2-git.
Отключил исполнение комманды - после двух минут поиска зависимостей и загрузки 183% cpu.

blitz
()
Ответ на: комментарий от Deleted

И покажи свой cpp -v и скажи, он выполняет эту команду или «застревает» в ней?

«Застревает», закончив исполнение комманды и не возвращаясь обратно в коммандную строку.
Ошибка - не только у тебя.

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

Фух... отлегло. И что теперь? Кто виноват?

Даже до компиляции не дошло с pyside2-git.

Он при компиляции любого из набора pyside2 и shiboken компилирует все недостающие пакеты. Там по два пакета компилится, если до этого не собирал ничего из них. Видимо твой pacaur считает всё это в «поиск зависимостей».

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

От этого совсем не легче.
Заметил проблему, когда несколько дней назад, перестали работать сборки fennec/firefox android.

Сохранил последную работающую версию fennec-55.apk.
Теперь, по дате сборки этой программы, искать - что было поставлено в систему, и что нарушило её работу.

Если собирать пакеты с arch-chroot - всё работает.
Следовательно, сравнить конфигурации в chroot и исходном.

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