www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 8d89a97df6216082bce0bc52fdfd5cc32926a8b8
parent a5e0d18a99b79e2919e6242a0acf989eb82d932f
Author: Matthew Flatt <mflatt@racket-lang.org>
Date:   Mon, 23 Jun 2014 17:15:20 +0100

distro-build: add "versionless" option

Versionless mode avoids putting a version number in an installer's
name or in installation paths.

original commit: 133d7a3c41208171a3858a62cc4aa419bdb2ff41

Diffstat:
Mpkgs/distro-build-pkgs/distro-build-client/doc.txt | 7++++++-
Mpkgs/distro-build-pkgs/distro-build-client/installer-exe.rkt | 10+++++-----
Mpkgs/distro-build-pkgs/distro-build-client/installer.rkt | 22+++++++++++++++++-----
Mpkgs/distro-build-pkgs/distro-build-server/config.rkt | 1+
Mpkgs/distro-build-pkgs/distro-build-server/drive-clients.rkt | 6++++++
Mpkgs/distro-build-pkgs/distro-build-server/readme.rkt | 8++++++--
6 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/pkgs/distro-build-pkgs/distro-build-client/doc.txt b/pkgs/distro-build-pkgs/distro-build-client/doc.txt @@ -257,10 +257,15 @@ Site-configuration keywords (where <string*> means no spaces, etc.): the value of `#:source?' #:source-pkgs? <boolean> --- if true, then packages are included in - th installer/archive only in source form; a true value works best + the installer/archive only in source form; a true value works best when the `#:source-runtime?' value is also #t; the default is the value of `#:source?' + #:versionless? <boolean> --- if true, avoids including the Racket + version number in an installer's name or in the installation path; + the default is determined by the `VERSIONLESS_MODE' makefile + variable + #:mac-pkg? <boolean> --- if true, creates a ".pkg" for Mac OS X (in single-file format) instead of a ".dmg"; the default is #f diff --git a/pkgs/distro-build-pkgs/distro-build-client/installer-exe.rkt b/pkgs/distro-build-pkgs/distro-build-client/installer-exe.rkt @@ -45,7 +45,7 @@ makensis #:extension-registers [extregs null] #:start-menus [startmenus null] - #:release [release? #t] + #:versionless [versionless? #t] #:simple? [simple? #f] #:auto-launch [auto-launch #f]) (define distdir (regexp-replace* #rx" " distname "-")) @@ -77,8 +77,8 @@ ;; Full name for the package, and a short name for installer texts !define RKTHumanName "@|distname| v@|version| (@|winplatform|)" !define RKTShortName "@|distname|" -!define RKTStartName "@|distname|@(if release? "" @~a{ v@|version|})" -!define RKTDirName "@|distdir|@(if release? "" @~a{-@|version|})" +!define RKTStartName "@|distname|@(if versionless? "" @~a{ v@|version|})" +!define RKTDirName "@|distdir|@(if versionless? "" @~a{-@|version|})" !define RKTRegName "@|distdir|-@|winplatform|-@|version|" !define RKTProgFiles "$PROGRAMFILES@(if (equal? winplatform "x86_64") "64" "")" @(if simple? @~a{!define SimpleInstaller} "") @@ -406,7 +406,7 @@ SectionEnd (parameterize ([current-directory "bundle"]) (system* makensis "/V3" "installer.nsi"))) -(define (installer-exe human-name base-name release? dist-suffix readme) +(define (installer-exe human-name base-name versionless? dist-suffix readme) (define makensis (or (find-executable-path "makensis.exe") (try-exe "c:\\Program Files\\NSIS\\makensis.exe") (try-exe "c:\\Program Files (x86)\\NSIS\\makensis.exe") @@ -426,7 +426,7 @@ SectionEnd (version) platform makensis - #:release release? + #:versionless versionless? #:extension-registers (get-extreg "bundle/racket") #:start-menus (get-startmenu "bundle/racket") #:auto-launch (get-auto-launch "bundle/racket")) diff --git a/pkgs/distro-build-pkgs/distro-build-client/installer.rkt b/pkgs/distro-build-pkgs/distro-build-client/installer.rkt @@ -15,6 +15,7 @@ (define release? #f) (define source? #f) +(define versionless? #f) (define mac-pkg? #f) (define upload-to #f) (define upload-desc "") @@ -27,6 +28,8 @@ (set! release? #t)] [("--source") "Create a source installer" (set! source? #t)] + [("--versionless") "Avoid version number in names and paths" + (set! versionless? #t)] [("--mac-pkg") "Create a \".pkg\" installer on Mac OS X" (set! mac-pkg? #t)] [("--upload") url "Upload installer" @@ -41,8 +44,11 @@ (human-name base-name dir-name dist-suffix sign-identity) (values human-name (format "~a v~a" human-name (version)) - (format "~a-~a" base-name (version)) - (if (and release? (not source?)) + (if versionless? + base-name + (format "~a-~a" base-name (version))) + (if (or (and release? (not source?)) + versionless?) dir-name (format "~a-~a" dir-name (version))) (if (string=? dist-suffix "") @@ -67,10 +73,16 @@ (case (system-type) [(unix) (installer-sh human-name base-name dir-name release? dist-suffix readme)] [(macosx) (if mac-pkg? - (installer-pkg (if release? short-human-name human-name) + (installer-pkg (if (or release? versionless?) + short-human-name + human-name) base-name dist-suffix readme sign-identity) - (installer-dmg human-name base-name dist-suffix readme sign-identity))] - [(windows) (installer-exe short-human-name base-name release? dist-suffix readme)]))) + (installer-dmg (if versionless? + short-human-name + human-name) + base-name dist-suffix readme sign-identity))] + [(windows) (installer-exe short-human-name base-name (or release? versionless?) + dist-suffix readme)]))) (call-with-output-file* (build-path "bundle" "installer.txt") diff --git a/pkgs/distro-build-pkgs/distro-build-server/config.rkt b/pkgs/distro-build-pkgs/distro-build-server/config.rkt @@ -145,6 +145,7 @@ [(#:source?) (boolean? val)] [(#:source-runtime?) (boolean? val)] [(#:source-pkgs?) (boolean? val)] + [(#:versionless?) (boolean? val)] [(#:mac-pkg?) (boolean? val)] [(#:site-dest) (path-string? val)] [(#:site-help) (hash? val)] diff --git a/pkgs/distro-build-pkgs/distro-build-server/drive-clients.rkt b/pkgs/distro-build-pkgs/distro-build-server/drive-clients.rkt @@ -25,6 +25,7 @@ (define default-release? #f) (define default-source? #f) +(define default-versionless? #f) (define default-clean? #f) (define dry-run #f) @@ -40,6 +41,8 @@ (set! default-release? #t)] [("--source") "Create source installers" (set! default-source? #t)] + [("--versionless") "Avoid version number in names and paths" + (set! default-versionless? #t)] [("--clean") "Erase client directories before building" (set! default-clean? #t)] [("--dry-run") mode @@ -239,6 +242,7 @@ (define sign-identity (get-opt c '#:sign-identity "")) (define release? (get-opt c '#:release? default-release?)) (define source? (get-opt c '#:source? default-source?)) + (define versionless? (get-opt c '#:versionless? default-versionless?)) (define source-pkgs? (get-opt c '#:source-pkgs? source?)) (define source-runtime? (get-opt c '#:source-runtime? source?)) (define mac-pkg? (get-opt c '#:mac-pkg? #f)) @@ -263,6 +267,7 @@ " BUILD_STAMP=" (q build-stamp) " RELEASE_MODE=" (if release? "--release" (q "")) " SOURCE_MODE=" (if source-runtime? "--source" (q "")) + " VERSIONLESS_MODE=" (if versionless? "--versionless" (q "")) " PKG_SOURCE_MODE=" (if source-pkgs? (q "--source --no-setup") (q "")) @@ -340,6 +345,7 @@ (rdme (add-defaults c '#:release? default-release? '#:source? default-source? + '#:versionless? default-versionless? '#:pkgs (string-split default-pkgs) '#:install-name (if (get-opt c '#:release? default-release?) "" diff --git a/pkgs/distro-build-pkgs/distro-build-server/readme.rkt b/pkgs/distro-build-pkgs/distro-build-server/readme.rkt @@ -105,18 +105,22 @@ @~a{The distribution includes any pre-installed packages in source form.}])) (define (make-macosx-notes config) + (define vers-suffix + (if (hash-ref config '#:versionless? #f) + "" + @~a{ v@(version)})) (if (hash-ref config '#:mac-pkg? #f) @~a{The installation directory is /Applications/@(string-append (hash-ref config '#:dist-name "Racket") (if (hash-ref config '#:release? #f) "" - (string-append " v" (version)))) + vers-suffix)) The installer also adjusts "/etc/paths.d/racket" to point to that directory's "bin" directory, which adjusts the default PATH environment variable for all users.} @~a{Install by dragging the enclosing - @|(hash-ref config '#:dist-name "Racket")| v@(version) + @|(hash-ref config '#:dist-name "Racket")|@|vers-suffix| folder to your Applications folder --- or wherever you like. You can move the folder at any time, but do not move applications or other files within the folder. If you want to use the Racket command-line