| date | 2016-10-10 |
|---|---|
| author | dsoares |
| log | Howto create my own port for MacPorts |
Veio a propósito do pedido de slopes com o comando:
sudo port install auto-multiple-choice
Erro:
Error: org.macports.build for port opencv returned: command execution failed
Error: Failed to install opencv
e vendo o log o erro que aparece é
fatal error: 'QTKit/QTKit.h' file not found
Razão:
The QuickTime Kit is a Objective-C framework (QTKit.framework) for manipulating time-based media.
QuickTime Kit was deprecated in OS X v10.9. Use the AVFoundation framework instead.
Note:
Clients of QTMovieModernizer should import QTMovieModernizer.h instead; QTKit.h will be removed in a future release.
O projecto opencv já implementou a migração para o AVFoundation no master branch mas não fez nenhuma release com o novo código. O port do opencv no MacPorts usa a versão 3.1.0 (faz download do sourceforge) que ainda não contém essa mudança para a framework AVFoundation.
A) Usar o meu port disponível em: https://github.com/dsoares/portfiles (USAR ESTA)
B) Dar opçoes de compilação no MacPorts. Mas como?
- se descobrir, nice! MAS NÃO FAÇO IDEIA.
C) Instalar o opencv via Homebrew com a versão HEAD. Mas como lidar com a dependência do MacPorts? Ele vai sempre queixar-se!
D) Instalar por fases/passos (ver manual do MacPorts):
NOTE
The installation of a single port consists of multiple phases. These phases are fetch, extract, patch, configure, build, destroot, archive, and finally install. You may break up a port's installation into smaller steps for troubleshooting by using the name of one of these phases as action rather than install. For exemple
$ SUDO PORT DESTROOT APACHE2
will run the installation of apache2 until the destroot phase. See Section 5.3, "Port Phases" for a complete list of phases and a detailed description.
A ideia é fazer:
sudo port fetch opencv
ou
sudo port extract opencv
Para aceder ao ficheiro Portfile e alterar:
fetch.type git
git.url https://github.com/opencv/opencv.git
Ou então apenas:
master_sites https://github.com/opencv/opencv/archive:opencv
distfiles master.zip:opencv
E) Aproveitando a opção D), ver How to Patch a Port on Your System. Nope... Isto é para fazer patch ao source code, não ao Portfile.
F) Criar o meu port de raíz:
-
Configurar o MacPorts para procurar primeiro no repositório local:
awk 'BEGIN{print "file://'$HOME'/macports"}{print}' \ /opt/local/etc/macports/sources.conf > bla mv bla /opt/local/etc/macports/sources.conf -
Criar o repositório local e tratar do Portfile:
mkdir -p $HOME/macports/graphics/opencv curl -o $HOME/macports/graphics/opencv/Portfile \ https://trac.macports.org/export/153799/trunk/dports/graphics/opencv/Portfile -
Alterar o Portfile conforme D) para fazer download da source no git (branch master, HEAD)
-
Gerar um índice com o novo port:
cd $HOME/macports portindex -
Remover o atual opencv e instalar o nosso:
sudo port uninstall opencv sudo port install opencv
- (1) http://stackoverflow.com/questions/39776079/opencv-os-x-10-12sierra
- (2) http://stackoverflow.com/questions/39775041/installing-opencv-3-1-0-on-macos-sierra-to-use-with-python
- https://github.com/Homebrew/homebrew-science/issues/4104#issuecomment-249362870
- opencv/opencv#7266
Como fazer o meu próprio port:
Search for available ports:
See a ports source: