- Describe how to assign run dependencies to build dependencies correctly
Submitted by: danfe
This commit is contained in:
		
							parent
							
								
									7b68a5ef5a
								
							
						
					
					
						commit
						0f71b08a02
					
				
				
				Notes:
				
					svn2git
				
				2020-12-08 03:00:23 +00:00 
				
			
			svn path=/head/; revision=36168
					 1 changed files with 39 additions and 5 deletions
				
			
		|  | @ -3181,11 +3181,15 @@ ALWAYS_KEEP_DISTFILES=  yes | |||
|       <sect1 id="makefile-depend"> | ||||
| 	<title>Dependencies</title> | ||||
| 
 | ||||
| 	<para>Many ports depend on other ports.  There are seven variables that | ||||
| 	  you can use to ensure that all the required bits will be on the | ||||
| 	  user's machine.  There are also some pre-supported dependency | ||||
| 	  variables for common cases, plus a few more to control the behavior | ||||
| 	  of dependencies.</para> | ||||
| 	<para>Many ports depend on other ports.  This is very convenient | ||||
| 	  and nice feature of most Unix-like operating systems, | ||||
| 	  including &os;.  It allows not having to bundle common | ||||
| 	  dependencies with every port or package, since a lot of ports | ||||
| 	  would share them.  There are seven variables that can be used | ||||
| 	  to ensure that all the required bits will be on the user's | ||||
| 	  machine.  There are also some pre-supported dependency | ||||
| 	  variables for common cases, plus a few more to control the | ||||
| 	  behavior of dependencies.</para> | ||||
| 
 | ||||
| 	<sect2> | ||||
| 	  <title><makevar>LIB_DEPENDS</makevar></title> | ||||
|  | @ -3278,6 +3282,36 @@ ALWAYS_KEEP_DISTFILES=  yes | |||
| 	    not on the user's system.  The <replaceable>target</replaceable> | ||||
| 	    part can be omitted if it is the same as | ||||
| 	    <makevar>DEPENDS_TARGET</makevar>.</para> | ||||
| 
 | ||||
| 	  <para>Quite common situation is when | ||||
| 	    <makevar>RUN_DEPENDS</makevar> is literally the same as | ||||
| 	    <makevar>BUILD_DEPENDS</makevar>, especially if ported | ||||
| 	    software is written in a scripted language or if it requires | ||||
| 	    the same run-time environment used to build it.  In this | ||||
| 	    case, it is very tempting, and indeed natural to directly | ||||
| 	    assign one to another:</para> | ||||
| 
 | ||||
| 	  <programlisting>RUN_DEPENDS= ${BUILD_DEPENDS}</programlisting> | ||||
| 
 | ||||
| 	  <para>However, doing so can and often will result in | ||||
| 	    run-time dependencies be polluted by superfluous entries, not | ||||
| 	    present in original port's <makevar>BUILD_DEPENDS</makevar>. | ||||
| 	    It happens due to the fact that &man.make.1 is being lazy | ||||
| 	    when it evaluates assignments like these.  Most probably | ||||
| 	    additional dependencies will be pulled by | ||||
| 	    <filename>ports/Mk/bsd.*.mk</filename> when processing | ||||
| 	    <makevar>USE_<replaceable>*</replaceable></makevar> | ||||
| 	    variables, which most ports contain.  For example, such | ||||
| 	    direct assignment along with | ||||
| 	    <literal>USE_GMAKE=yes</literal> will bring | ||||
| 	    <application>gmake</application> into | ||||
| 	    <makevar>RUN_DEPENDS</makevar>, despite that it was not | ||||
| 	    included explicitly in <makevar>BUILD_DEPENDS</makevar>.  To | ||||
| 	    prevent this from happening, immediate expansion assignment | ||||
| 	    should be used, i.e. expand the value before assigning it | ||||
| 	    to the variable:</para> | ||||
| 
 | ||||
| 	    <programlisting>RUN_DEPENDS:=  ${BUILD_DEPENDS}</programlisting> | ||||
| 	</sect2> | ||||
| 
 | ||||
| 	<sect2> | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue