Skip to content

Instantly share code, notes, and snippets.

@dsoares
Last active November 8, 2016 12:19
Show Gist options
  • Select an option

  • Save dsoares/268b1eec379619df7c763c2603a11072 to your computer and use it in GitHub Desktop.

Select an option

Save dsoares/268b1eec379619df7c763c2603a11072 to your computer and use it in GitHub Desktop.
Howto create my own port for MacPorts (opencv)
date 2016-10-10
author dsoares
log Howto create my own port for MacPorts

Instalar opencv com o 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 opencvimplementou 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.

Opções:

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:

  1. 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
    
  2. 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
    
  3. Alterar o Portfile conforme D) para fazer download da source no git (branch master, HEAD)

  4. Gerar um índice com o novo port:

     cd $HOME/macports
     portindex
    
  5. Remover o atual opencv e instalar o nosso:

     sudo port uninstall opencv
     sudo port install opencv
    

Links:

Como fazer o meu próprio port:

Search for available ports:

See a ports source:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment