root/trunk/jamlibrary/distribution.jam

Revision 21 (checked in by kai, 2 years ago)

Initial commit of ShortHike sources and assets.

Line 
1 # --------------------------------------------------------------------------------
2 # Adds a synchronized directory
3
4 rule GetTargetDirectory
5 {
6   local DIRECTORY_NAME = $(1) ;
7   return "target" ;
8 }
9
10 rule TargetDirectory
11 {
12   local TARGET_NAME = $(1) ;
13   local DIRECTORY_TARGET = target-$(1) ;
14   local SUBDIRECTORY = $(2) ;
15  
16   local TARGET_DIRECTORY = [ GetTargetDirectory $(TARGET_NAME) ] ;
17   local FILELIST_DIRECTORY = [ FDirName $(TARGET_DIRECTORY) $(SUBDIRECTORY) ] ;
18   local FILELIST_NAME = [ FDirName $(FILELIST_DIRECTORY) filelist.txt ] ;
19  
20   CreateFileList $(FILELIST_NAME) : : $(FILELIST_DIRECTORY) ;
21   Depends $(DIRECTORY_TARGET) : $(FILELIST_NAME) ;
22   Depends target : $(DIRECTORY_TARGET) ;
23  
24   # Copy files that are placed in target subdirectory directly
25   on $(DIRECTORY_TARGET) {
26     for FILENAME in $(DIRECT_FILES) {
27       local TARGET_FILE = [ FDirName $(TARGET_DIRECTORY) $(SUBDIRECTORY) $(FILENAME:D="") ] ;
28       Depends $(FILELIST_NAME) : $(TARGET_FILE) ;
29       DistFile $(TARGET_FILE) : $(FILENAME) ;
30     }
31   }
32
33   # Copy files that are relative to root
34   on $(DIRECTORY_TARGET) {
35     for FILENAME in $(FILES) {
36       on $(FILENAME) {
37         local TARGET_FILE ;
38         if $(TARGET_RENAME) != "" {
39           TARGET_FILE = [ FDirName $(TARGET_DIRECTORY) $(FILENAME:D) $(TARGET_RENAME) ] ;
40         }
41         else {
42           TARGET_FILE = [ FDirName $(TARGET_DIRECTORY) $(FILENAME) ] ;
43         }
44         Depends $(FILELIST_NAME) : $(TARGET_FILE) ;
45         DistFile $(TARGET_FILE) : $(FILENAME) ;
46       }
47     }
48   }
49 }
50
51 # --------------------------------------------------------------------------------
52 # Rules for adding asset files
53
54 # AddTargetPattern target [target ..] : pattern [pattern ..] ;
55 rule AddTargetFiles
56 {
57   local TARGETS = $(1) ;
58   local PATTERNS = $(2) ;
59
60   for TARGET_NAME in $(TARGETS) {
61     local DIRECTORY_TARGET = target-$(TARGET_NAME) ;
62     for PATTERN_MATCH in $(PATTERNS) {
63       NEW_FILES = [ Glob [ FDirName $(SEARCH_SOURCE) ] : $(PATTERN_MATCH) ] ;
64       if $(NEW_FILES) = "" {
65         NEW_FILES = [ FDirName $(SEARCH_SOURCE) $(PATTERN_MATCH) ] ;
66       }
67       FILES on $(DIRECTORY_TARGET) += $(NEW_FILES) ;
68     }
69   }
70 }
71
72
73
74 # AddTargetFiles target [target ..] : file : new_name ;
75 rule AddTargetFileRename
76 {
77   local TARGETS = $(1) ;
78   local TARGET_FILE = [ FDirName $(SEARCH_SOURCE) $(2) ] ;
79   TARGET_RENAME on $(TARGET_FILE) = $(3) ;
80  
81   for TARGET_NAME in $(TARGETS) {
82     local DIRECTORY_TARGET = target-$(TARGET_NAME) ;
83     FILES on $(DIRECTORY_TARGET) +=  $(TARGET_FILE) ;
84   }
85 }
86
87 rule AddTargetFilesDirect
88 {
89   local DIRECTORY_TARGET = target-$(1) ;
90   local TARGETS = $(2) ;
91  
92   for TARGET_FILE in $(TARGETS) {
93     DIRECT_FILES on $(DIRECTORY_TARGET) += [ FDirName $(SEARCH_SOURCE) $(TARGET_FILE) ] ;
94   }
95 }
96
97
98
99 # --------------------------------------------------------------------------------
100
101 rule ServerDistribute
102 {
103   local TARGET_DIRECTORY = $(1) ;
104   local RSYNC_TARGET = rsync-$(3) ;
105   local RSYNC_URL = $(4) ;
106
107   local TARGET_FILELIST = [ FDirName $(TARGET_DIRECTORY) filelist.txt ] ;
108
109   TARGET_DIRECTORY on $(RSYNC_TARGET) = $(TARGET_DIRECTORY) ;
110   RSYNC_URL on $(RSYNC_TARGET) = $(RSYNC_URL) ;
111   RSync $(RSYNC_TARGET) : $(TARGET_FILELIST) ;
112 }
113
114
115 # new Patcher("testdata/TestFilePatcherUpdate/binary_win32", targetName + "/binary_win32");
116 #else
117 # Command set for rsyncing with the server. This seems to work but we still need to patch up ssh-agent and other stuff for this to work ..
118 # C:\work\ShortHike>rsync -at --progress --delete -e ssh target_assets-standard/assets/* kai@www.shorthike.com:/home/www/test_update/assets_standard
119 #
120 # For activating the directory:
121 # plink kai@www.shorthike.com cd /home/www;make publish-update
122
123 rule RSync
124 {
125   NOTFILE $(1) ;
126   ALWAYS $(1) ;
127   Depends dist : $(1) ;
128   Depends $(1) : $(2) ;
129 }
130
131 #  echo rsync -r --delete . $(RSYNC_URL) 
132
133 actions RSync
134 {
135   cd $(TARGET_DIRECTORY)
136   rsync -r --delete . $(RSYNC_URL)
137 }
138
139 #rule SVNLoadDirs
140 #{
141 #  local SVN_FILELIST = $(1) ;
142 #  local TARGET_FILELIST = $(2) ;
143 #  Depends $(SVN_FILELIST) : $(TARGET_FILELIST) ;
144 #  Depends dist : $(SVN_FILELIST) ;
145 #}
146
147 #  svn_load_dirs.pl -wc $(SVN_DIRECTORY) -v -no_user_input $(SVN_URL) . $(TARGET_DIRECTORY)
148
149 #actions SVNLoadDirs
150 #{
151 #}
152
153 # --------------------------------------------------------------------------------
154
155 rule InstallerWin32
156 {
157   local TARGET_FILELISTS = $(1) ;
158   local OUTPUT_DIR = $(2) ;
159
160   INSTALLER_EXE = [ FDirName $(OUTPUT_DIR) $(OUTPUT_FILENAME) ] ;
161
162   Depends $(INSTALLER_EXE) : $(TARGET_FILELISTS) ;
163   Depends $(INSTALLER_EXE) : $(INSTALLER_SCRIPT) ;
164   Depends installer : $(INSTALLER_EXE) ;
165  
166   OUTPUT_DIR on $(INSTALLER_EXE) = $(OUTPUT_DIR) ;
167
168   BuildInstallerWin32 $(INSTALLER_EXE) : $(TARGET_FILELISTS) ;
169 }
170
171 rule  BuildInstallerWin32
172 {
173 }
174
175 # Lost password to private key ..
176 #  SignCode -spc authenticode\mistaril_credentials.spc -v authenticode\mistaril_authenticode.pvk -n "ShortHike" -i http://www.shorthike.com -$ commercial -t http://timestamp.comodoca.com/authenticode $(OUTPUT_DIR)\$(OUTPUT_FILENAME)
177
178 actions BuildInstallerWin32
179 {
180   "$(ISCC)" setup\ShortHikeSetup.iss /o$(OUTPUT_DIR)
181 }
182
183
184 # --------------------------------------------------------------------------------
185 # creates filelists in the target directories
186
187 rule CreateFileList
188 {
189   local FILELIST = $(1) ;
190   DIRECTORY on $(FILELIST) = $(3) ;
191 }
192
193 actions CreateFileList
194 {
195   echo Creating filelist in $(DIRECTORY)
196   cd $(DIRECTORY)
197   bash -e ..\..\create_filelist
198 }
199
200
201 # --------------------------------------------------------------------------------
202 # Adding files to the distribution
203
204 rule DistFile
205 {
206   local TARGET_FILE = $(1) ;
207   local SOURCE_FILE = $(2) ;
208   local DIRECTORY_PATH = [ FDirName $(1:D) ] ;
209   local TEMP_FILE = [ FDirName $(TARGET_FILE:D) $(SOURCE_FILE:D="") ] ;
210
211   DIRECTORY_PATH on $(TARGET_FILE) = $(DIRECTORY_PATH) ;
212   TEMP_FILE on $(TARGET_FILE) = $(TEMP_FILE) ;
213   Depends $(TARGET_FILE) : $(SOURCE_FILE) ;
214 }
215
216 # Very Windows specific ..
217 # use >NUL to stop output
218 #  echo Copying
219 #  xcopy /Y /F "$(2)" $(DIRECTORY_PATH)\$(FILENAME) >NUL
220 actions DistFile
221 {
222   xcopy /Y /F "$(2)" $(DIRECTORY_PATH)\ >NUL
223   move "$(TEMP_FILE)" "$(1)"
224 }
225
226
227
Note: See TracBrowser for help on using the browser.