source: trunk/tools/install/CreateZIPs.sh@ 21689

Last change on this file since 21689 was 21678, checked in by dmik, 14 years ago

Added RPM .spec file and script to auto-update it.

The file HowToDistribute.txt contains the detailed description
of the steps necessary to prepare ZIP and RPM distribution
archives.

The .spec file only installs some test files, this will be improved
soon.

  • Property svn:eol-style set to native
File size: 4.2 KB
Line 
1#!/bih/sh
2
3#
4# Odin distribution ZIP archive creator.
5#
6# Project Odin Software License can be found in LICENSE.TXT
7#
8# NOTE: This script requires the basic set of unix tools such as cp, mkdir,
9# pwd, readlink, etc.
10#
11
12#
13# Defaults
14#
15
16out_dir="tmp/zip"
17
18#
19# Functions
20#
21
22die() { echo "ERROR: $@"; cd "$start_dir"; exit 1; }
23
24run()
25{
26 echo "$@"
27 "$@" || die \
28"Last command failed (exit status $?)."
29}
30
31cp_prg_file()
32{
33 # $1 file
34 # $2 dest dir (relative to $out_base[_sym])
35 # $out_base dest base
36 # $out_base_sym sym/map dest base
37
38 [ -z "$1" -o -z "$2" -o -z "$out_base" -o -z "$out_base_sym" ] && \
39 die "cp_prg_file: invalid arguments."
40
41 local fbase=${1%.*}
42 run cp -Rdp "$1" "$out_base/$2"
43 run cp -Rdp "$fbase.sym" "$fbase.map" "$out_base_sym/$2"
44}
45
46cmd_cleanup()
47{
48 [ -d "$out_dir" ] && \
49 run rm -rf "$out_dir"
50}
51
52cmd_create()
53{
54 # $1 mode (nonzero - debug, else release)
55
56 local name_base
57 local name_base_sym
58 local build_base
59
60 if [ -z "$1" ]; then
61 name_base="odin-$ver_dots"
62 name_base_sym="odin-$ver_dots-debuginfo"
63 build_base="$odin_root/bin/release"
64 else
65 name_base="odin-$ver_dots-debug"
66 name_base_sym="odin-$ver_dots-debug-debuginfo"
67 build_base="$odin_root/bin/debug"
68 fi
69
70 local out_base="$out_dir/$name_base"
71 local out_base_sym="$out_dir/$name_base_sym"
72
73 cmd_cleanup
74
75 # directories
76 run mkdir -p "$out_base/system32/"
77 run mkdir -p "$out_base_sym/system32/"
78
79 # WGSS50
80 run cp -Rdp "$odin_root/bin/wgss50.dll" "$out_base/system32/"
81 run cp -Rdp "$odin_root/bin/wgss50.sym" "$out_base_sym/system32/"
82
83 # DLLs
84 cp_prg_file "$build_base/*.dll" "system32/"
85
86 # executables
87 cp_prg_file "$build_base/odininst.exe" "system32/"
88 cp_prg_file "$build_base/pe.exe" "system32/"
89 cp_prg_file "$build_base/pec.exe" "system32/"
90 cp_prg_file "$build_base/regsvr32.exe" "system32/"
91 cp_prg_file "$build_base/xx2lx.exe" "system32/"
92
93 # Win32k
94 cp_prg_file "$build_base/win32k.sys" "system32/"
95 run cp -Rdp "$build_base/win32k.ddp" "$out_base/system32/"
96 cp_prg_file "$build_base/win32kCC.exe" "system32/"
97 cp_prg_file "$build_base/kRx.exe" "system32/"
98
99 # docs
100 run cp -Rdp \
101 "$odin_root/ChangeLog" \
102 "$odin_root/LICENSE.TXT" \
103 "$odin_root/WGSS50.lic" \
104 "$out_base/"
105 run cp -Rdp \
106 "$odin_root/doc/ChangeLog-*" \
107 "$odin_root/doc/Readme.txt" \
108 "$odin_root/doc/ReportingBugs.txt" \
109 "$odin_root/doc/Logging.txt" \
110 "$odin_root/doc/Odin.ini.txt" \
111 "$odin_root/doc/odinuser.inf" \
112 "$out_base/"
113
114 # create ZIPs
115 run cd "$out_dir"
116 run zip -SrX9 "$name_base.zip" "$name_base"
117 run mv "$name_base.zip" "$script_dir/"
118 run zip -SrX9 "$name_base_sym.zip" "$name_base_sym"
119 run mv "$name_base_sym.zip" "$script_dir/"
120 run cd "$start_dir"
121
122 cmd_cleanup
123
124 echo "ALL DONE."
125}
126
127cmd_help()
128{
129 echo \
130"
131Usage:
132 $0 release Create release ZIPs.
133 $0 debug Create debug ZIPs.
134 $0 all Do 'release' and 'debug' together.
135 $0 cleanup Remove what is created by the above commands (except ZIPs).
136"
137}
138
139#
140# Main
141#
142
143script_path=$(readlink -f $0)
144script_dir=${script_path%/*}
145
146start_dir=$(pwd)
147
148# Get Odin version number
149
150odin_root="$script_dir/../.."
151
152odinbuild_h="$odin_root/include/odinbuild.h"
153
154[ -f "$odinbuild_h" ] || \
155 die "Could not find file '$odinbuild_h'."
156
157ver_major=$(sed -nre \
158 "s/^#define ODIN32_VERSION_MAJOR[[:space:]]+([0-9]+).*$/\1/p" < "$odinbuild_h")
159ver_minor=$(sed -nre \
160 "s/^#define ODIN32_VERSION_MINOR[[:space:]]+([0-9]+).*$/\1/p" < "$odinbuild_h")
161ver_build=$(sed -nre \
162 "s/^#define ODIN32_BUILD_NR[[:space:]]+([0-9]+).*$/\1/p" < "$odinbuild_h")
163
164[ -z "$ver_major" -o -z "$ver_minor" -o -z "$ver_build" ] && \
165 die "Could not determine Odin version number in '$odinbuild_h.'"
166
167ver_dots="$ver_major.$ver_minor.$ver_build"
168
169# Parse arguments
170
171case $1 in
172 "--help" | "-?" | "-h" | "") cmd_help;;
173 "cleanup") cmd_cleanup;;
174 "release") cmd_create;;
175 "debug") cmd_create "debug";;
176 "all") cmd_create; cmd_create "debug";;
177esac
178
179# end of story
180
181exit 0
182
Note: See TracBrowser for help on using the repository browser.