dmake 允许在多个生成服务器上并发生成目标。并发处理可大大减少生成大型系统或项目所需的时间。dmake 提供了以下用于控制并发性和时间安排的特殊 makefile 目标。
使用该目标指示哪些目标将串行处理。
使用该目标指示哪些目标将并行处理。
使用该目标指示哪些目标将在本地主机上串行处理。
如果在相关项列表中指定了该目标,则 dmake 将等到在它之前的相关项完成后,才处理后面的那些相关项,即使处理是并行执行的也是如此。
您使用这些目标编写的 Makefile 仍然与随 Oracle Solaris 分发的 make 标准版本兼容。标准 make 可接受这些目标,且不会发生错误(也无需采取任何措施)。
dmake 作业的分配是以两种方式控制的:
dmake 主机上的 dmake 用户可以指定他们要用作生成服务器的计算机,以及他们要分配给每台生成服务器的作业数。
生成服务器上的所有者(可以更改 /etc/opt/SPROdmake/dmake.conf 文件的用户)可以控制可分配给该生成服务器的 dmake 作业的最大总数。
当 dmake 开始执行时,它将搜索运行时配置文件以了解要将作业分配到何处。
通常,该文件位于 dmake 主机上的起始目录中,名为 .dmakerc。
dmake 在以下位置按以下顺序搜索运行时配置文件:
您使用 -c 选项在命令行上指定的路径名
您使用 DMAKE_RCFILE makefile 宏指定的路径名
您使用 DMAKE_RCFILE 环境变量指定的路径名
在 $(HOME)/.dmakerc 中
如果未找到运行时配置文件,dmake 将切换到并行模式,并将两个作业(缺省)分配给 dmake 主机。可以使用 -j 选项或 DMAKE_MAX_JOBS 进行更改。
运行时配置文件可以包含生成服务器列表,以及您要分配给每台生成服务器的作业数。
下面是一个简单的运行时配置文件样例:
# My machine. This entry causes dmake to distribute to it falcon { jobs = 1 } hawk eagle { jobs = 3 } # Manager's machine. She's usually at meetings heron { jobs = 4 } avocet
项 falcon、hawk、eagle、heron 和 avocet 作为生成服务器列出。
您可以指定要分配给每台生成服务器的作业数。缺省作业数为二。
以 "#" 字符开头的任何行都被解释为注释。
也可在运行时配置文件中构造生成服务器组。这使得您可以根据情况灵活地在不同的生成服务器组之间轻松切换。例如,您可以针对不同操作系统下的生成定义一组不同的生成服务器,或定义安装有特殊软件的生成服务器组。这些生成服务器必须具有相同的体系结构,并且安装有相同的操作系统。
下面的运行时配置文件包含组:
earth { jobs = 2 } mars { jobs = 3 } group lab1 { host falcon { jobs = 3 } host hawk host eagle { jobs = 3 } } group lab2 { host heron host avocet { jobs = 3 } host stilt { jobs = 2 } group labs { group lab1 group lab2 } group sunos5.x { group labs host jupiter host venus { jobs = 2 } host pluto { jobs = 3 } }
正规组是通过 group 指令指定的,其成员列表以大括号 ({ }) 为分界符。
作为组成员的生成服务器由可选的 host 指令指定。
组可以是其他组的成员。
单个的生成服务器可以列在也包含生成服务器组的运行时配置文件中。在这种情况下,dmake 将这些生成服务器视为未命名组的成员。
dmake 按从 1 到 4 的优先级顺序将作业分配给由以下列表指定的单个主机组。
在命令行上指定为 -g 选项的参数的组。
由 DMAKE_GROUP makefile 宏指定的组。
由 DMAKE_GROUP 环境变量指定的组。
在运行时配置文件中列出的第一个正规组。
在运行时配置文件中指定的组名和主机名可以括在双引号中。这在可以用作组名和主机名一部分的字符序列方面提供了更大的灵活性。例如,如果组名称以数字开头,则应使用双引号引起:
group "123_sparc"
如上所述,必须能够从生成服务器访问安装了 dmake 软件的 bin 目录。缺省情况下,dmake 会假设生成服务器上 dmake 可执行文件的逻辑路径与 dmake 主机上的路径相同。可以通过在运行时配置文件中将路径名称指定为主机条目的属性来覆盖此假设。例如:
group sparc-cluster { host wren { jobs = 10 , path = "/opt/solarisstudio12.5/bin" } host stimpy { path = "/bin" } }
/etc/opt/SPROdmake/dmake.conf 文件位于生成服务器的文件系统中。
使用此文件指定以下内容:
必需:可在该生成服务器上并发运行的 dmake 作业(来自所有用户)的最大总数。
可选:所有 dmake 作业运行时都将采用的优先级。
下面是 dmake.conf 文件的样例:
max_jobs: 8 nice_prio: 5
此文件将允许在该生成服务器上运行的 dmake 作业(来自所有 dmake 用户)的最大数量设置为八个。您可以使用 nice_prio 命令更改将要运行的作业的优先级。请参见 nice(1)。