Проблемы с макпортом - PullRequest
       36

Проблемы с макпортом

0 голосов
/ 14 января 2012

У меня были некоторые другие проблемы с построением некоторых портов для неправильной архитектуры ЦП, и я пытаюсь восстановить все как универсальное.

Я сделал: sudo port upgrade outdated +universal, который работал долговремя, и, казалось, установить много вещей, которые мне не нужны.Но это не сработало.

Затем я попытался с одной из библиотек, с которыми у меня ранее были проблемы:

$ sudo port install cairo  +universal
Password:
--->  Building libpixman
Error: Target org.macports.build returned: shell command failed (see log for details)
Log for libpixman is at: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_libpixman/libpixman/main.log
Error: Unable to upgrade port: 1
Error: Unable to execute port: upgrade libpixman failed
To report a bug, see <http://guide.macports.org/#project.tickets>

Журнал здесь http://hpaste.org/56449 (OSX 10.6.8, Intel Core i5)

Ответы [ 2 ]

3 голосов
/ 14 января 2012

sudo port upgrade outdated +universal будет обновлять только те порты, которые были изменены с момента их установки, поэтому, если порт не изменился, он не будет установлен / перекомпилирован.

Первый шаг не является строго обязательным, но устранит некоторые проблемыкогда у вас есть несколько версий определенного порта.На этом шаге необходимо удалить все неактивные порты sudo port uninstall inactive

. Для перекомпиляции всех ваших портов используйте sudo port upgrade --force installed +universal. Установленное ключевое слово получит все ваши порты, а -force убедится, что все они перестроены.

Чтобы упростить ситуацию в будущем, вы должны изменить конфигурацию macports для создания универсальной без необходимости делать это с помощью команды порта.Вы делаете это, добавляя + универсальный к /opt/local/etc/macports/variants.conf

1 голос
/ 14 января 2012

Проблема в том, что вы указали +universal, поэтому он пытается собрать как для 32-, так и для 64-битных архитектур (x86_64 и i386) ...

:info:build --->  Building libpixman for architecture x86_64

...and then later...

:info:build --->  Building libpixman for architecture i386

но сбой в 32-битной сборке

:info:build ld: warning: in /opt/local/lib/libpng14.dylib, file was built for unsupported file format which is not the architecture being linked (i386)

В 32-битной сборке происходит сбой, поскольку libpng построен для 64-битной версии и не может связываться с 32-битной версией.

Если вам не нужна универсальная сборка, удалите +universal и проблема должна исчезнуть!

Если вам нужна универсальная сборка ... ну, Macports должен это выяснить. Я считаю, что проблема заключается в том, что libpixman не объявляет зависимости ни от чего (libpng представляется необязательным dep). Macports не может знать, что он должен создать 32-битную версию libpng. В любом случае это мое лучшее предположение.

Вот точно ваш баг . К сожалению, вывод сопровождающего состоял в том, что вы должны вручную перекомпилировать libpng как 32-битный. Это дрянное решение, поскольку оно ломает автоматизированные универсальные сборки до gtk2 и выше. Настоящей проблемой является отсутствие зависимости, и Macports не может знать, как перестроить libpng без него.

...