Freebsd移植とpkg-static

Freebsd移植とpkg-static

makemkvをfreebsd 10.2に移植する予定なので、次のmakefileを作成しました。

# New ports collection makefile for:    makemkv
# Date created:             05 Mar 2012
# Date Updated:             10 April 2016
# Whom:                 kappei84
#
# $FreeBSD$
#

PORTNAME=   makemkv
PORTVERSION=    1.9.9
CATEGORIES= multimedia
DISTNAME=   ${PORTNAME}-oss-${PORTVERSION}${EXTRACT_SUFFIX}
MASTER_SITES=   http://www.makemkv.com/download/

# Prefix for the pkp-plist
#PLIST_SUB= DATADIR=${PREFIX}

# Missing qt4/qt5 dependency check in case the port is built with --enable-gui
BUILD_DEPENDS=  ffmpeg${FFMPEG_SUFX}:${PORTSDIR}/multimedia/ffmpeg${FFMPEG_SUFX}

MAINTAINER= 
COMMENT=    Make MKV from Blu-ray and DVD

GNU_CONFIGURE=  yes
OPTIONS_DEFINE= GUI

.include <bsd.port.options.mk>

.if ${PORT_OPTIONS:MGUI}
CONFIGURE_ARGS+=    --enable-gui
.else
CONFIGURE_ARGS+=    --disable-gui
.endif # GUI

# flags for the configure script
CPPFLAGS+=  -I${LOCALBASE}/include
LIBS+=      -L${LOCALBASE}/lib

MAKEFILE=   Makefile
USES= gmake
USE_OPENSSL=    yes
USE_LDCONFIG=   yes
USE_QT_VER= 4
QT_COMPONENTS=  qmake gui svg webkit xml moc uic rcc imageformats

do-install:
.if ${PORT_OPTIONS:MGUI}
    ${INSTALL_PROGRAM} ${WRKSRC}/out/${PORTNAME} ${PREFIX}/bin
.endif
.for i in libdriveio.so.0 libmakemkv.so.1 libmmbd.so.0
    ${INSTALL_PROGRAM} ${WRKSRC}/out/${i} ${PREFIX}/lib
.endfor
    @ cd ${PREFIX}/lib ; \
    ${LN} -sf libdriveio.so.0 libdriveio.so ; \
    ${LN} -sf libmakemkv.so.1 libmakemkv.so ; \
    ${LN} -sf libmmbd.so.0 libmmbd.so

.include <bsd.port.mk>

このメイクファイルは、3つのライブラリを生成するために必要なすべてのソースファイルをコンパイルして生成するソースアプリケーションのMakefileを参照します。libdriveio.solibmakemkv.so.1そしてlibmmbd.so.0にコピーされます/usr/ローカル/libインストール後。以下のログに示すように、この時点まではすべてがうまく実行されました。

gmake[2]: Leaving directory '/usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9'
===>  Staging for makemkv-1.9.9
===>   Generating temporary packing list
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libdriveio.so.0 /usr/local/lib
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libmakemkv.so.1 /usr/local/lib
install  -s -m 555 /usr/ports/multimedia/makemkv/work/makemkv-oss-1.9.9/out/libmmbd.so.0 /usr/local/lib

私が得られないのは、インストール後に実行される最後のステップである登録ステップです。

====> Compressing man pages (compress-man)
===>  Installing for makemkv-1.9.9
===>  Checking if makemkv already installed
===>   Registering installation for makemkv-1.9.9
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libdriveio.so: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libdriveio.so.0: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmakemkv.so: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmakemkv.so.1: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmmbd.so.0: No such file or directory
pkg-static: Unable to access file /usr/ports/multimedia/makemkv/work/stage/lib/libmmbd.so: No such file or directory
*** Error code 74

Stop.
make[1]: stopped in /usr/ports/multimedia/makemkv
*** Error code 1

Stop.
make: stopped in /usr/ports/multimedia/makemkv

ご覧のとおり、pkg-plist というファイルにリストされている一部のファイルが予想されるパスに見つからないため、インストールが失敗します。

pkg-staticがチェックする必要があるデフォルトのフォルダを回避または変更する方法はありますか?最初のポートなので、この手順を実行してpkg-plistが必要ですか?それとも、デフォルトライブラリが正しいパスにコピーされたため、そのファイルも削除できますか?

ベストアンサー1

あなたのMakefileが直接インストールしようとしているようです${PREFIX}。これはいいえ最近の仕事はどうなりますか?

にインストールする必要があります。これは、ターゲットディレクトリがミラーリングされる${STAGEDIR}${PREFIX}準備領域です。${WRKDIR}呼び出された基本項目はmake installそこからファイルをインポートし、これが登録が機能する方法です。

詳しくはこちらをご覧ください。

https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/special.html#staging

しかし、ご質問がある場合は、いつでもコメントを残してください。

おすすめ記事