-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
implement configurable installation prefixes that use features (#503)
* a feature to control install prefix for install targets * usable default for install-prefix on Windows * additional named installation prefixes based on Autotools * allow users to add named installation directories * fix named directories <location> handling when requesting a subproject build * examples for named installation directories * document named install directories-related functions, make get-package-name more conveninent to users * feature to allow staging into a location different than active install-prefix * support for getting relative paths with stage.get-dir
- Loading branch information
1 parent
b613e6d
commit 51ad471
Showing
7 changed files
with
444 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# showcasing several default install directories | ||
install a1 : a : <location>(bindir) ; | ||
install a2 : a : <location>(libdir)/a2 ; | ||
install (sbindir)/a3 : a ; | ||
|
||
# using a custom prefix; the file will be installed into foo/bar/bin/a4 | ||
install (bindir)/a4 : a : <install-prefix>foo/bar ; | ||
|
||
# this one deduces installed package name to be the basename of the project | ||
# directory, so e.g. on Linux the file will be installed installed into | ||
# /usr/local/share/doc/<name of project's directory>/a5 | ||
install (docdir)/a5 : a : <install-prefix>bar/baz ; | ||
|
||
# use a custom named directory; its default on Linux is /usr/local/share/xyz/ | ||
import stage ; | ||
stage.add-install-dir foodir : xyz : datadir ; | ||
install (foodir)/a6 : a ; | ||
|
||
|
||
# another custom named directory, this one appends package name like docdir; | ||
# so, e.g. on Linux it defaults to /usr/local/lib/named-install-dirs | ||
stage.add-install-dir privatedir : "" : libdir : package-suffix ; | ||
install (privatedir)/a7 : a ; | ||
|
||
# using stage.get-package-name | ||
make a8 : a : @write-dirs : <staging-prefix>p/q/r <install-bindir>/bin ; | ||
|
||
rule write-dirs ( target : sources * : properties * ) | ||
{ | ||
import property-set ; | ||
import print ; | ||
local ps = [ property-set.create $(properties) ] ; | ||
local pn = [ stage.get-package-name $(ps) ] ; | ||
print.output $(target) ; | ||
print.text | ||
[ stage.get-dir docdir : $(ps) : $(pn) ] | ||
[ stage.get-dir docdir : $(ps) : $(pn) : staged ] | ||
[ stage.get-dir docdir : $(ps) : $(pn) : relative ] | ||
[ stage.get-dir docdir : $(ps) : $(pn) : relative staged ] | ||
[ stage.get-dir bindir : $(ps) : $(pn) : relative ] | ||
: overwrite | ||
; | ||
} | ||
|
||
# using staging prefix; on Linux installs into q/r/s/share/a9 | ||
install (datarootdir)/a9 : a : <staging-prefix>q/r/s ; | ||
|
||
|
||
build-project x ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# this subproject showcases installed package name deduction | ||
|
||
project subx ; | ||
build-project y ; | ||
build-project z ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# this subproject doesn't have a name, so its default package name is deduced | ||
# from its parent | ||
|
||
install (docdir)/y1 : ../../a ; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# this subproject does have a name, so its name is used as its default package | ||
# name | ||
|
||
project subz ; | ||
|
||
install (docdir)/z1 : ../../a ; |
Oops, something went wrong.