summaryrefslogtreecommitdiff
path: root/mk/CHANGES
blob: 202b0b65661359f3cd0be985eac8da13180c8d72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
This revision of the pkgsrc/mk infrastructure does a lot of cleanup to 
remove unnecessary ${MAKE} recursion, as well as reorganization to make it 
easier to read and maintain.  For the most part, the changes should be 
backwards compatible, and no externally visible variables have changed 
(except where noted below).

Notable changes:

* Reorganization:  bsd.pkg.mk has a new, cleaner structure that is 
  explicitly delineated into sections.  It's not perfect, but this provides 
  a tentative structure for further future cleanups.

* Use of more variable modifiers:  The make(1) modifiers :D and :U are now 
  used quite a bit more to reduce the visual complexity of chains of .if 
  blocks.  ::!= and :sh are used for deferred shell evaluation.

* Phase based build:  bsd.prefs.mk defines the new variable PKG_PHASES, 
  which contains a list of what phases *could* be run in the given make(1) 
  instance.  This allows for conditional parsing of .mk fragments based on 
  whether or not the data in question is needed.  (For instance, a recursive 
  "make fetch" need not include compilation tool definitions.)

* USE_*:  Some parts of bsd.pkg.mk for automatic handling of common 
  dependencies (USE_PERL5, INFO_FILES, ...) have been factored out into the 
  new file bsd.pkg.use.mk.

* ALL_ENV:  This new variable is included into all of CONFIGURE_ENV,
  MAKE_ENV, and SCRIPTS_ENV, to help reduce multiple settings of these
  individual variables.

* BUILD_DEFS_FIXED:  Like BUILD_DEFS, but the values are assumed to be fixed 
  (not directly user configurable in mk.conf) and thus will not be printed 
  in the pre-extract notice about configurable variables.

* BUILD_ENV:  Because there is no longer build recursion within a package's 
  Makefile, this is only used to propagate environment values to tools via 
  the wrapper scripts in bsd.wrapper.mk.  These values will not be seen by 
  non-wrappered programs anymore.

* EVAL_PREFIX:  In order to allow this to be set before the requested 
  package is installed, this now creates variables that do not call pkg_info 
  until the variable itself is evaluated.  This means that such variables 
  should not be used in := expressions or .if/.for arguments.

* PATH/PREPEND_PATH:  Similarly to EVAL_PREFIX, PREPEND_PATH takes effect 
  when the variable PATH is actually expanded.  So don't use := on PATH; 
  only add to PREPEND_PATH.

* "depends":  This is a new phase of the build which executes between 
  "checksum" and "extract".  It factors out the dependency handling into its 
  own stage, to separate the logic and make it easier to follow in 
  bsd.pkg.mk.  There is no longer a "pre-install-depends"; things which once 
  attached tasks to that now use "pre-extract".

* "test":  This is now a true phase of the build which executes between 
  "build" and "install".  It is skipped automatically if PKGSRC_RUN_TEST is 
  not set to YES (as before).  Having it as a real phase means that it works 
  more amicably with the phase-based build framework.

* "show-var-noeval", "show-vars-noeval":  In order to preserve 
  compatibility, calling "make show-var" will set PKG_PHASES (see above) to 
  all possible values.  "show-var[s]-noeval" does the same thing, except 
  that PKG_PHASES is left empty (to exclude unnecessary .mk code).

[More TBD]