- Replace /XML/{doc,www}/ with /XML/ in SysId.
- Remove empty stylesheets in share/xsl and point share/xml/empty.xsl via
  XML catalog instead.
- Change the L10N layer in freebsd-*.xsl not to use localized XSLT
  stylesheets directly.
- Move share/xsl/* to share/xml and remove share/xsl.
- Remove obsolete share/web2c/pdftex.def.
		
	
			
		
			
				
	
	
		
			123 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
 | |
| "http://www.FreeBSD.org/XML/share/xml/xhtml10-freebsd.dtd" [
 | |
| <!ENTITY title "Implementation Issues Involving the Ports Collection">
 | |
| ]>
 | |
| 
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
|       <title>&title;</title>
 | |
| 
 | |
|       <cvs:keyword xmlns:cvs="http://www.FreeBSD.org/XML/CVS">$FreeBSD$</cvs:keyword>
 | |
|     </head>
 | |
| 
 | |
|     <body class="navinclude.about">
 | |
| 
 | |
| <h3>The Ports Tree Is Not Branched</h3>
 | |
| 
 | |
| <p>Unlike the <tt>src</tt> tree, the FreeBSD ports tree is
 | |
| <strong>not</strong> branched.  It has always been felt that there
 | |
| are too few volunteers to be able to handle the work of merging
 | |
| hundreds of changes from the latest tree into various branches.</p>
 | |
| 
 | |
| <h3>Practical Considerations</h3>
 | |
| 
 | |
| <p>There are thousands, if not tens of thousands, of user installations
 | |
| that track the ports tree on a daily basis, rather than relying on the
 | |
| packages that shipped with the most current FreeBSD release.  Accordingly,
 | |
| any fatal error in the ports framework will immediately affect all of
 | |
| these sites.  This is why commits to <tt>bsd.port.mk</tt> are only
 | |
| allowed with portmgr approval.  Except in unusual cases, this approval
 | |
| is only granted after a regression test has been run on a dedicated
 | |
| area of the automated
 | |
| <a href="http://pointyhat.FreeBSD.org">ports building cluster</a>.
 | |
| Typically, a dozen or more proposed changes to the infrastructure are
 | |
| tested at the same time, and only after a build of the entire ports
 | |
| tree succeeds will portmgr commit the changes.</p>
 | |
| 
 | |
| <a name="requires_regression_test"></a>
 | |
| <h3>Changes That Require Regression Tests</h3>
 | |
| 
 | |
| <p>Changes to <tt>bsd.port.mk</tt> are not the only commits that can
 | |
|   have a drastic effect on the tree.  We request that any such changes
 | |
|   also be tested on the cluster.  Examples of such changes that should
 | |
|   be tested before committing include:</p>
 | |
| 
 | |
| <ul>
 | |
|   <li><p>changes to packages with many dependencies, including
 | |
| 	X11 servers, GNOME, KDE, gettext, autotools, and so forth</p></li>
 | |
|   <li><p>changes that change the "accepted best practice" for
 | |
| 	ports Makefiles, such as definitions or usage of common make
 | |
|         variables (or <tt>Makevar</tt>s). (e.g. consolidation of
 | |
| 	various implementations of USE_*, WITH_*, and so forth)</p></li>
 | |
|   <li><p>large repocopies (such as when an existing port category
 | |
| 	is divided up)</p></li>
 | |
| </ul>
 | |
| 
 | |
| <p>If you are unsure of whether your proposed change will require
 | |
| a regression test, please send email to portmgr@FreeBSD.org.</p>
 | |
| 
 | |
| <h3>Implications for the Release Cycle</h3>
 | |
| 
 | |
| <p>When a new release of FreeBSD is upcoming, committers are asked to
 | |
| shift their emphasis away from introducing new ports and features and
 | |
| instead focus on fixing existing problems.  At some time during the
 | |
| release, the tree is <tt>tagged</tt> and packages are created from
 | |
| each of the ports, for each of the architectures.  Due to the large
 | |
| number of ports and the speed of the slower architectures, the build
 | |
| process takes several days.</p>
 | |
| 
 | |
| <p>In an ideal world, these would be the packages that went on the
 | |
| release CDs, and the time from the creation of the packages to the time
 | |
| of the actual release would be just long enough to test them and no
 | |
| longer.  However, in practice, problems are found with both the ports
 | |
| and with the source tree as the QA effort continues.  But to be able
 | |
| to release in a timely manner, only certain port changes will be merged
 | |
| back into the actual (tagged) tree, and the affected packages will
 | |
| be rebuilt.  Only severe security problems and licensing issues will
 | |
| have their tags slipped in this manner.</p>
 | |
| 
 | |
| <p>Since the release period can take weeks, it is unrealistic not
 | |
| to allow any commit to the ports tree during this time.  The problem
 | |
| with allowing unrestricted commits at that time is that it becomes
 | |
| impossible to separate out only the critical changes so that they,
 | |
| and only they, can have their affected tags slipped.  The terminology
 | |
| for changes that are not allowed is <tt>sweeping changes</tt>.</p>
 | |
| 
 | |
| <a name="sweeping_changes"></a>
 | |
| <h3>What Is A Sweeping Change?</h3>
 | |
| 
 | |
| <p>A <tt>sweeping change</tt> is a commit that would affect a non-trivial
 | |
| number of packages in a way such that any other change (such as fixing a
 | |
| single security problem) would mean that we would have to rebuild the
 | |
| entire set of packages, which would delay the upcoming release, possibly
 | |
| by weeks, because the set of changes overlap.</p>
 | |
| 
 | |
| <p>Here is an incomplete list.  If you are unsure that your proposed
 | |
| change falls into this categorization, you <strong>must</strong>
 | |
| ask portmgr before committing.</p>
 | |
| 
 | |
| <ul>
 | |
|   <li><p>any commit to <tt>bsd.*.mk</tt></p></li>
 | |
|   <li><p>anything else that would normally require a
 | |
| 	<a href="#requires_regression_test">regression test</a></p></li>
 | |
|   <li><p>shared library version bumps</p></li>
 | |
|   <li><p>repocopies involving multiple ports</p></li>
 | |
| </ul>
 | |
| 
 | |
| <p>The following do not fall into the above category:</p>
 | |
| 
 | |
| <ul>
 | |
|   <li><p>commits to leaf ports (i.e. ports upon which no other port
 | |
|     depends)</p></li>
 | |
|   <li><p>cosmetic changes that would not affect the package (such
 | |
|     as changes to <tt>pkg_descr</tt>)</p></li>
 | |
|   <li><p>new ports</p></li>
 | |
|   <li><p>repocopies of individual ports</p></li>
 | |
| </ul>
 | |
| 
 | |
| <p>To summarize: the basic test is <strong>will this change affect other
 | |
| packages?</strong>.</p>
 | |
| 
 | |
| </body>
 | |
| </html>
 |