Makefileを使用して別のディレクトリに中間ターゲットファイルを作成する

Makefileを使用して別のディレクトリに中間ターゲットファイルを作成する

OpenBSDシステムのシステムディスクの分割中にエラーが発生したため、現在の領域が不足しています/usr

openbsd$ df
Filesystem  512-blocks      Used     Avail Capacity  Mounted on
/dev/sd0a      2057756    141352   1813520     7%    /
/dev/sd0k     30699004     66384  29097672     0%    /home
/dev/sd0d      5202236    746020   4196108    15%    /tmp
/dev/sd0f      4122108   3002484    913520    77%    /usr
/dev/sd0g      2057756    387016   1567856    20%    /usr/X11R6
/dev/sd0h     11366780    552236  10246208     5%    /usr/local
/dev/sd0j     12379516         4  11760540     0%    /usr/obj
/dev/sd0i      3857212   2060552   1603800    56%    /usr/src
/dev/sd0e      8218940     67776   7740220     1%    /var

最新バージョンのGCCをインストールしようとしましたが、エラーが発生しましたNo space left on device

openbsd$ cd /usr/ports/lang/gcc/6
openbsd$ doas make install
{{ ... thouands of lines omitted for brevity ... }}
tar: Unable to create gcc-6.4.0/install-sh: No space left on device
tar: Unable to create gcc-6.4.0/ylwrap: No space left on device
tar: Unable to create gcc-6.4.0/LAST_UPDATED: No space left on device
tar: Unable to create gcc-6.4.0/NEWS: No space left on device
tar: Unable to create gcc-6.4.0/MD5SUMS: No space left on device
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2555 'do-extract': @PATH=/usr/ports/pobj/gcc-6.4.0/bin:/usr/bin:/bin:/usr/sbin:/s...)
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2528 '/usr/ports/pobj/gcc-6.4.0/.extract_done')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2003 '/usr/ports/packages/amd64/all/gcc-6.4.0p0.tgz')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2465 '_internal-package')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2444 'package')
*** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2021 '/var/db/pkg/gcc-6.4.0p0/+CONTENTS')
*** Error 1 in /usr/ports/lang/gcc/6 (/usr/ports/infrastructure/mk/bsd.port.mk:2444 'install')

大量のスペースを消費しないように、ターゲットファイルを別のディレクトリにビルドすることは可能ですか/usr/ports?同様のことを試しましたが、cd /tmp/build && make -C /usr/ports/lang/gcc/6 install中間ファイルはまだ同じディレクトリに作成されますMakefile

答え1

WRKOBJDIRこの変数をビルドを実行する必要があるディレクトリに設定できます。この変数の説明については、次を参照してください。bsd.port.mk(5)

たとえば、次のように使用できます。

cd /usr/ports/lang/gcc/6
doas env WKOBJDIR=/tmp/build make install

/etc/mk.confまたは、常に.NETで変数を設定するのとは異なる場所でポートをコンパイルしたい場合/usr/ports/pobj

lang/gcc/6ポートも参照してください削除するGCC 8では廃止されたため、今日(2019-04-25)ポートツリーから削除されました。

関連情報