rev |
line source |
pankso@7
|
1 #!/bin/sh
|
pankso@7
|
2 # Tazwok - SliTaz source compiler and binary packages generator/cooker.
|
pankso@7
|
3 #
|
MikeDSmith25@82
|
4 # Tazwok can compile source packages and create binary packages suitable for
|
MikeDSmith25@82
|
5 # Tazpkg (Tiny Autonomous zone package manager). You can build individual
|
MikeDSmith25@82
|
6 # packages or a list of packages with one command, rebuild the full distro,
|
pankso@7
|
7 # generate a packages repository and also list and get info about packages.
|
pankso@7
|
8 #
|
pankso@106
|
9 # (C) 2007-2009 SliTaz - GNU General Public License.
|
pankso@7
|
10 #
|
pankso@7
|
11
|
gokhlayeh@186
|
12 VERSION=3.9.0
|
gokhlayeh@186
|
13 . /usr/lib/slitaz/libtaz
|
gokhlayeh@186
|
14 source_lib commons
|
pankso@7
|
15
|
gokhlayeh@186
|
16 # Use text instead of numbers, don't get $2 here if it's an option.
|
gokhlayeh@186
|
17 [ "$2" = "${2#--}" ] && PACKAGE=$2 && LIST=$2 && ARG=$2
|
gokhlayeh@186
|
18 COMMAND=$1
|
pankso@7
|
19
|
gokhlayeh@186
|
20 ########################################################################
|
gokhlayeh@186
|
21 # TAZWOK USAGE
|
gokhlayeh@186
|
22 ########################
|
gokhlayeh@186
|
23 # Print the usage (English).
|
pankso@7
|
24
|
gokhlayeh@237
|
25 usage()
|
pankso@7
|
26 {
|
pankso@7
|
27 echo -e "\nSliTaz sources compiler and packages generator - Version: $VERSION\n
|
pankso@107
|
28 \033[1mUsage: \033[0m `basename $0` [command] [package|list|category|dir|id] [--option]
|
pankso@7
|
29 \033[1mCommands: \033[0m\n
|
pankso@7
|
30 usage Print this short usage.
|
pankso@7
|
31 stats Print Tazwok statistics from the config file and the wok.
|
pankso@133
|
32 edit Edit a package receipt in the current wok.
|
paul@121
|
33 build-depends Generate a list of packages to build a wok.
|
pankso@7
|
34 list List all packages in the wok tree or by category.
|
MikeDSmith25@82
|
35 info Get information about a package in the wok.
|
gokhlayeh@283
|
36 report Display commit/cooklist/broken/blocked.
|
pascal@92
|
37 check Check every receipt for common errors.
|
pankso@7
|
38 check-log Check the process log file of a package.
|
gokhlayeh@186
|
39 check-depends* Check every receipt for DEPENDS - doesn't scan ELF files.
|
erjo@159
|
40 check-src Check upstream tarball for package in the wok.
|
pankso@7
|
41 search Search for a package in the wok by pattern or name.
|
MikeDSmith25@82
|
42 compile Configure and build a package using the receipt rules.
|
pankso@7
|
43 genpkg Generate a suitable package for Tazpkg with the rules.
|
pankso@7
|
44 cook Compile and generate a package directly.
|
pankso@7
|
45 cook-list Cook all packages specified in the list by order.
|
gokhlayeh@186
|
46 cook-commit Cook all modified receipts.
|
gokhlayeh@186
|
47 cook-all Cook all packages excepted toolchain.
|
gokhlayeh@186
|
48 cook-toolchain Cook the toolchain packages.
|
gokhlayeh@240
|
49 gen-cooklist Generate a sorted cooklist using packages or list.
|
gokhlayeh@186
|
50 sort-cooklist Sort the cooklist given in argument.
|
gokhlayeh@186
|
51 get-src Download the tarball of the package given in argument.
|
pankso@7
|
52 clean Clean all generated files in the package tree.
|
pankso@7
|
53 new-tree Prepare a new package tree and receipt (--interactive).
|
gokhlayeh@186
|
54 gen-list (Re-)Generate a packages list for a repository.
|
gokhlayeh@240
|
55 check-list Update packages lists for a repository.
|
gokhlayeh@186
|
56 gen-wok-db (Re-)Generate wok lists with depends and wanted datas.
|
gokhlayeh@240
|
57 gen-clean-wok Generate a clean wok in a dir.
|
gokhlayeh@186
|
58 clean-wok Clean entirely the wok.
|
gokhlayeh@266
|
59 clean-src Remove old/unrelated-to-wok sources.
|
pankso@107
|
60 remove Remove a package from the wok.
|
gokhlayeh@240
|
61 webserver Enable/disable webserver on localhost.
|
pankso@108
|
62 hgup Pull and update a wok under Hg.
|
pankso@108
|
63 maintainers List all maintainers in the wok.
|
gokhlayeh@281
|
64 maintained-by List packages maintained by a contributor.
|
gokhlayeh@281
|
65 tags List all tags used in wok receipts.\n
|
gokhlayeh@186
|
66
|
gokhlayeh@186
|
67 You can use `basename $0` command --help to list avaible options.
|
gokhlayeh@186
|
68 \033[1mImportant - *: \033[0m Commands which need a rewrite."
|
pankso@7
|
69 }
|
pankso@7
|
70
|
gokhlayeh@186
|
71 # This function display an error message without returning any error code.
|
gokhlayeh@186
|
72 # It also log the message in source package's warnings.txt; this file can be
|
gokhlayeh@186
|
73 # used on an eventual package page on website to display cooking warnings.
|
gokhlayeh@186
|
74 tazwok_warning()
|
pankso@7
|
75 {
|
gokhlayeh@186
|
76 echo -e "tazwok: $1" >&2
|
gokhlayeh@186
|
77 echo -e "$1" >> $WOK/${WANTED:-$PACKAGE}/warning.txt
|
gokhlayeh@186
|
78 return
|
pankso@7
|
79 }
|
pankso@7
|
80
|
gokhlayeh@186
|
81 ########################################################################
|
gokhlayeh@186
|
82 # TAZWOK VARIABLES & INITIAL CONFIGURATION
|
gokhlayeh@186
|
83 ########################
|
gokhlayeh@186
|
84
|
gokhlayeh@186
|
85 get_tazwok_config()
|
pankso@7
|
86 {
|
gokhlayeh@186
|
87 # Get configuration file.
|
gokhlayeh@186
|
88 get_config
|
gokhlayeh@186
|
89
|
gokhlayeh@186
|
90 # Define & get options.
|
gokhlayeh@186
|
91 get_options_list="$get_options_list SLITAZ_DIR SLITAZ_VERSION undigest"
|
gokhlayeh@186
|
92 get_options
|
gokhlayeh@186
|
93
|
gokhlayeh@186
|
94 if [ "$undigest" ]; then
|
gokhlayeh@186
|
95 LOCAL_REPOSITORY=$SLITAZ_DIR/$undigest
|
gokhlayeh@186
|
96 else
|
gokhlayeh@186
|
97 LOCAL_REPOSITORY=$SLITAZ_DIR/$SLITAZ_VERSION
|
pankso@7
|
98 fi
|
gokhlayeh@235
|
99
|
gokhlayeh@235
|
100 if ! [ "$save_dir" ]; then
|
gokhlayeh@235
|
101 if [ -f $LOCAL_REPOSITORY/tazwok.conf ] || [ -f $LOCAL_REPOSITORY/slitaz.conf ]; then
|
gokhlayeh@235
|
102 save_dir=$LOCAL_REPOSITORY
|
gokhlayeh@235
|
103 [ -f $LOCAL_REPOSITORY/slitaz.conf ] && source $LOCAL_REPOSITORY/slitaz.conf
|
gokhlayeh@235
|
104 cd $save_dir
|
gokhlayeh@235
|
105 get_tazwok_config
|
gokhlayeh@235
|
106 unset save_dir
|
gokhlayeh@235
|
107 return
|
gokhlayeh@235
|
108 fi
|
gokhlayeh@235
|
109 fi
|
gokhlayeh@235
|
110
|
gokhlayeh@186
|
111 # The path to the most important files/dir used by Tazwok.
|
gokhlayeh@186
|
112 PACKAGES_REPOSITORY=$LOCAL_REPOSITORY/packages
|
gokhlayeh@186
|
113 WOK=$LOCAL_REPOSITORY/wok
|
gokhlayeh@186
|
114 INCOMING_REPOSITORY=$LOCAL_REPOSITORY/packages-incoming
|
gokhlayeh@186
|
115 SOURCES_REPOSITORY=$LOCAL_REPOSITORY/src
|
gokhlayeh@186
|
116 set_common_path
|
gokhlayeh@186
|
117
|
gokhlayeh@186
|
118 # /!\ This part needs some changes.
|
gokhlayeh@186
|
119 # Basically, get theses files from the net if they are missing.
|
gokhlayeh@186
|
120 dep_db=$INCOMING_REPOSITORY/wok-depends.txt
|
gokhlayeh@186
|
121 wan_db=$INCOMING_REPOSITORY/wok-wanted.txt
|
gokhlayeh@186
|
122
|
gokhlayeh@186
|
123 # Check commons directories, create them if user is root.
|
gokhlayeh@186
|
124 if test $(id -u) = 0 ; then
|
gokhlayeh@186
|
125 check_dir $WOK || chmod 777 $WOK
|
gokhlayeh@186
|
126 check_dir $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
127 check_dir $SOURCES_REPOSITORY
|
gokhlayeh@186
|
128 check_dir $INCOMING_REPOSITORY
|
gokhlayeh@186
|
129 check_dir $LOCAL_REPOSITORY/log
|
gokhlayeh@293
|
130 [ -f $dep_db ] || touch $dep_db
|
gokhlayeh@293
|
131 [ -f $wan_db ] || touch $wan_db
|
gokhlayeh@293
|
132 [ -f $PACKAGES_REPOSITORY/cookorder.txt ] || touch $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@293
|
133 for file in broken blocked commit incoming cooklist; do
|
gokhlayeh@293
|
134 [ ! -f $PACKAGES_REPOSITORY/$file ] && touch $PACKAGES_REPOSITORY/$file
|
gokhlayeh@293
|
135 done
|
gokhlayeh@293
|
136 touch $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@186
|
137 fi
|
gokhlayeh@235
|
138
|
gokhlayeh@186
|
139
|
gokhlayeh@186
|
140 # Limit memory usage.
|
gokhlayeh@186
|
141 ulimit -v $(awk '/MemTotal/ { print int(($2*80)/100) }' < /proc/meminfo)
|
pankso@7
|
142 }
|
pankso@7
|
143
|
gokhlayeh@186
|
144 # Used in several functions.
|
gokhlayeh@186
|
145 set_common_path()
|
gokhlayeh@186
|
146 {
|
gokhlayeh@186
|
147 # The receipt is used to compile the source code and
|
gokhlayeh@186
|
148 # generate suitable packages for Tazpkg.
|
gokhlayeh@186
|
149 RECEIPT="$WOK/$PACKAGE/receipt"
|
gokhlayeh@186
|
150
|
gokhlayeh@186
|
151 # The path to the process log file.
|
gokhlayeh@186
|
152 LOG="$WOK/$PACKAGE/process.log"
|
gokhlayeh@186
|
153 }
|
gokhlayeh@186
|
154
|
gokhlayeh@186
|
155 ########################################################################
|
gokhlayeh@186
|
156 # TAZWOK CHECK FUNCTIONS
|
gokhlayeh@186
|
157 ########################
|
gokhlayeh@186
|
158
|
pankso@7
|
159 # Check for a package name on cmdline.
|
pankso@7
|
160 check_for_package_on_cmdline()
|
pankso@7
|
161 {
|
gokhlayeh@186
|
162 if [ ! "$PACKAGE" ]; then
|
gokhlayeh@186
|
163 echo -e "\nYou must specify a package name on the command line." >&2
|
gokhlayeh@186
|
164 echo -e "Example : tazwok $COMMAND package\n" >&2
|
gokhlayeh@186
|
165 exit 1
|
pankso@7
|
166 fi
|
pankso@7
|
167 }
|
pankso@7
|
168
|
pankso@7
|
169 # Check for the receipt of a package used to cook.
|
pankso@7
|
170 check_for_receipt()
|
pankso@7
|
171 {
|
pankso@7
|
172 if [ ! -f "$RECEIPT" ]; then
|
gokhlayeh@186
|
173 echo -e "\nUnable to find the receipt : $RECEIPT\n" >&2
|
gokhlayeh@186
|
174 exit 1
|
pankso@7
|
175 fi
|
pankso@7
|
176 }
|
pankso@7
|
177
|
pankso@7
|
178 # Check for a specified file list on cmdline.
|
pankso@7
|
179 check_for_list()
|
pankso@7
|
180 {
|
gokhlayeh@186
|
181 if [ ! "$LIST" ]; then
|
gokhlayeh@186
|
182 echo -e "\nPlease specify the path to the list of packages to cook.\n" >&2
|
gokhlayeh@186
|
183 exit 1
|
pankso@7
|
184 fi
|
gokhlayeh@186
|
185
|
MikeDSmith25@82
|
186 # Check if the list of packages exists.
|
pankso@7
|
187 if [ -f "$LIST" ]; then
|
pankso@7
|
188 LIST=`cat $LIST`
|
pankso@7
|
189 else
|
gokhlayeh@186
|
190 echo -e "\nUnable to find $LIST packages list.\n" >&2
|
gokhlayeh@186
|
191 exit 1
|
pankso@7
|
192 fi
|
gokhlayeh@186
|
193
|
gokhlayeh@186
|
194 if [ ! "$LIST" ]; then
|
gokhlayeh@186
|
195 echo -e "\nList is empty.\n" >&2
|
gokhlayeh@186
|
196 exit 1
|
gokhlayeh@186
|
197 fi
|
gokhlayeh@186
|
198 }
|
gokhlayeh@186
|
199
|
gokhlayeh@204
|
200 check_for_pkg_in_wok()
|
gokhlayeh@204
|
201 {
|
gokhlayeh@204
|
202 [ -f $WOK/$PACKAGE/receipt ] && return
|
gokhlayeh@204
|
203 if [ "$undigest" ]; then
|
gokhlayeh@204
|
204 [ -f "$SLITAZ_VERSION/wok/$PACKAGE/receipt" ] && return 1
|
gokhlayeh@240
|
205 grep -q ^$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages/packages.txt && return 1
|
gokhlayeh@204
|
206 fi
|
gokhlayeh@204
|
207 echo "Can't find $PACKAGE in wok or mirror" >&2
|
gokhlayeh@204
|
208 return 2
|
gokhlayeh@204
|
209 }
|
gokhlayeh@186
|
210
|
gokhlayeh@186
|
211 ########################################################################
|
gokhlayeh@186
|
212 # TAZWOK CORE FUNCTIONS
|
gokhlayeh@186
|
213 ########################
|
gokhlayeh@186
|
214
|
gokhlayeh@186
|
215 remove_src()
|
gokhlayeh@186
|
216 {
|
gokhlayeh@204
|
217 [ "$WANTED" ] && return
|
gokhlayeh@186
|
218 look_for_cookopt !remove_src && return
|
gokhlayeh@215
|
219 if [ ! -d $WOK/$PACKAGE/install ] && [ "$src" ] && [ -d "$src/_pkg" ]; then
|
gokhlayeh@186
|
220 check_for_var_modification _pkg src || return
|
gokhlayeh@215
|
221 mv "$src/_pkg" $WOK/$PACKAGE/install
|
gokhlayeh@186
|
222 fi
|
gokhlayeh@186
|
223
|
gokhlayeh@186
|
224 # Don't remove sources if a package use src variable in his
|
gokhlayeh@186
|
225 # genpkg_rules: it maybe need something inside.
|
gokhlayeh@186
|
226 for i in $PACKAGE $(look_for_rwanted); do
|
gokhlayeh@186
|
227 sed -n '/^genpkg_rules\(\)/','/}/'p $WOK/$i/receipt | \
|
gokhlayeh@195
|
228 fgrep -q '$src' && tazwok_warning "Sources will not be removed \
|
gokhlayeh@186
|
229 because $i use \$src in his receipt." && return
|
gokhlayeh@186
|
230 done
|
gokhlayeh@186
|
231
|
gokhlayeh@186
|
232 report step "Removing sources directory"
|
gokhlayeh@186
|
233 rm -fr "$src"
|
gokhlayeh@186
|
234 report end-step
|
gokhlayeh@186
|
235 }
|
gokhlayeh@186
|
236
|
gokhlayeh@186
|
237 # Check $COOK_OPT; usage : get_cookopt particular_opt
|
gokhlayeh@186
|
238 # Return error if not founded
|
gokhlayeh@186
|
239 # Return args if the opt is in the format opt=arg1:arg2:etc
|
gokhlayeh@186
|
240 look_for_cookopt()
|
gokhlayeh@186
|
241 {
|
gokhlayeh@186
|
242 for arg in $COOK_OPT; do
|
gokhlayeh@186
|
243 case $arg in
|
gokhlayeh@186
|
244 $1=*)
|
gokhlayeh@186
|
245 arg=${arg#$1=}
|
gokhlayeh@186
|
246 while [ "$arg" ]; do
|
gokhlayeh@186
|
247 echo "${arg%%:*}"
|
gokhlayeh@186
|
248 [ "${arg/:}" = "$arg" ] && return
|
gokhlayeh@186
|
249 arg=${arg#*:}
|
gokhlayeh@186
|
250 done
|
gokhlayeh@186
|
251 ;;
|
gokhlayeh@186
|
252 $1)
|
gokhlayeh@186
|
253 return
|
gokhlayeh@186
|
254 ;;
|
gokhlayeh@186
|
255 esac
|
gokhlayeh@186
|
256 done
|
gokhlayeh@186
|
257 return 1
|
pankso@7
|
258 }
|
pankso@7
|
259
|
pankso@7
|
260 # Check for the wanted package if specified in WANTED
|
paul@166
|
261 # receipt variable. Set the $src/$_pkg variable to help compile
|
paul@166
|
262 # and generate packages.
|
pankso@7
|
263 check_for_wanted()
|
pankso@7
|
264 {
|
gokhlayeh@186
|
265 if [ "$WANTED" ]; then
|
gokhlayeh@186
|
266 report "Checking for the wanted package"
|
pankso@7
|
267 if [ ! -d "$WOK/$WANTED" ]; then
|
gokhlayeh@186
|
268 report exit "\nWanted package is missing in the work directory.\n"
|
pankso@7
|
269 fi
|
gokhlayeh@186
|
270
|
erjo@38
|
271 # Checking for buildtree of Wanted package
|
pankso@39
|
272 if [ ! -d "$WOK/$WANTED/taz" ]; then
|
erjo@38
|
273 echo -e "\n\nSource files of wanted package is missing in the work directory."
|
erjo@38
|
274 echo -n "Would you like to build the missing package (y/N) ? " ; read anser
|
erjo@38
|
275 if [ "$anser" == "y" ]; then
|
erjo@38
|
276 tazwok cook $WANTED
|
erjo@38
|
277 else
|
gokhlayeh@186
|
278 report exit "\nWanted package source tree is missing in the work directory.\n"
|
erjo@38
|
279 fi
|
erjo@38
|
280 fi
|
gokhlayeh@186
|
281 report end-step
|
gokhlayeh@186
|
282
|
pankso@7
|
283 # Set wanted src path.
|
gokhlayeh@186
|
284 set_src_path && set_pkg_path
|
gokhlayeh@186
|
285
|
pankso@7
|
286 fi
|
pankso@7
|
287 }
|
pankso@7
|
288
|
pankso@40
|
289 # Check for build dependencies, notify user and install if specified.
|
pankso@18
|
290 check_for_build_depends()
|
pankso@18
|
291 {
|
gokhlayeh@204
|
292 [ "$WANTED" ] && return
|
gokhlayeh@213
|
293 [ "$CATEGORY" = meta ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@272
|
294 [ ! "$BUILD_DEPENDS" ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@186
|
295 report step "Looking for build dependencies"
|
gokhlayeh@186
|
296
|
gokhlayeh@186
|
297 # Keep the list of previously installed build_depends then compare
|
gokhlayeh@186
|
298 # it with new build_depends to know what to install and what to
|
gokhlayeh@186
|
299 # what to remove.
|
gokhlayeh@186
|
300 plan_remove=" $MISSING_PACKAGE $remove_later "
|
gokhlayeh@186
|
301 [ ! "${plan_remove// }" ] && unset plan_remove
|
gokhlayeh@186
|
302 unset MISSING_PACKAGE remove_later
|
gokhlayeh@186
|
303 rwanted=$(look_for_rwanted)
|
gokhlayeh@186
|
304
|
gokhlayeh@215
|
305 for pkg in $(scan $PACKAGE --look_for=bdep --with_dev | \
|
gokhlayeh@204
|
306 fgrep -v $(for i in $(look_for_rwanted) $PACKAGE; do echo " -e $i"; done))
|
pankso@18
|
307 do
|
gokhlayeh@186
|
308
|
gokhlayeh@186
|
309 # Delay the removing of previous cook depends if they are needed
|
gokhlayeh@186
|
310 # for next cook too.
|
gokhlayeh@186
|
311 if [ ! -d "$INSTALLED/$pkg" ] ; then
|
gokhlayeh@186
|
312 MISSING_PACKAGE="$MISSING_PACKAGE $pkg"
|
gokhlayeh@186
|
313 fi
|
gokhlayeh@186
|
314 if [ "$plan_remove" != "${plan_remove/ $pkg }" ]; then
|
gokhlayeh@186
|
315 plan_remove="${plan_remove/ $pkg / }"
|
gokhlayeh@186
|
316 remove_later="$remove_later $pkg"
|
gokhlayeh@186
|
317 fi
|
gokhlayeh@186
|
318 if grep -q ^$pkg$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
319 broken="$broken$pkg "
|
pankso@18
|
320 fi
|
pankso@18
|
321 done
|
gokhlayeh@186
|
322
|
gokhlayeh@186
|
323 # Don't cook if a depend is broken.
|
gokhlayeh@186
|
324 if [ "$broken" ]; then
|
gokhlayeh@186
|
325 MISSING_PACKAGE=$plan_remove
|
gokhlayeh@186
|
326 echo "Can't cook $PACKAGE because broken depend(s) : $broken" >&2
|
gokhlayeh@186
|
327 unset plan_remove broken
|
gokhlayeh@186
|
328
|
gokhlayeh@186
|
329 # Set report step to failed.
|
gokhlayeh@186
|
330 report_return_code=1
|
gokhlayeh@186
|
331 report end-step
|
gokhlayeh@186
|
332 return 1
|
gokhlayeh@186
|
333 fi
|
gokhlayeh@186
|
334 if [ "$MISSING_PACKAGE" ]; then
|
gokhlayeh@186
|
335 install_missing()
|
gokhlayeh@186
|
336 {
|
gokhlayeh@186
|
337 echo "Installing missing packages : $MISSING_PACKAGE"
|
gokhlayeh@186
|
338 for pkg in $MISSING_PACKAGE; do
|
gokhlayeh@186
|
339 [ -d "$INSTALLED/$pkg" ] || tazpkg get-install $pkg
|
gokhlayeh@186
|
340 done
|
gokhlayeh@186
|
341 }
|
gokhlayeh@186
|
342 if [ "$auto_install" = yes ]; then
|
gokhlayeh@186
|
343 install_missing
|
gokhlayeh@186
|
344 else
|
gokhlayeh@186
|
345 echo "================================================================================"
|
gokhlayeh@186
|
346 for pkg in $MISSING_PACKAGE
|
gokhlayeh@186
|
347 do
|
pankso@18
|
348 echo "Missing : $pkg"
|
gokhlayeh@186
|
349 done
|
gokhlayeh@186
|
350 echo "================================================================================"
|
gokhlayeh@186
|
351 echo "You can continue, exit or install missing dependencies."
|
gokhlayeh@186
|
352 echo -n "Install, continue or exit (install/y/N) ? "; read answer
|
gokhlayeh@186
|
353 case $answer in
|
gokhlayeh@186
|
354 install)
|
gokhlayeh@186
|
355 install_missing ;;
|
gokhlayeh@186
|
356 y|yes)
|
gokhlayeh@186
|
357 unset MISSING_PACKAGE;;
|
gokhlayeh@186
|
358 *)
|
gokhlayeh@186
|
359 report stop
|
gokhlayeh@186
|
360 exit 0 ;;
|
gokhlayeh@186
|
361 esac
|
gokhlayeh@186
|
362 fi
|
gokhlayeh@186
|
363 fi
|
gokhlayeh@186
|
364 report end-step
|
gokhlayeh@186
|
365 remove_build_depends $plan_remove
|
gokhlayeh@186
|
366 unset plan_remove
|
gokhlayeh@186
|
367 }
|
gokhlayeh@186
|
368
|
gokhlayeh@186
|
369 remove_build_depends()
|
gokhlayeh@186
|
370 {
|
gokhlayeh@186
|
371 [ "$1" ] || return
|
gokhlayeh@186
|
372 report step "Removing previous build dependencies"
|
gokhlayeh@186
|
373 echo "Removing theses packages : $@"
|
gokhlayeh@186
|
374 for pkg in $@; do
|
gokhlayeh@223
|
375 [ -d "$INSTALLED/$pkg" ] && tazpkg remove $pkg --auto
|
gokhlayeh@186
|
376 done
|
gokhlayeh@186
|
377 report end-step
|
gokhlayeh@186
|
378 }
|
gokhlayeh@186
|
379
|
gokhlayeh@186
|
380 # Check if we can use the new way to handle tarball
|
gokhlayeh@186
|
381 # or if we keep the previous method by check for
|
gokhlayeh@186
|
382 # _pkg=/src= in receipt and reverse-wanted.
|
gokhlayeh@186
|
383 check_for_var_modification()
|
gokhlayeh@186
|
384 {
|
gokhlayeh@186
|
385 for var in $@; do
|
gokhlayeh@186
|
386 for pkg in $PACKAGE $(look_for_wanted) $(look_for_rwanted); do
|
gokhlayeh@186
|
387 [ -f $WOK/$pkg/receipt ] || continue
|
gokhlayeh@195
|
388 fgrep -q "$var=" $WOK/$pkg/receipt && return 1
|
pankso@18
|
389 done
|
gokhlayeh@186
|
390 done
|
gokhlayeh@186
|
391
|
gokhlayeh@186
|
392 # Tweak to make if; then...; fi function working with this one.
|
gokhlayeh@186
|
393 echo -n ""
|
gokhlayeh@186
|
394 }
|
gokhlayeh@186
|
395
|
gokhlayeh@186
|
396 set_src_path()
|
gokhlayeh@186
|
397 {
|
gokhlayeh@186
|
398 if check_for_var_modification src _pkg; then
|
gokhlayeh@186
|
399 src=$WOK/${WANTED:-$PACKAGE}/${WANTED:-$PACKAGE}-$VERSION
|
gokhlayeh@186
|
400 else
|
gokhlayeh@266
|
401 tazwok_warning "Use original name or tarball root directory because src/_pkg are defined into the receipt (this is no more needed!)."
|
gokhlayeh@186
|
402 src=$WOK/${WANTED:-$PACKAGE}/${SOURCE:-${WANTED:-$PACKAGE}}-$VERSION
|
pankso@18
|
403 fi
|
gokhlayeh@298
|
404 stuff=$WOK/$PACKAGE/stuff
|
gokhlayeh@298
|
405 [ "$WANTED" ] && wanted_stuff=$WOK/$WANTED/stuff
|
pankso@18
|
406 }
|
pascal@76
|
407
|
gokhlayeh@186
|
408 set_pkg_path()
|
gokhlayeh@186
|
409 {
|
slaxemulator@269
|
410 if [ -d $WOK/${WANTED:-$PACKAGE}/install ] ; then
|
gokhlayeh@186
|
411 _pkg=$WOK/${WANTED:-$PACKAGE}/install
|
gokhlayeh@186
|
412 else
|
gokhlayeh@186
|
413 _pkg=$src/_pkg
|
gokhlayeh@186
|
414 fi
|
gokhlayeh@186
|
415 }
|
gokhlayeh@186
|
416
|
gokhlayeh@186
|
417 # Output $VERSION-$EXTRAVERSION using packages.txt
|
gokhlayeh@186
|
418 get_pkg_version()
|
gokhlayeh@186
|
419 {
|
gokhlayeh@186
|
420 [ "$PACKAGE" ] || return
|
gokhlayeh@204
|
421 grep -m1 -A1 -sh ^$PACKAGE$ $1/packages.txt | tail -1 | sed 's/ *//'
|
gokhlayeh@186
|
422 }
|
gokhlayeh@186
|
423
|
gokhlayeh@186
|
424 remove_previous_package()
|
gokhlayeh@186
|
425 {
|
gokhlayeh@186
|
426 [ "$prev_VERSION" ] || return
|
gokhlayeh@186
|
427 if [ "$VERSION$EXTRAVERSION" != "$prev_VERSION" ]; then
|
gokhlayeh@186
|
428 rm -f $1/$PACKAGE-$prev_VERSION.tazpkg
|
gokhlayeh@186
|
429 fi
|
gokhlayeh@204
|
430 return
|
gokhlayeh@186
|
431 }
|
gokhlayeh@186
|
432
|
gokhlayeh@186
|
433 # Check for src tarball and wget if needed.
|
gokhlayeh@186
|
434 check_for_tarball()
|
gokhlayeh@186
|
435 {
|
gokhlayeh@258
|
436 [ "$WGET_URL" ] || return 0
|
gokhlayeh@290
|
437 report step "Checking for source tarball: $PACKAGE"
|
gokhlayeh@266
|
438 local repack_src TARBALL
|
gokhlayeh@266
|
439 if [ "$repack_src" = yes ] && look_for_cookopt !repack_src; then
|
gokhlayeh@266
|
440 repack_src=no
|
gokhlayeh@266
|
441 fi
|
gokhlayeh@266
|
442 if [ "$target" ]; then
|
gokhlayeh@266
|
443 src="$target"
|
gokhlayeh@266
|
444 else
|
gokhlayeh@266
|
445 set_src_path
|
gokhlayeh@266
|
446 fi
|
gokhlayeh@266
|
447 tmp_src=$tmp/tarball-$$
|
gokhlayeh@253
|
448 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \
|
gokhlayeh@253
|
449 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] ; then
|
gokhlayeh@253
|
450 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
451 if [ "$SOURCE" ]; then
|
gokhlayeh@266
|
452 alt_url="http://mirror.slitaz.org/sources/packages/${SOURCE:0:1}/$SOURCE-$VERSION.tar.lzma"
|
gokhlayeh@266
|
453 else
|
gokhlayeh@266
|
454 alt_url="http://mirror.slitaz.org/sources/packages/${PACKAGE:0:1}/$PACKAGE-$VERSION.tar.lzma"
|
slaxemulator@232
|
455 fi
|
gokhlayeh@266
|
456 download $WGET_URL $alt_url http://mirror.slitaz.org/sources/packages/${file:0:1}/$file
|
gokhlayeh@266
|
457 unset alt_url
|
gokhlayeh@253
|
458 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \
|
gokhlayeh@266
|
459 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && \
|
gokhlayeh@266
|
460 [ ! -d $tmp_src ]; then
|
gokhlayeh@253
|
461 echo -e "\nDownload failed, exiting. Please check WGET_URL variable.\n" >&2
|
gokhlayeh@253
|
462 report end-step
|
gokhlayeh@253
|
463 return 1
|
gokhlayeh@253
|
464 fi
|
slaxemulator@232
|
465 fi
|
gokhlayeh@253
|
466 report end-step
|
gokhlayeh@234
|
467 if [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && [ "$nounpack" ]; then
|
gokhlayeh@266
|
468 [ -d "$tmp_src" ] && rm -r $tmp_src
|
slaxemulator@232
|
469 return
|
slaxemulator@232
|
470 fi
|
slaxemulator@232
|
471
|
slaxemulator@232
|
472 # Untaring source if necessary. We don't need to extract source if
|
slaxemulator@232
|
473 # the package is built with a wanted source package.
|
slaxemulator@232
|
474 if [ "$WANTED" ]; then
|
gokhlayeh@266
|
475 [ -d "$tmp_src" ] && rm -r $tmp_src
|
slaxemulator@232
|
476 return
|
slaxemulator@232
|
477 fi
|
slaxemulator@232
|
478
|
slaxemulator@232
|
479 report step "Untaring source tarball"
|
slaxemulator@232
|
480
|
slaxemulator@232
|
481 # Log process.
|
slaxemulator@232
|
482 echo "untaring source tarball" >> $LOG
|
gokhlayeh@266
|
483
|
gokhlayeh@266
|
484 # If $tmp_src exists, there's already the unpacked tarball into it.
|
gokhlayeh@266
|
485 if ! [ -d $tmp_src ]; then
|
gokhlayeh@266
|
486 mkdir $tmp_src
|
gokhlayeh@266
|
487 if [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && [ "$repack_src" = yes ]; then
|
gokhlayeh@266
|
488 lzma d $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma -so | \
|
gokhlayeh@266
|
489 tar xf - -C $tmp_src
|
gokhlayeh@266
|
490 repack_src=no
|
gokhlayeh@266
|
491 TARBALL=${SOURCE:-$PACKAGE}-$VERSION.tar.lzma
|
gokhlayeh@266
|
492 elif [ -f "$SOURCES_REPOSITORY/$TARBALL" ]; then
|
gokhlayeh@266
|
493 case "$TARBALL" in
|
gokhlayeh@266
|
494 *zip|*xpi) cd $tmp_src && unzip -o $SOURCES_REPOSITORY/$TARBALL ;;
|
gokhlayeh@266
|
495 *bz2|*tbz|*gem) tar xjf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
496 *tar) tar xf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
497 *lzma|*lz) unlzma -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
498 *xz) unxz -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
499 *Z|*taz) uncompress -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
500 *gz) tar xzf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
501 *rpm) cd $tmp_src && rpm2cpio $SOURCES_REPOSITORY/$TARBALL | cpio -idm --quiet;;
|
gokhlayeh@266
|
502
|
gokhlayeh@266
|
503 # It's a plain file or something receipt unpack itself.
|
gokhlayeh@266
|
504 *)
|
gokhlayeh@266
|
505 mkdir $tmp_src/${SOURCE:-$PACKAGE}-$VERSION
|
gokhlayeh@266
|
506 cp $SOURCES_REPOSITORY/$TARBALL $tmp_src/${src##*/}
|
gokhlayeh@266
|
507 ;;
|
gokhlayeh@266
|
508
|
gokhlayeh@271
|
509 esac || { report end-step
|
gokhlayeh@271
|
510 rm -f $SOURCES_REPOSITORY/$TARBALL
|
gokhlayeh@271
|
511 rm -r $tmp_src
|
gokhlayeh@271
|
512 return 1
|
gokhlayeh@271
|
513 }
|
gokhlayeh@266
|
514 fi
|
gokhlayeh@266
|
515
|
slaxemulator@232
|
516 # Check if uncompressed tarball is in a root dir or not.
|
gokhlayeh@266
|
517 if [ "$(ls -A $tmp_src | wc -l)" -gt 1 ] || [ -f $(echo $tmp_src/*) ]; then
|
slaxemulator@232
|
518 if check_for_var_modification src _pkg; then
|
slaxemulator@232
|
519 mv $tmp_src $tmp_src-1
|
slaxemulator@232
|
520 mkdir $tmp_src
|
gokhlayeh@233
|
521 mv $tmp_src-1 $tmp_src/${SOURCE:-$PACKAGE}-$VERSION
|
slaxemulator@232
|
522 else
|
slaxemulator@232
|
523 mv $tmp_src/* $WOK/$PACKAGE
|
slaxemulator@232
|
524 repack_src=no
|
slaxemulator@232
|
525 rm -r $tmp_src
|
gokhlayeh@266
|
526 tazwok_warning "Put all files into $WOK/$PACKAGE; not sure about how to handle this tarball (no root dir)... Please try to remove src/_pkg definition from receipt if you encounter a problem."
|
slaxemulator@232
|
527 fi
|
slaxemulator@232
|
528 fi
|
gokhlayeh@266
|
529 fi
|
gokhlayeh@266
|
530
|
gokhlayeh@266
|
531 if [ "$repack_src" = yes ]; then
|
slaxemulator@232
|
532 report step "Repacking sources in .tar.lzma format"
|
gokhlayeh@266
|
533 [ "$TARBALL" ] && rm -f $SOURCES_REPOSITORY/$TARBALL
|
gokhlayeh@266
|
534 TARBALL=${SOURCE:-$PACKAGE}-$VERSION.tar.lzma
|
slaxemulator@232
|
535 cd $tmp_src
|
gokhlayeh@266
|
536 tar -c * | lzma e $SOURCES_REPOSITORY/$TARBALL -si
|
gokhlayeh@266
|
537 fi
|
slaxemulator@232
|
538
|
gokhlayeh@266
|
539 # Remove previous tarball if no other package needs it. We take care to
|
gokhlayeh@266
|
540 # keep tarball if the same package use it into main repository.
|
gokhlayeh@266
|
541 if [ "$TARBALL" ]; then
|
gokhlayeh@266
|
542 previous_tarball=$(grep ^$PACKAGE:incoming $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
543 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
544 sed "/^$PACKAGE:incoming/ s/.*/$PACKAGE:incoming\t$TARBALL/" \
|
gokhlayeh@266
|
545 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
546 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
547 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
548 else
|
gokhlayeh@266
|
549 echo -e "$PACKAGE:incoming\t$TARBALL" >> $SOURCES_REPOSITORY/sources.list
|
slaxemulator@232
|
550 fi
|
slaxemulator@232
|
551 fi
|
gokhlayeh@266
|
552
|
slaxemulator@232
|
553 if [ "$nounpack" ]; then
|
slaxemulator@232
|
554 [ -d "$tmp_src" ] && rm -r $tmp_src
|
gokhlayeh@285
|
555 report end-step
|
slaxemulator@232
|
556 return
|
slaxemulator@232
|
557 fi
|
gokhlayeh@285
|
558 if [ ! -d "$src" ]|| [ "$target" ]; then
|
gokhlayeh@285
|
559 # Permissions settings.
|
gokhlayeh@285
|
560 chown -R root.root "$tmp_src"
|
gokhlayeh@285
|
561 if [ -d "$src" ]; then
|
gokhlayeh@285
|
562 mkdir -p $src
|
gokhlayeh@285
|
563 for f in $tmp_src/*/*; do
|
gokhlayeh@285
|
564 cp -a $f $src || { report end-step; rm -r $tmp_src; return 1; }
|
gokhlayeh@285
|
565 done
|
gokhlayeh@285
|
566 else
|
gokhlayeh@285
|
567 if ! check_for_var_modification src _pkg && ! [ "$target" ]; then
|
gokhlayeh@285
|
568 src="${src%/*}/$(ls $tmp_src)"
|
gokhlayeh@285
|
569 fi
|
gokhlayeh@285
|
570 mv $(echo $tmp_src/*) "$src" || { report end-step; rm -r $tmp_src; return 1; }
|
gokhlayeh@186
|
571 fi
|
gokhlayeh@266
|
572 rm -r $tmp_src
|
gokhlayeh@266
|
573 else
|
gokhlayeh@266
|
574 [ -d "$tmp_src" ] && rm -r $tmp_src
|
gokhlayeh@266
|
575 echo "There's already something at $src. Abort." >&2
|
gokhlayeh@186
|
576 fi
|
gokhlayeh@285
|
577 report end-step
|
gokhlayeh@186
|
578 }
|
gokhlayeh@186
|
579
|
gokhlayeh@186
|
580 # Log and execute compile_rules function if it exists, to configure and
|
gokhlayeh@186
|
581 # make the package if it exists.
|
gokhlayeh@186
|
582 check_for_compile_rules()
|
gokhlayeh@186
|
583 {
|
gokhlayeh@186
|
584 if grep -q ^compile_rules $RECEIPT; then
|
gokhlayeh@186
|
585 echo "executing compile_rules" >> $LOG
|
gokhlayeh@186
|
586 report step "Executing compile_rules"
|
gokhlayeh@186
|
587 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
588 rm -f /tmp/config.site
|
gokhlayeh@186
|
589
|
gokhlayeh@186
|
590 # Free some RAM by cleaning cache if option is enabled.
|
slaxemulator@200
|
591 freeram=$(free | fgrep '/+ buffers' | tr -s ' ' | cut -f 4 -d ' ')
|
gokhlayeh@186
|
592
|
gokhlayeh@186
|
593 # Disable -pipe in CFLAGS/CXXFLAGS if less than 512Mb of free
|
gokhlayeh@186
|
594 # RAM are available.
|
gokhlayeh@195
|
595 if [ "$freeram" -lt 524288 ] && [ "$CFLAGS" != "${CFLAGS/-pipe}" -o \
|
gokhlayeh@195
|
596 "$CXXFLAGS" != "${CXXFLAGS/-pipe}" ]; then
|
gokhlayeh@195
|
597 tazwok_warning "Disabling -pipe compile flag because only ${freeram}b of RAM are available."
|
gokhlayeh@186
|
598 CFLAGS="${CFLAGS/-pipe}"
|
gokhlayeh@186
|
599 CXXFLAGS="${CXXFLAGS/-pipe}"
|
gokhlayeh@186
|
600 fi
|
gokhlayeh@186
|
601 unset freeram
|
gokhlayeh@186
|
602
|
gokhlayeh@186
|
603 # Set cook environnement variables.
|
gokhlayeh@186
|
604 [ "$src" ] || set_src_path
|
gokhlayeh@186
|
605 [ "$DESTDIR" ] || DESTDIR="$WOK/$PACKAGE/install"
|
gokhlayeh@186
|
606 [ "$CONFIG_SITE" ] || CONFIG_SITE=/etc/config.site
|
gokhlayeh@186
|
607 export CFLAGS CXXFLAGS MAKEFLAGS DESTDIR BUILD_HOST \
|
gokhlayeh@186
|
608 CONFIG_SITE default_prefix \
|
gokhlayeh@186
|
609 default_datarootdir default_datadir default_localedir \
|
gokhlayeh@186
|
610 default_infodir default_mandir default_build default_host
|
gokhlayeh@186
|
611 local LC_ALL=POSIX LANG=POSIX
|
gokhlayeh@186
|
612 compile_rules
|
gokhlayeh@186
|
613
|
gokhlayeh@186
|
614 # Check if config.site has been used.
|
gokhlayeh@186
|
615 # /!\ disabled since it screw the return_code of the step.
|
gokhlayeh@186
|
616 #if [ -f /tmp/config.site ]; then
|
gokhlayeh@186
|
617 # rm /tmp/config.site
|
gokhlayeh@186
|
618 #else
|
gokhlayeh@186
|
619 # tazwok_warning "config.site hasn't been used during \
|
gokhlayeh@186
|
620 #configuration process."
|
gokhlayeh@186
|
621 #fi
|
gokhlayeh@186
|
622 report end-step
|
gokhlayeh@186
|
623 fi
|
gokhlayeh@186
|
624 }
|
gokhlayeh@186
|
625
|
gokhlayeh@186
|
626 # Check for loop in deps tree. /!\ can be removed
|
pascal@76
|
627 check_for_deps_loop()
|
pascal@76
|
628 {
|
pascal@76
|
629 local list
|
pascal@76
|
630 local pkg
|
pascal@76
|
631 local deps
|
pascal@76
|
632 pkg=$1
|
pascal@76
|
633 shift
|
pascal@76
|
634 [ -n "$1" ] || return
|
pascal@76
|
635 list=""
|
gokhlayeh@204
|
636
|
pascal@76
|
637 # Filter out already processed deps
|
pascal@76
|
638 for i in $@; do
|
pascal@76
|
639 case " $ALL_DEPS" in
|
pascal@76
|
640 *\ $i\ *);;
|
pascal@76
|
641 *) list="$list $i";;
|
pascal@76
|
642 esac
|
pascal@76
|
643 done
|
pascal@76
|
644 ALL_DEPS="$ALL_DEPS$list "
|
pascal@76
|
645 for i in $list; do
|
pascal@76
|
646 [ -f $i/receipt ] || continue
|
pascal@76
|
647 deps="$(DEPENDS=""; . $i/receipt; echo $DEPENDS)"
|
pascal@76
|
648 case " $deps " in
|
pascal@76
|
649 *\ $pkg\ *) echo -e "$MSG $i"; MSG="";;
|
pascal@76
|
650 *) check_for_deps_loop $pkg $deps;;
|
pascal@76
|
651 esac
|
pascal@76
|
652 done
|
pascal@76
|
653 }
|
pascal@76
|
654
|
gokhlayeh@266
|
655 # Function used by download().
|
gokhlayeh@266
|
656 revert_vcs_failure()
|
gokhlayeh@266
|
657 {
|
gokhlayeh@266
|
658 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
659 rm -r $tmp_src
|
gokhlayeh@266
|
660 }
|
gokhlayeh@266
|
661
|
erjo@53
|
662 download()
|
erjo@53
|
663 {
|
gokhlayeh@278
|
664 if [ "$COMMAND" = get-src ]; then
|
gokhlayeh@278
|
665 if [ "${DEPENDS/tar}" != "$DEPENDS" ] || [ "${BUILD_DEPENDS/tar}" != "$BUILD_DEPENDS" ]; then
|
slaxemulator@287
|
666 [ -f $INSTALLED/tar/receipt ] || tazpkg get-install tar --forced
|
gokhlayeh@278
|
667 fi
|
gokhlayeh@278
|
668 fi
|
erjo@53
|
669 for file in $@; do
|
gokhlayeh@266
|
670 echo "Downloading from ${file#*|}..."
|
gokhlayeh@255
|
671 case "$file" in
|
gokhlayeh@266
|
672 git\|*)
|
gokhlayeh@266
|
673 file=${file#git|}
|
gokhlayeh@278
|
674 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/git/receipt ] && tazpkg get-install git --forced
|
slaxemulator@274
|
675 if [ -f $INSTALLED/git/receipt ]; then
|
gokhlayeh@266
|
676 mkdir $tmp_src
|
gokhlayeh@266
|
677 cd $tmp_src
|
gokhlayeh@266
|
678 if [ "$BRANCH" ]; then
|
gokhlayeh@266
|
679 git clone $file ${src##*/} && cd ${src##*/} && \
|
gokhlayeh@266
|
680 git checkout $BRANCH && rm -rf .git* && break
|
gokhlayeh@266
|
681 else
|
gokhlayeh@266
|
682 git clone $file ${src##*/} && rm -rf ${src##*/}/.git* && break
|
gokhlayeh@266
|
683 fi
|
gokhlayeh@266
|
684 revert_vcs_failure
|
gokhlayeh@266
|
685 else
|
gokhlayeh@266
|
686 tazwok_warning "Needs git to download the source tarball from $file, please add it as build-depend."
|
gokhlayeh@266
|
687 continue
|
gokhlayeh@266
|
688 fi
|
gokhlayeh@266
|
689 ;;
|
gokhlayeh@266
|
690 subversion\|*)
|
gokhlayeh@266
|
691 file=${file#subversion|}
|
gokhlayeh@278
|
692 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/subversion/receipt ] && tazpkg get-install subversion --forced
|
slaxemulator@274
|
693 if [ -f $INSTALLED/subversion/receipt ]; then
|
gokhlayeh@266
|
694 mkdir $tmp_src
|
gokhlayeh@266
|
695 cd $tmp_src
|
gokhlayeh@266
|
696 if [ "$BRANCH" ]; then
|
gokhlayeh@266
|
697 echo t | svn co $file -r $BRANCH ${src##*/} && rm -rf ${src##*/}/.svn* && break
|
gokhlayeh@266
|
698 else
|
gokhlayeh@266
|
699 echo t | svn co $file ${src##*/} && rm -rf ${src##*/}/.svn* && break
|
gokhlayeh@266
|
700 fi
|
gokhlayeh@266
|
701 revert_vcs_failure
|
gokhlayeh@266
|
702 else
|
gokhlayeh@266
|
703 tazwok_warning "Needs subversion to download the source tarball from $file, please add it as build-depend."
|
gokhlayeh@266
|
704 continue
|
gokhlayeh@266
|
705 fi
|
gokhlayeh@266
|
706 ;;
|
gokhlayeh@266
|
707 mercurial\|*)
|
gokhlayeh@266
|
708 file=${file#mercurial|}
|
gokhlayeh@278
|
709 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/mercurial/receipt ] && tazpkg get-install mercurial --forced
|
slaxemulator@274
|
710 if [ -f $INSTALLED/mercurial/receipt ]; then
|
gokhlayeh@266
|
711 mkdir $tmp_src
|
gokhlayeh@266
|
712 cd $tmp_src
|
gokhlayeh@266
|
713 if [ "$BRANCH" ]; then
|
gokhlayeh@266
|
714 hg clone $file --rev $BRANCH ${src##*/} && rm -rf ${src##*/}/.hg* && break
|
gokhlayeh@266
|
715 else
|
gokhlayeh@266
|
716 hg clone $file ${src##*/} && rm -rf ${src##*/}/.hg* && break
|
gokhlayeh@266
|
717 fi
|
gokhlayeh@266
|
718 revert_vcs_failure
|
gokhlayeh@266
|
719 else
|
gokhlayeh@266
|
720 tazwok_warning "Needs mercurial to download the source tarball from $file, please add it as build-depend."
|
gokhlayeh@266
|
721 continue
|
gokhlayeh@266
|
722 fi
|
gokhlayeh@266
|
723 ;;
|
gokhlayeh@266
|
724 https*)
|
gokhlayeh@278
|
725 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/wget/receipt ] && tazpkg get-install wget --forced
|
gokhlayeh@255
|
726 if [ -d $INSTALLED/wget ]; then
|
gokhlayeh@266
|
727 if [ "${WGET_URL%$TARBALL}" = "$WGET_URL" ] && [ "$file" = "$WGET_URL" ]; then
|
gokhlayeh@266
|
728 wget -q --no-check-certificate -O $TARBALL $file && break
|
gokhlayeh@266
|
729 else
|
gokhlayeh@290
|
730 wget -q --no-check-certificate $file && break
|
gokhlayeh@266
|
731 fi
|
gokhlayeh@255
|
732 else
|
gokhlayeh@266
|
733 tazwok_warning "Needs wget to download the source tarball from $file, please add it as build-depend."
|
gokhlayeh@266
|
734 continue
|
gokhlayeh@255
|
735 fi
|
gokhlayeh@266
|
736 ;;
|
gokhlayeh@266
|
737 http*|ftp*)
|
gokhlayeh@266
|
738 # Handle crappy URL.
|
gokhlayeh@278
|
739 if [ "$COMMAND" = get-src ]; then
|
gokhlayeh@278
|
740 if [ "${DEPENDS/wget}" != "$DEPENDS" ] || [ "${BUILD_DEPENDS/wget}" != "$BUILD_DEPENDS" ]; then
|
gokhlayeh@278
|
741 [ -f $INSALLED/wget/receipt ] || tazpkg get-install wget --forced
|
gokhlayeh@278
|
742 fi
|
gokhlayeh@278
|
743 fi
|
gokhlayeh@266
|
744 if [ "${WGET_URL%$TARBALL}" = "$WGET_URL" ] && [ "$file" = "$WGET_URL" ]; then
|
gokhlayeh@266
|
745 wget -q -O $TARBALL $file && break
|
gokhlayeh@266
|
746 else
|
gokhlayeh@266
|
747 wget -q $file && break
|
gokhlayeh@266
|
748 fi
|
gokhlayeh@266
|
749 ;;
|
gokhlayeh@255
|
750 esac
|
erjo@53
|
751 done
|
erjo@53
|
752 }
|
pankso@18
|
753
|
gokhlayeh@186
|
754 # Regenerate every package that wants a PACKAGE compiled
|
pascal@156
|
755 refresh_packages_from_compile()
|
pascal@156
|
756 {
|
pascal@156
|
757 # make tazwok genpkg happy
|
pascal@156
|
758 mkdir $WOK/$PACKAGE/taz
|
gokhlayeh@204
|
759
|
gokhlayeh@186
|
760 # Cook rwanted in default or specied order
|
gokhlayeh@186
|
761 genlist=" $(look_for_rwanted | tr '\n' ' ') "
|
gokhlayeh@186
|
762 for i in $(look_for_cookopt genpkg | tac); do
|
gokhlayeh@186
|
763 [ "${genlist/ $i }" = "$genlist" ] && continue
|
gokhlayeh@186
|
764 genlist=" $i${genlist/ $i / }"
|
pascal@156
|
765 done
|
gokhlayeh@215
|
766 if [ "$genlist" ]; then
|
gokhlayeh@215
|
767 local PACKAGE SOURCE VERSION EXTRAVERSION CATEGORY SHORT_DESC \
|
gokhlayeh@215
|
768 MAINTAINER WEB_SITE WGET_URL DEPENDS BUILD_DEPENDS WANTED \
|
gokhlayeh@215
|
769 PACKED_SIZE UNPACKED_SIZE COOK_OPT PROVIDE CONFIG_FILES TAGS \
|
gokhlayeh@298
|
770 src _pkg DESTDIR CONFIG_SITE RECEIPT LOG stuff wanted_stuff
|
gokhlayeh@215
|
771 for PACKAGE in $genlist; do
|
gokhlayeh@215
|
772 set_common_path
|
gokhlayeh@215
|
773 gen_package
|
gokhlayeh@215
|
774 done
|
gokhlayeh@215
|
775 fi
|
pascal@156
|
776 }
|
pascal@156
|
777
|
MikeDSmith25@82
|
778 # Copy all generic files (locale, pixmaps, .desktop). We use standard paths,
|
pankso@22
|
779 # so some packages need to copy these files with the receipt and genpkg_rules.
|
pankso@22
|
780 # This function is executed by gen_package when 'tazwok genpkg'.
|
pankso@22
|
781 copy_generic_files()
|
pankso@22
|
782 {
|
MikeDSmith25@82
|
783 # In most cases, locales are in $_pkg/usr/share/locale so we copy files
|
pankso@22
|
784 # using generic variables and $LOCALE from Tazwok config file.
|
gokhlayeh@186
|
785 if [ "$LOCALE" ]; then
|
pankso@22
|
786 if [ -d "$_pkg/usr/share/locale" ]; then
|
pankso@22
|
787 for i in $LOCALE
|
pankso@22
|
788 do
|
pankso@37
|
789 if [ -d "$_pkg/usr/share/locale/$i" ]; then
|
pankso@37
|
790 mkdir -p $fs/usr/share/locale
|
pankso@37
|
791 cp -a $_pkg/usr/share/locale/$i $fs/usr/share/locale
|
pankso@37
|
792 fi
|
pankso@22
|
793 done
|
pankso@22
|
794 fi
|
pankso@22
|
795 fi
|
gokhlayeh@186
|
796
|
pankso@133
|
797 # Pixmaps (PNG or/and XPM only). Some icons/images can be added through
|
MikeDSmith25@82
|
798 # genpkg_rules and generic copy can be disabled with GENERIC_PIXMAPS="no"
|
pankso@31
|
799 # in pkg receipt.
|
gokhlayeh@186
|
800 if [ "$GENERIC_PIXMAPS" != "no" ]; then
|
pankso@22
|
801 if [ -d "$_pkg/usr/share/pixmaps" ]; then
|
pankso@27
|
802 mkdir -p $fs/usr/share/pixmaps
|
pankso@31
|
803 cp -a $_pkg/usr/share/pixmaps/$PACKAGE.png \
|
pankso@31
|
804 $fs/usr/share/pixmaps 2>/dev/null
|
pankso@31
|
805 cp -a $_pkg/usr/share/pixmaps/$PACKAGE.xpm \
|
pankso@22
|
806 $fs/usr/share/pixmaps 2>/dev/null
|
pankso@23
|
807 fi
|
gokhlayeh@186
|
808
|
MikeDSmith25@82
|
809 # Custom or homemade PNG pixmap can be in stuff.
|
pankso@23
|
810 if [ -f "stuff/$PACKAGE.png" ]; then
|
pankso@27
|
811 mkdir -p $fs/usr/share/pixmaps
|
pankso@23
|
812 cp -a stuff/$PACKAGE.png $fs/usr/share/pixmaps
|
pankso@22
|
813 fi
|
pankso@22
|
814 fi
|
gokhlayeh@186
|
815
|
pankso@22
|
816 # Desktop entry (.desktop).
|
pankso@22
|
817 if [ -d "$_pkg/usr/share/applications" ]; then
|
pankso@22
|
818 cp -a $_pkg/usr/share/applications $fs/usr/share
|
pankso@23
|
819 fi
|
gokhlayeh@186
|
820
|
MikeDSmith25@82
|
821 # Homemade desktop file(s) can be in stuff.
|
pankso@34
|
822 if [ -d "stuff/applications" ]; then
|
pankso@42
|
823 mkdir -p $fs/usr/share
|
pankso@42
|
824 cp -a stuff/applications $fs/usr/share
|
pankso@34
|
825 fi
|
pankso@34
|
826 if [ -f "stuff/$PACKAGE.desktop" ]; then
|
pankso@42
|
827 mkdir -p $fs/usr/share/applications
|
pankso@42
|
828 cp -a stuff/$PACKAGE.desktop $fs/usr/share/applications
|
pankso@22
|
829 fi
|
pankso@22
|
830 }
|
pankso@22
|
831
|
pankso@25
|
832 # Find and strip : --strip-all (-s) or --strip-debug on static libs.
|
pankso@25
|
833 strip_package()
|
pankso@25
|
834 {
|
gokhlayeh@186
|
835 report step "Executing strip on all files"
|
gokhlayeh@186
|
836
|
pankso@25
|
837 # Binaries.
|
pankso@25
|
838 for dir in $fs/bin $fs/sbin $fs/usr/bin $fs/usr/sbin $fs/usr/games
|
pankso@25
|
839 do
|
pankso@25
|
840 if [ -d "$dir" ]; then
|
pankso@25
|
841 find $dir -type f -exec strip -s '{}' 2>/dev/null \;
|
pankso@25
|
842 fi
|
pankso@25
|
843 done
|
gokhlayeh@186
|
844
|
pankso@25
|
845 # Libraries.
|
pankso@25
|
846 find $fs -name "*.so*" -exec strip -s '{}' 2>/dev/null \;
|
pankso@25
|
847 find $fs -name "*.a" -exec strip --strip-debug '{}' 2>/dev/null \;
|
gokhlayeh@186
|
848 report end-step
|
gokhlayeh@186
|
849 }
|
gokhlayeh@186
|
850
|
gokhlayeh@186
|
851 # Remove .pyc and .pyo files from packages
|
gokhlayeh@186
|
852 py_compiled_files_remove()
|
gokhlayeh@186
|
853 {
|
gokhlayeh@186
|
854 report step "Removing all .pyc and .pyo files from package ..."
|
gokhlayeh@186
|
855 find $fs -type f -name "*.pyc" -delete 2>/dev/null
|
gokhlayeh@186
|
856 find $fs -type f -name "*.pyo" -delete 2>/dev/null
|
gokhlayeh@186
|
857 report end-step
|
pankso@25
|
858 }
|
pankso@25
|
859
|
pankso@135
|
860 # Check FSH in a slitaz package (Path: /:/usr)
|
pankso@135
|
861 check_fsh()
|
pankso@135
|
862 {
|
pankso@135
|
863 cd $WOK/$PACKAGE/taz/*/fs
|
pascal@149
|
864 [ -n "$FSH" ] || FSH="bin boot dev etc home init lib media mnt proc \
|
pascal@149
|
865 root sbin share sys tmp usr var vz usr/bin usr/games usr/include usr/lib \
|
pascal@149
|
866 usr/local usr/sbin usr/share usr/src"
|
pankso@135
|
867 for i in `ls -d * usr/* 2>/dev/null`
|
pankso@135
|
868 do
|
gokhlayeh@195
|
869 if ! echo $FSH | fgrep -q $i; then
|
gokhlayeh@186
|
870 echo "Wrong path: /$i" >&2
|
pankso@135
|
871 error=1
|
pankso@135
|
872 fi
|
pankso@135
|
873 done
|
pankso@135
|
874 if [ "$error" = "1" ]; then
|
pankso@135
|
875 cat << _EOT_
|
pankso@135
|
876
|
paul@155
|
877 Package will install files in a non standard directory and won't be generated.
|
paul@154
|
878 You may have a wrong copy path in genpkg_rules or need to add some options to
|
pankso@135
|
879 configure in compile_rules. Some valid options for SliTaz (Linux FSH):
|
pankso@135
|
880
|
pankso@135
|
881 --prefix=/usr
|
pankso@135
|
882 --sysconfdir=/etc
|
pankso@135
|
883 --libexecdir=/usr/lib/(pkgname)
|
pankso@135
|
884 --localstatedir=/var
|
pankso@135
|
885 --mandir=/usr/share/man
|
pankso@135
|
886 --infodir=/usr/share/info
|
pankso@135
|
887
|
paul@152
|
888 For more information please read SliTaz docs and run: ./configure --help
|
pankso@135
|
889 ================================================================================
|
pankso@135
|
890 $PACKAGE package generation aborted.
|
pankso@135
|
891
|
pankso@135
|
892 _EOT_
|
gokhlayeh@186
|
893
|
pankso@135
|
894 # Dont generate a corrupted package.
|
pankso@137
|
895 cd $WOK/$PACKAGE && rm -rf taz
|
gokhlayeh@186
|
896 report exit
|
pankso@135
|
897 fi
|
gokhlayeh@186
|
898 }
|
gokhlayeh@186
|
899
|
gokhlayeh@186
|
900 gen_cookmd5()
|
gokhlayeh@186
|
901 {
|
gokhlayeh@186
|
902 # md5sum of cooking stuff make tazwok able to check for changes
|
gokhlayeh@186
|
903 # without hg.
|
gokhlayeh@186
|
904 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
905 md5sum receipt > md5
|
gokhlayeh@186
|
906 [ -f description.txt ] && md5sum description.txt >> md5
|
gokhlayeh@186
|
907 if [ -d stuff ]; then
|
gokhlayeh@186
|
908 find stuff | while read file; do
|
gokhlayeh@186
|
909 md5sum $file >> md5
|
gokhlayeh@186
|
910 done
|
gokhlayeh@186
|
911 fi
|
pankso@135
|
912 }
|
pankso@135
|
913
|
MikeDSmith25@82
|
914 # Create a package tree and build the gziped cpio archive
|
pankso@7
|
915 # to make a SliTaz (.tazpkg) package.
|
pankso@7
|
916 gen_package()
|
pankso@7
|
917 {
|
pankso@7
|
918 check_root
|
pankso@7
|
919 check_for_package_on_cmdline
|
pankso@7
|
920 check_for_receipt
|
pascal@74
|
921 EXTRAVERSION=""
|
pankso@7
|
922 . $RECEIPT
|
gokhlayeh@186
|
923
|
pascal@86
|
924 # May compute VERSION
|
pascal@86
|
925 if grep -q ^get_version $RECEIPT; then
|
pascal@86
|
926 get_version
|
pascal@86
|
927 fi
|
pankso@7
|
928 check_for_wanted
|
pankso@7
|
929 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
930
|
pankso@7
|
931 # Remove old Tazwok package files.
|
gokhlayeh@186
|
932 [ -d "taz" ] && rm -rf taz
|
gokhlayeh@186
|
933
|
MikeDSmith25@82
|
934 # Create the package tree and set useful variables.
|
gokhlayeh@266
|
935 mkdir -p $WOK/$PACKAGE/taz/$PACKAGE-$VERSION/fs
|
gokhlayeh@266
|
936 fs=$WOK/$PACKAGE/taz/$PACKAGE-$VERSION/fs
|
gokhlayeh@186
|
937
|
MikeDSmith25@82
|
938 # Set $src for standard package and $_pkg variables.
|
gokhlayeh@186
|
939 set_src_path && set_pkg_path
|
gokhlayeh@186
|
940
|
pankso@135
|
941 # Execute genpkg_rules, check package and copy generic files to build
|
pankso@135
|
942 # the package.
|
gokhlayeh@186
|
943 report step "Building $PACKAGE with the receipt"
|
gokhlayeh@186
|
944 report open-bloc
|
pankso@28
|
945 if grep -q ^genpkg_rules $RECEIPT; then
|
gokhlayeh@186
|
946
|
pankso@7
|
947 # Log process.
|
pankso@7
|
948 echo "executing genpkg_rules" >> $LOG
|
gokhlayeh@186
|
949 report step "Executing genpkg_rules"
|
pascal@126
|
950 genpkg_rules
|
gokhlayeh@186
|
951 report end-step
|
pankso@135
|
952 check_fsh
|
pankso@25
|
953 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
954
|
pankso@133
|
955 # Skip generic files for packages with a WANTED variable
|
pankso@24
|
956 # (dev and splited pkgs).
|
gokhlayeh@186
|
957 if [ ! "$WANTED" ]; then
|
pankso@24
|
958 copy_generic_files
|
pankso@24
|
959 fi
|
gokhlayeh@204
|
960 look_for_cookopt !strip || strip_package
|
gokhlayeh@186
|
961 py_compiled_files_remove
|
pankso@7
|
962 else
|
gokhlayeh@186
|
963 echo "No package rules to gen $PACKAGE..." >&2
|
gokhlayeh@186
|
964 report exit
|
pankso@7
|
965 fi
|
gokhlayeh@186
|
966
|
paul@154
|
967 # Copy the receipt and description (if exists) into the binary package tree.
|
pankso@7
|
968 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
969 report step "Copying the receipt"
|
pankso@7
|
970 cp receipt taz/$PACKAGE-$VERSION
|
gokhlayeh@186
|
971 report end-step
|
pascal@89
|
972 if grep -q ^get_version $RECEIPT; then
|
gokhlayeh@186
|
973 report step "Updating version in receipt"
|
pascal@89
|
974 sed -i "s/^VERSION=.*/VERSION=\"$VERSION\"/" \
|
pascal@89
|
975 taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
976 report end-step
|
pascal@89
|
977 fi
|
pankso@7
|
978 if [ -f "description.txt" ]; then
|
gokhlayeh@186
|
979 report step "Copying the description file"
|
pankso@7
|
980 cp description.txt taz/$PACKAGE-$VERSION
|
gokhlayeh@186
|
981 report end-step
|
pankso@7
|
982 fi
|
gokhlayeh@186
|
983
|
gokhlayeh@186
|
984 # Generate md5 of cooking stuff to look for commit later.
|
gokhlayeh@186
|
985 gen_cookmd5
|
gokhlayeh@186
|
986 echo -e "\n# md5sum of cooking stuff :" >> taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
987 cat md5 | sed 's/^/# /' >> taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
988
|
MikeDSmith25@82
|
989 # Create the files.list by redirecting find output.
|
gokhlayeh@186
|
990 report step "Creating the list of files"
|
pascal@15
|
991 cd taz/$PACKAGE-$VERSION
|
pascal@13
|
992 LAST_FILE=""
|
gokhlayeh@195
|
993 { find fs -print; echo; } | while read file; do
|
gokhlayeh@186
|
994 if [ "$LAST_FILE" ]; then
|
pascal@15
|
995 case "$file" in
|
pascal@13
|
996 $LAST_FILE/*)
|
pankso@133
|
997 case "$(ls -ld "$LAST_FILE")" in
|
pascal@15
|
998 drwxr-xr-x\ *\ root\ *\ root\ *);;
|
pascal@15
|
999 *) echo ${LAST_FILE#fs};;
|
pascal@13
|
1000 esac;;
|
pascal@15
|
1001 *) echo ${LAST_FILE#fs};;
|
pascal@13
|
1002 esac
|
pascal@13
|
1003 fi
|
pascal@15
|
1004 LAST_FILE="$file"
|
pascal@15
|
1005 done > files.list
|
gokhlayeh@186
|
1006
|
gokhlayeh@186
|
1007 # Next, check if something has changed in lib files.
|
gokhlayeh@215
|
1008 if fgrep -q '.so' files.list; then
|
gokhlayeh@215
|
1009 for rep in $INCOMING_REPOSITORY $PACKAGES_REPOSITORY \
|
gokhlayeh@295
|
1010 $([ "$undigest" ] && echo $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming && \
|
gokhlayeh@215
|
1011 echo $SLITAZ_DIR/$SLITAZ_VERSION/packages); do
|
gokhlayeh@215
|
1012 prev_VERSION=$(get_pkg_version $rep)
|
gokhlayeh@215
|
1013 [ "$prev_VERSION" ] && pkg_file=$rep/$PACKAGE-$prev_VERSION.tazpkg && break
|
gokhlayeh@215
|
1014 done
|
gokhlayeh@215
|
1015 if [ "$pkg_file" ]; then
|
gokhlayeh@295
|
1016 report step "Look for major/minor update in libraries"
|
gokhlayeh@215
|
1017 get_pkg_files $pkg_file
|
gokhlayeh@215
|
1018 cd $WOK/$PACKAGE/taz/$PACKAGE-$VERSION
|
gokhlayeh@215
|
1019 fgrep ".so" files.list | egrep -v "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" | \
|
gokhlayeh@215
|
1020 while read lib; do
|
gokhlayeh@215
|
1021 fgrep -q "$lib" $pkg_files_dir/files.list && continue
|
gokhlayeh@215
|
1022 echo "A minor/major update in libraries is detected, planning re-cook of reverse-depends of $PACKAGE."
|
gokhlayeh@215
|
1023 for rdep in $(scan $PACKAGE --look_for=rdep | use_wanted); do
|
gokhlayeh@215
|
1024 [ "$rdep" = "${WANTED:-$PACKAGE}" ] && continue
|
gokhlayeh@215
|
1025 grep -q ^$rdep$ $PACKAGES_REPOSITORY/blocked \
|
gokhlayeh@215
|
1026 $PACKAGES_REPOSITORY/cooklist && continue
|
gokhlayeh@215
|
1027 echo $rdep >> $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@215
|
1028 done
|
gokhlayeh@215
|
1029 regen_cooklist=yes
|
gokhlayeh@215
|
1030 break
|
gokhlayeh@215
|
1031 done
|
gokhlayeh@215
|
1032 rm -r $pkg_files_dir
|
gokhlayeh@295
|
1033 unset pkg_file
|
gokhlayeh@295
|
1034 report end-step
|
gokhlayeh@295
|
1035 fi
|
gokhlayeh@295
|
1036 fi
|
gokhlayeh@186
|
1037 if [ ! "$EXTRAVERSION" ]; then
|
pascal@84
|
1038 case "$PACKAGE" in
|
pascal@84
|
1039 linux*);;
|
pascal@85
|
1040 *) EXTRAVERSION="$(grep '/lib/modules/.*-slitaz/' files.list |\
|
pascal@84
|
1041 head -1 | sed 's|/lib/modules/\(.*\)-slitaz/.*|_\1|')";;
|
pascal@84
|
1042 esac
|
pascal@84
|
1043 fi
|
gokhlayeh@186
|
1044 rm -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg 2> /dev/null
|
gokhlayeh@186
|
1045 report step "Creating md5sum of files"
|
pascal@70
|
1046 while read file; do
|
pascal@71
|
1047 [ -L "fs$file" ] && continue
|
pascal@71
|
1048 [ -f "fs$file" ] || continue
|
pascal@71
|
1049 md5sum "fs$file" | sed 's/ fs/ /'
|
pascal@70
|
1050 done < files.list > md5sum
|
gokhlayeh@204
|
1051 report end-step
|
pascal@84
|
1052 UNPACKED_SIZE=$(du -chs fs receipt files.list md5sum description.txt \
|
pascal@84
|
1053 2> /dev/null | awk '{ sz=$1 } END { print sz }')
|
gokhlayeh@186
|
1054
|
pankso@7
|
1055 # Build cpio archives. Find, cpio and gzip the fs, finish by
|
pankso@7
|
1056 # removing the fs tree.
|
gokhlayeh@186
|
1057 # Don't log this because compression always output error messages.
|
pascal@150
|
1058 find fs -print | cpio -o -H newc | case "$PACKAGE-$COMPRESSION" in
|
pascal@150
|
1059 tazpkg-lzma) gzip > fs.cpio.gz;;
|
pascal@150
|
1060 *-lzma) lzma e fs.cpio.lzma -si;;
|
pascal@150
|
1061 *) gzip > fs.cpio.gz;;
|
pascal@150
|
1062 esac && rm -rf fs
|
pascal@150
|
1063 PACKED_SIZE=$(du -chs fs.cpio.* receipt files.list md5sum \
|
pascal@84
|
1064 description.txt 2> /dev/null | awk '{ sz=$1 } END { print sz }')
|
gokhlayeh@186
|
1065 report step "Updating receipt sizes"
|
pascal@138
|
1066 sed -i '/^PACKED_SIZE/d' receipt
|
pascal@138
|
1067 sed -i '/^UNPACKED_SIZE/d' receipt
|
pascal@59
|
1068 sed -i "s/^PACKAGE=/PACKED_SIZE=\"$PACKED_SIZE\"\nUNPACKED_SIZE=\"$UNPACKED_SIZE\"\nPACKAGE=/" receipt
|
pascal@86
|
1069 sed -i "s/^VERSION=$/VERSION=\"$VERSION\"/" receipt
|
gokhlayeh@212
|
1070 report end-step
|
gokhlayeh@212
|
1071 if [ "$EXTRAVERSION" ]; then
|
gokhlayeh@186
|
1072 report step "Updating receipt EXTRAVERSION"
|
pascal@72
|
1073 sed -i s/^EXTRAVERSION.*$// receipt
|
pascal@72
|
1074 sed -i "s/^VERSION=/EXTRAVERSION=\"$EXTRAVERSION\"\nVERSION=/" receipt
|
pascal@72
|
1075 fi
|
gokhlayeh@186
|
1076 prev_VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
1077 remove_previous_package $INCOMING_REPOSITORY
|
gokhlayeh@186
|
1078 report step "Creating full cpio archive"
|
gokhlayeh@186
|
1079 find . -print | cpio -o -H newc > $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg
|
gokhlayeh@186
|
1080
|
paul@154
|
1081 # Restore package tree in case we want to browse it.
|
gokhlayeh@186
|
1082 report step "Restoring original package tree"
|
gokhlayeh@195
|
1083 { zcat fs.cpio.gz 2> /dev/null || unlzma -c fs.cpio.lzma; } | cpio --quiet -id
|
pascal@150
|
1084 rm fs.cpio.* && cd ..
|
gokhlayeh@186
|
1085
|
pankso@7
|
1086 # Log process.
|
pascal@69
|
1087 echo "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg (done)" >> $LOG
|
gokhlayeh@186
|
1088 report close-bloc
|
pascal@68
|
1089 echo "Package $PACKAGE ($VERSION$EXTRAVERSION) generated."
|
gokhlayeh@186
|
1090 echo "Size : `du -sh $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg`"
|
pankso@7
|
1091 echo ""
|
gokhlayeh@186
|
1092
|
gokhlayeh@204
|
1093 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/broken
|
gokhlayeh@204
|
1094 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/commit
|
gokhlayeh@204
|
1095 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/cooklist
|
pankso@7
|
1096 }
|
pankso@7
|
1097
|
gokhlayeh@186
|
1098 ########################################################################
|
gokhlayeh@186
|
1099 # This section contains functions used by several other functions
|
gokhlayeh@186
|
1100 # bellow.
|
gokhlayeh@186
|
1101 ########################
|
gokhlayeh@186
|
1102
|
gokhlayeh@186
|
1103 # Look for receipt/files.list in wok. If they can't be found, get them
|
gokhlayeh@186
|
1104 # from package. Accept one argument : absolute path to package.
|
gokhlayeh@186
|
1105 get_pkg_files()
|
pankso@28
|
1106 {
|
gokhlayeh@186
|
1107 pkg_files_dir=$tmp/$(basename ${1%.tazpkg})
|
gokhlayeh@186
|
1108 mkdir -p $pkg_files_dir && \
|
gokhlayeh@186
|
1109 cd $pkg_files_dir && \
|
gokhlayeh@186
|
1110 cpio --quiet -idm receipt < $1 && \
|
gokhlayeh@186
|
1111 cpio --quiet -idm files.list < $1
|
gokhlayeh@186
|
1112 }
|
gokhlayeh@170
|
1113
|
gokhlayeh@186
|
1114 ########################################################################
|
gokhlayeh@204
|
1115 # This section contains functions to generate packages databases.
|
gokhlayeh@186
|
1116 ########################
|
gokhlayeh@186
|
1117
|
gokhlayeh@186
|
1118
|
gokhlayeh@186
|
1119 gen_packages_db()
|
gokhlayeh@186
|
1120 {
|
gokhlayeh@186
|
1121 # pkg_repository can be $PACKAGES_REPOSITORY or $INCOMING_REPOSITORY.
|
gokhlayeh@204
|
1122 [ "$pkg_repository" ] || pkg_repository=$PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1123 cd $pkg_repository
|
gokhlayeh@204
|
1124 report step "Generating packages lists: $pkg_repository"
|
gokhlayeh@204
|
1125 report open-bloc
|
gokhlayeh@204
|
1126 report step "Removing old files"
|
gokhlayeh@204
|
1127 for file in files.list.lzma packages.list packages.txt \
|
gokhlayeh@204
|
1128 packages.desc packages.equiv packages.md5; do
|
gokhlayeh@204
|
1129 [ -f $file ] && rm $file
|
gokhlayeh@204
|
1130 done
|
gokhlayeh@204
|
1131 touch files.list
|
gokhlayeh@204
|
1132
|
gokhlayeh@186
|
1133 packages_db_start
|
gokhlayeh@186
|
1134 unset RECEIPT
|
gokhlayeh@186
|
1135 report step "Reading datas from all packages"
|
gokhlayeh@195
|
1136 for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
|
gokhlayeh@186
|
1137 get_packages_info
|
gokhlayeh@186
|
1138 done
|
gokhlayeh@186
|
1139 report end-step
|
gokhlayeh@186
|
1140 packages_db_end
|
gokhlayeh@204
|
1141 report close-bloc
|
gokhlayeh@186
|
1142 }
|
gokhlayeh@186
|
1143
|
gokhlayeh@186
|
1144 update_packages_db()
|
gokhlayeh@186
|
1145 {
|
gokhlayeh@204
|
1146 [ "$pkg_repository" ] || pkg_repository=$PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1147 cd $pkg_repository
|
gokhlayeh@204
|
1148 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
1149 packages.txt; do
|
gokhlayeh@186
|
1150 if [ ! -f "$file" ]; then
|
gokhlayeh@204
|
1151 gen_packages_db
|
gokhlayeh@186
|
1152 return
|
gokhlayeh@186
|
1153 fi
|
gokhlayeh@186
|
1154 done
|
gokhlayeh@186
|
1155 if [ -f files.list.lzma ]; then
|
gokhlayeh@186
|
1156 lzma d files.list.lzma files.list
|
gokhlayeh@186
|
1157 else
|
gokhlayeh@204
|
1158 gen_packages_db
|
gokhlayeh@186
|
1159 fi
|
gokhlayeh@204
|
1160 report step "Updating packages lists: $pkg_repository"
|
gokhlayeh@186
|
1161 packages_db_start
|
gokhlayeh@186
|
1162
|
gokhlayeh@186
|
1163 # Look for removed/update packages.
|
gokhlayeh@186
|
1164 for PACKAGE in $(grep ^[0-9,a-z,A-Z] packages.txt); do
|
gokhlayeh@202
|
1165 pkg="$pkg_repository/$(grep -m1 ^$PACKAGE- packages.list).tazpkg"
|
gokhlayeh@195
|
1166 if ! [ -f "$pkg" ]; then
|
gokhlayeh@186
|
1167 erase_package_info
|
gokhlayeh@186
|
1168 else
|
gokhlayeh@186
|
1169 if [ "$pkg" -nt "packages.list" ]; then
|
gokhlayeh@215
|
1170 updated_pkg="$updated_pkg
|
gokhlayeh@215
|
1171 $PACKAGE $pkg"
|
gokhlayeh@266
|
1172 elif [ ! -f $WOK/$PACKAGE/receipt ] && \
|
gokhlayeh@266
|
1173 [ "$COMMAND" = check-incoming -o "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then
|
gokhlayeh@266
|
1174 erase_package_info
|
gokhlayeh@266
|
1175 echo "Removing $PACKAGE from $pkg_repository."
|
gokhlayeh@266
|
1176 rm $pkg
|
gokhlayeh@266
|
1177 [ -d $WOK/$PACKAGE ] && rm -r $WOK/$PACKAGE
|
gokhlayeh@282
|
1178 sed "/^$PACKAGE\t/d" -i $wan_db $dep_db
|
gokhlayeh@282
|
1179 for i in cookorder.txt cooklist commit blocked broken; do
|
gokhlayeh@282
|
1180 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/$i
|
gokhlayeh@282
|
1181 done
|
gokhlayeh@282
|
1182 rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@266
|
1183 if [ "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then
|
gokhlayeh@266
|
1184 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@266
|
1185 regen_cooklist=yes
|
gokhlayeh@266
|
1186 else
|
gokhlayeh@266
|
1187 echo "$PACKAGE" >> $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1188 sed -n '1,10p' -i $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1189 fi
|
gokhlayeh@186
|
1190 fi
|
gokhlayeh@170
|
1191 fi
|
gokhlayeh@170
|
1192 done
|
gokhlayeh@215
|
1193 echo "$updated_pkg" | sed 1d | while read PACKAGE pkg; do
|
gokhlayeh@202
|
1194 erase_package_info
|
gokhlayeh@202
|
1195 get_packages_info
|
gokhlayeh@202
|
1196 done
|
gokhlayeh@204
|
1197 unset updated_pkg
|
gokhlayeh@202
|
1198
|
gokhlayeh@186
|
1199 # Look for new packages.
|
gokhlayeh@195
|
1200 for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
|
gokhlayeh@199
|
1201 if ! fgrep -q " ${pkg##*/}" $pkg_repository/packages.md5; then
|
gokhlayeh@186
|
1202 get_packages_info
|
gokhlayeh@186
|
1203 fi
|
gokhlayeh@186
|
1204 done
|
gokhlayeh@186
|
1205 report end-step
|
gokhlayeh@186
|
1206 packages_db_end
|
gokhlayeh@186
|
1207 }
|
gokhlayeh@186
|
1208
|
gokhlayeh@186
|
1209 packages_db_start()
|
gokhlayeh@186
|
1210 {
|
gokhlayeh@186
|
1211 if [ ! -s packages.txt ]; then
|
gokhlayeh@186
|
1212 echo "# SliTaz GNU/Linux - Packages list
|
gokhlayeh@186
|
1213 #
|
gokhlayeh@186
|
1214 # Packages : unknow
|
gokhlayeh@186
|
1215 # Date : $(date +%Y-%m-%d\ \%H:%M:%S)
|
gokhlayeh@215
|
1216 #
|
gokhlayeh@215
|
1217 " > packages.txt
|
pascal@62
|
1218 else
|
gokhlayeh@186
|
1219 sed -e 's/^# Packages :.*/# Packages : unknow/' \
|
gokhlayeh@186
|
1220 -e "s/# Date :.*/# Date : $(date +%Y-%m-%d\ \%H:%M:%S)/" \
|
gokhlayeh@186
|
1221 -i packages.txt
|
pascal@60
|
1222 fi
|
gokhlayeh@186
|
1223
|
gokhlayeh@186
|
1224 # Needed in some case as tazwok define RECEIPT at configuration time
|
gokhlayeh@186
|
1225 # in this particular case it can broke the script.
|
gokhlayeh@186
|
1226 unset RECEIPT
|
gokhlayeh@186
|
1227 }
|
gokhlayeh@186
|
1228
|
gokhlayeh@186
|
1229 erase_package_info()
|
gokhlayeh@186
|
1230 {
|
gokhlayeh@186
|
1231 cd $pkg_repository
|
gokhlayeh@186
|
1232 sed "/^$PACKAGE$/,/^$/d" -i packages.txt
|
gokhlayeh@186
|
1233 sed "/^$PACKAGE /d" -i packages.desc
|
gokhlayeh@186
|
1234 sed -e "s/=$PACKAGE /= /" -e "s/ $PACKAGE / /" -e "s/ $PACKAGE$//" \
|
gokhlayeh@186
|
1235 -e "/=$PACKAGE$/d" -e "s/=[0-9,a-z,A-Z]:$PACKAGE /= /" \
|
gokhlayeh@186
|
1236 -e "s/ [0-9,a-z,A-Z]:$PACKAGE / /" -e "s/ [0-9,a-z,A-Z]:$PACKAGE$/ /" \
|
gokhlayeh@186
|
1237 -e "/=[0-9,a-z,A-Z]:$PACKAGE$/d" \
|
gokhlayeh@186
|
1238 -i packages.equiv
|
gokhlayeh@186
|
1239 sed "/^$PACKAGE:/d" -i files.list
|
gokhlayeh@186
|
1240 sed "/^$(basename ${pkg%.tazpkg})$/d" -i packages.list
|
gokhlayeh@186
|
1241 sed "/ $(basename $pkg)$/d" -i packages.md5
|
gokhlayeh@186
|
1242 }
|
gokhlayeh@186
|
1243
|
gokhlayeh@186
|
1244 get_packages_info()
|
gokhlayeh@186
|
1245 {
|
gokhlayeh@186
|
1246 # If there's no taz folder in the wok, extract infos from the
|
gokhlayeh@186
|
1247 # package.
|
gokhlayeh@186
|
1248 get_pkg_files $pkg
|
gokhlayeh@186
|
1249 source_receipt
|
gokhlayeh@186
|
1250 echo "Getting datas from $PACKAGE"
|
gokhlayeh@186
|
1251
|
gokhlayeh@186
|
1252 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@28
|
1253 $PACKAGE
|
gokhlayeh@186
|
1254 $VERSION$EXTRAVERSION
|
pankso@28
|
1255 $SHORT_DESC
|
pankso@28
|
1256 _EOT_
|
gokhlayeh@215
|
1257 if [ "$PACKED_SIZE" ]; then
|
gokhlayeh@215
|
1258 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@133
|
1259 $PACKED_SIZE ($UNPACKED_SIZE installed)
|
gokhlayeh@215
|
1260
|
pascal@60
|
1261 _EOT_
|
gokhlayeh@215
|
1262 else
|
gokhlayeh@215
|
1263 echo "" >> $pkg_repository/packages.txt
|
gokhlayeh@215
|
1264 fi
|
gokhlayeh@186
|
1265
|
paul@121
|
1266 # Packages.desc is used by Tazpkgbox <tree>.
|
gokhlayeh@186
|
1267 echo "$PACKAGE | $VERSION$EXTRAVERSION | $SHORT_DESC | $CATEGORY | $WEB_SITE" >> $pkg_repository/packages.desc
|
gokhlayeh@186
|
1268
|
paul@121
|
1269 # Packages.equiv is used by tazpkg install to check depends
|
pascal@99
|
1270 for i in $PROVIDE; do
|
pascal@99
|
1271 DEST=""
|
gokhlayeh@195
|
1272 echo $i | fgrep -q : && DEST="${i#*:}:"
|
gokhlayeh@186
|
1273 if grep -qs ^${i%:*}= $pkg_repository/packages.equiv; then
|
gokhlayeh@186
|
1274 sed -i "s/^${i%:*}=/${i%:*}=$DEST$PACKAGE /" $pkg_repository/packages.equiv
|
pascal@99
|
1275 else
|
gokhlayeh@186
|
1276 echo "${i%:*}=$DEST$PACKAGE" >> $pkg_repository/packages.equiv
|
gokhlayeh@186
|
1277 fi
|
gokhlayeh@186
|
1278 done
|
gokhlayeh@186
|
1279
|
gokhlayeh@186
|
1280 if [ -f files.list ]; then
|
gokhlayeh@186
|
1281 { echo "$PACKAGE"; cat files.list; } | awk '
|
gokhlayeh@186
|
1282 BEGIN { name="" } { if (name == "") name=$0; else printf("%s: %s\n",name,$0); }' >> $pkg_repository/files.list
|
gokhlayeh@186
|
1283 fi
|
gokhlayeh@186
|
1284
|
gokhlayeh@186
|
1285 cd .. && rm -r "$pkg_files_dir"
|
gokhlayeh@186
|
1286
|
gokhlayeh@186
|
1287 cd $pkg_repository
|
gokhlayeh@186
|
1288 echo $(basename ${pkg%.tazpkg}) >> packages.list
|
gokhlayeh@186
|
1289 [ ! "$package_md5" ] && package_md5=$(md5sum $(basename $pkg))
|
gokhlayeh@186
|
1290 echo "$package_md5" >> packages.md5
|
gokhlayeh@186
|
1291 unset package_md5
|
gokhlayeh@186
|
1292 }
|
gokhlayeh@186
|
1293
|
gokhlayeh@186
|
1294 source_receipt()
|
gokhlayeh@186
|
1295 {
|
gokhlayeh@186
|
1296 unset PACKAGE SOURCE VERSION EXTRAVERSION CATEGORY SHORT_DESC \
|
gokhlayeh@186
|
1297 MAINTAINER WEB_SITE WGET_URL DEPENDS BUILD_DEPENDS WANTED \
|
gokhlayeh@186
|
1298 PACKED_SIZE UNPACKED_SIZE COOK_OPT PROVIDE CONFIG_FILES TAGS \
|
gokhlayeh@298
|
1299 src _pkg DESTDIR CONFIG_SITE BRANCH TARBALL stuff wanted_stuff
|
gokhlayeh@186
|
1300 . ${RECEIPT:-$PWD/receipt}
|
gokhlayeh@186
|
1301 }
|
gokhlayeh@186
|
1302
|
gokhlayeh@186
|
1303 packages_db_end()
|
gokhlayeh@186
|
1304 {
|
gokhlayeh@186
|
1305 cd $pkg_repository
|
gokhlayeh@186
|
1306 pkgs=$(wc -l packages.list | sed 's/ .*//')
|
gokhlayeh@186
|
1307 sed "s/# Packages : .*/# Packages : $pkgs/" -i packages.txt
|
gokhlayeh@186
|
1308
|
gokhlayeh@186
|
1309 # If lists was updated it's generally needed to sort them well.
|
gokhlayeh@186
|
1310 if ! sort -c packages.list 2> /dev/null; then
|
gokhlayeh@186
|
1311 report step "Sorting packages lists"
|
gokhlayeh@186
|
1312 for file in packages.list packages.desc packages.equiv; do
|
gokhlayeh@186
|
1313 [ -f $file ] || continue
|
gokhlayeh@186
|
1314 sort -o $file $file
|
gokhlayeh@186
|
1315 done
|
gokhlayeh@186
|
1316 report end-step
|
gokhlayeh@186
|
1317 fi
|
gokhlayeh@186
|
1318
|
gokhlayeh@186
|
1319 # Dont log this because lzma always output error.
|
gokhlayeh@186
|
1320 lzma e files.list files.list.lzma
|
gokhlayeh@204
|
1321 rm -f files.list
|
gokhlayeh@204
|
1322 [ -f packages.equiv ] || touch packages.equiv
|
gokhlayeh@186
|
1323 }
|
gokhlayeh@186
|
1324
|
gokhlayeh@186
|
1325 ########################################################################
|
gokhlayeh@186
|
1326 # This section contains functions to generate wok database.
|
gokhlayeh@186
|
1327 ########################
|
gokhlayeh@186
|
1328
|
gokhlayeh@186
|
1329 gen_wok_db()
|
gokhlayeh@186
|
1330 {
|
gokhlayeh@204
|
1331 report step "Generating wok database"
|
gokhlayeh@186
|
1332 report open-bloc
|
gokhlayeh@204
|
1333 report step "Removing old files"
|
gokhlayeh@204
|
1334 for file in $wan_db $dep_db $PACKAGES_REPOSITORY/cookorder.txt; do
|
gokhlayeh@204
|
1335 [ -f $file ] && rm $file
|
gokhlayeh@204
|
1336 done
|
gokhlayeh@186
|
1337 report step "Generating wok-wanted.txt"
|
gokhlayeh@204
|
1338 gen_wan_db
|
gokhlayeh@186
|
1339 report step "Generating wok-depends.txt"
|
gokhlayeh@204
|
1340 for PACKAGE in $(cut -f1 -d '|' $PACKAGES_REPOSITORY/packages.desc \
|
gokhlayeh@204
|
1341 $INCOMING_REPOSITORY/packages.desc | sort -u); do
|
gokhlayeh@186
|
1342 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1343 if [ -s $RECEIPT ]; then
|
gokhlayeh@186
|
1344 source_receipt
|
gokhlayeh@186
|
1345 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pankso@133
|
1346 fi
|
pascal@99
|
1347 done
|
gokhlayeh@215
|
1348 sort_db
|
gokhlayeh@204
|
1349 report close-bloc
|
gokhlayeh@204
|
1350 }
|
gokhlayeh@204
|
1351
|
gokhlayeh@204
|
1352 gen_wan_db()
|
gokhlayeh@204
|
1353 {
|
gokhlayeh@204
|
1354 for RECEIPT in $(fgrep -l WANTED $WOK/*/receipt); do
|
gokhlayeh@204
|
1355 WANTED=
|
gokhlayeh@204
|
1356 source $RECEIPT
|
gokhlayeh@204
|
1357 [ "$WANTED" ] || continue
|
gokhlayeh@204
|
1358 echo -e $PACKAGE"\t"$WANTED >> $tmp/wan_db
|
gokhlayeh@204
|
1359 done
|
gokhlayeh@215
|
1360 if ! [ -f $wan_db ] || [ "$(diff -q $tmp/wan_db $wan_db)" ]; then
|
gokhlayeh@204
|
1361 mv -f $tmp/wan_db $wan_db
|
gokhlayeh@204
|
1362 plan_regen_cookorder=yes
|
gokhlayeh@204
|
1363 else
|
gokhlayeh@204
|
1364 rm $tmp/wan_db
|
gokhlayeh@204
|
1365 fi
|
gokhlayeh@204
|
1366 }
|
gokhlayeh@204
|
1367
|
gokhlayeh@215
|
1368 update_wan_db()
|
gokhlayeh@215
|
1369 {
|
gokhlayeh@215
|
1370 local PACKAGE
|
gokhlayeh@215
|
1371 for RECEIPT in $(fgrep WANTED $WOK/*/receipt | \
|
gokhlayeh@215
|
1372 fgrep $PACKAGE | cut -f1 -d ':'); do
|
gokhlayeh@215
|
1373 WANTED=
|
gokhlayeh@215
|
1374 source $RECEIPT
|
gokhlayeh@215
|
1375 [ "$WANTED" ] || continue
|
gokhlayeh@219
|
1376 wan_info=$(echo -e $PACKAGE"\t"$WANTED)
|
gokhlayeh@215
|
1377 [ "$wan_info" = "$(grep -m1 ^$PACKAGE$'\t' $wan_db 2>/dev/null)" ] && return
|
gokhlayeh@215
|
1378 sed "/^$PACKAGE\t/d" -i $wan_db
|
gokhlayeh@220
|
1379 echo "$wan_info" >> $wan_db
|
gokhlayeh@215
|
1380 plan_regen_cookorder=yes
|
gokhlayeh@215
|
1381 plan_sort_wandb=yes
|
gokhlayeh@215
|
1382 done
|
gokhlayeh@215
|
1383 }
|
gokhlayeh@215
|
1384
|
gokhlayeh@204
|
1385 update_dep_db()
|
gokhlayeh@204
|
1386 {
|
gokhlayeh@204
|
1387 dep_info=$(echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ')
|
gokhlayeh@215
|
1388 [ "$dep_info" = "$(grep -m1 ^$PACKAGE$'\t' $dep_db 2>/dev/null)" ] && return
|
gokhlayeh@204
|
1389 sed "/^$PACKAGE\t/d" -i $dep_db
|
gokhlayeh@204
|
1390 echo "$dep_info" >> $dep_db
|
gokhlayeh@204
|
1391 plan_regen_cookorder=yes
|
gokhlayeh@204
|
1392 plan_sort_depdb=yes
|
pankso@28
|
1393 }
|
pankso@28
|
1394
|
gokhlayeh@186
|
1395 sort_db()
|
pascal@91
|
1396 {
|
gokhlayeh@186
|
1397 report step "Generating cookorder.txt"
|
gokhlayeh@186
|
1398 cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do
|
gokhlayeh@186
|
1399 grep -q ^$PACKAGE$'\t' $wan_db && continue
|
gokhlayeh@186
|
1400
|
gokhlayeh@186
|
1401 # Replace each BUILD_DEPENDS with a WANTED package by it's
|
gokhlayeh@186
|
1402 # WANTED package.
|
gokhlayeh@186
|
1403 replace_by_wanted()
|
gokhlayeh@186
|
1404 {
|
gokhlayeh@186
|
1405 for p in $BUILD_DEPENDS; do
|
gokhlayeh@186
|
1406 if grep -q ^$p$'\t' $wan_db; then
|
gokhlayeh@186
|
1407 echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' '
|
gokhlayeh@186
|
1408 else
|
gokhlayeh@186
|
1409 echo -n $p' '
|
gokhlayeh@186
|
1410 fi
|
gokhlayeh@186
|
1411 done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' '
|
gokhlayeh@186
|
1412 }
|
gokhlayeh@186
|
1413 echo -e $PACKAGE"\t $(replace_by_wanted) "
|
gokhlayeh@186
|
1414 done > $tmp/db
|
gokhlayeh@186
|
1415 while [ -s "$tmp/db" ]; do
|
gokhlayeh@186
|
1416 status=start
|
gokhlayeh@186
|
1417 for pkg in $(cut -f 1 $tmp/db); do
|
gokhlayeh@195
|
1418 if ! fgrep -q ' '$pkg' ' $tmp/db; then
|
gokhlayeh@186
|
1419 echo $pkg >> $tmp/cookorder
|
gokhlayeh@186
|
1420 sed -e "/^$pkg\t/d" -e "s/ $pkg / /g" -i $tmp/db
|
gokhlayeh@186
|
1421 status=proceed
|
gokhlayeh@186
|
1422 fi
|
gokhlayeh@186
|
1423 done
|
gokhlayeh@186
|
1424 if [ "$status" = start ]; then
|
gokhlayeh@186
|
1425 cp -f $tmp/db /tmp/remain-depends.txt
|
gokhlayeh@186
|
1426 echo "Can't go further because there's depency(ies) loop(s). The remaining packages will be commentend in the cookorder and will be unbuild in case of major update until the problem is solved." >&2
|
gokhlayeh@186
|
1427 for blocked in $(cut -f 1 $tmp/db); do
|
gokhlayeh@186
|
1428 echo "$blocked" >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@186
|
1429 done
|
gokhlayeh@186
|
1430 break
|
gokhlayeh@186
|
1431 fi
|
gokhlayeh@186
|
1432 done
|
gokhlayeh@186
|
1433 [ -s $tmp/cookorder ] || touch $tmp/cookorder
|
gokhlayeh@186
|
1434
|
gokhlayeh@186
|
1435 # The toolchain packages are moved in first position.
|
gokhlayeh@186
|
1436 grep $(for pkg in `scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
1437 --look_for=all --with_args`; do echo " -e ^$pkg$"; done) \
|
gokhlayeh@186
|
1438 $tmp/cookorder | tac > $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1439 for pkg in $(cat $PACKAGES_REPOSITORY/cookorder.txt); do
|
gokhlayeh@186
|
1440 sed "/^$pkg$/d" -i $tmp/cookorder
|
gokhlayeh@186
|
1441 done
|
gokhlayeh@186
|
1442
|
gokhlayeh@186
|
1443 tac $tmp/cookorder >> $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@204
|
1444 unset plan_regen_cookorder
|
gokhlayeh@186
|
1445 report end-step
|
pascal@91
|
1446 }
|
pascal@91
|
1447
|
gokhlayeh@186
|
1448 ########################################################################
|
gokhlayeh@186
|
1449 # SCAN CORE
|
gokhlayeh@186
|
1450 ########################
|
gokhlayeh@186
|
1451 # Include various scan core-functions. It's not intended to be used
|
gokhlayeh@186
|
1452 # directly : prefer scan wrappers in next section.
|
gokhlayeh@186
|
1453
|
gokhlayeh@186
|
1454 look_for_dep()
|
gokhlayeh@186
|
1455 {
|
gokhlayeh@186
|
1456 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1457 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1458 | cut -f 2
|
gokhlayeh@186
|
1459 else
|
gokhlayeh@280
|
1460 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1461 cut -f 2
|
gokhlayeh@186
|
1462 fi
|
gokhlayeh@186
|
1463 }
|
gokhlayeh@186
|
1464
|
gokhlayeh@186
|
1465 look_for_bdep()
|
gokhlayeh@186
|
1466 {
|
gokhlayeh@186
|
1467 look_for_all
|
gokhlayeh@186
|
1468 }
|
gokhlayeh@186
|
1469
|
gokhlayeh@186
|
1470 look_for_all()
|
gokhlayeh@186
|
1471 {
|
gokhlayeh@186
|
1472 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1473 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1474 | cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1475 else
|
gokhlayeh@280
|
1476 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1477 cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1478 fi
|
gokhlayeh@186
|
1479 }
|
gokhlayeh@186
|
1480
|
gokhlayeh@186
|
1481 look_for_rdep()
|
gokhlayeh@186
|
1482 {
|
gokhlayeh@195
|
1483 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | cut -f 1
|
gokhlayeh@186
|
1484 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1485 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt | cut -f 1); do
|
gokhlayeh@186
|
1486 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1487 echo "$rdep"
|
gokhlayeh@186
|
1488 fi
|
gokhlayeh@186
|
1489 done
|
gokhlayeh@186
|
1490 fi
|
gokhlayeh@186
|
1491 }
|
gokhlayeh@186
|
1492
|
gokhlayeh@186
|
1493 look_for_rbdep()
|
gokhlayeh@186
|
1494 {
|
gokhlayeh@195
|
1495 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@195
|
1496 cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1
|
gokhlayeh@186
|
1497 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1498 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@195
|
1499 | cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1); do
|
gokhlayeh@186
|
1500 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1501 echo "$rdep"
|
gokhlayeh@186
|
1502 fi
|
gokhlayeh@186
|
1503 done
|
gokhlayeh@186
|
1504 fi
|
gokhlayeh@186
|
1505 }
|
gokhlayeh@186
|
1506
|
gokhlayeh@186
|
1507 # Return WANTED if it exists.
|
gokhlayeh@186
|
1508 look_for_wanted()
|
gokhlayeh@186
|
1509 {
|
gokhlayeh@186
|
1510 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1511 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1512 else
|
gokhlayeh@280
|
1513 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1514 fi
|
gokhlayeh@186
|
1515 }
|
gokhlayeh@186
|
1516
|
gokhlayeh@186
|
1517 # Return packages which wants PACKAGE.
|
gokhlayeh@186
|
1518 look_for_rwanted()
|
gokhlayeh@186
|
1519 {
|
gokhlayeh@186
|
1520 grep $'\t'$PACKAGE$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1
|
gokhlayeh@186
|
1521 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1522 for rwanted in $(grep $'\t'$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 1); do
|
gokhlayeh@186
|
1523 if [ ! -f "$WOK/$rwanted/receipt" ]; then
|
gokhlayeh@186
|
1524 echo "$rwanted"
|
gokhlayeh@186
|
1525 fi
|
gokhlayeh@186
|
1526 done
|
gokhlayeh@186
|
1527 fi
|
gokhlayeh@186
|
1528 }
|
gokhlayeh@186
|
1529
|
gokhlayeh@186
|
1530 look_for_dev()
|
gokhlayeh@186
|
1531 {
|
gokhlayeh@223
|
1532 WANTED=$(look_for_wanted)
|
gokhlayeh@223
|
1533 if [ "$WANTED" ]; then
|
gokhlayeh@223
|
1534 if [ "$undigest" ] && [ ! -f "$WOK/$WANTED/receipt" ]; then
|
gokhlayeh@223
|
1535 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1536 else
|
gokhlayeh@223
|
1537 [ -f "$WOK/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1538 fi
|
gokhlayeh@223
|
1539 fi
|
gokhlayeh@223
|
1540 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@223
|
1541 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1542 else
|
gokhlayeh@223
|
1543 [ -f "$WOK/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1544 fi
|
gokhlayeh@186
|
1545 }
|
gokhlayeh@186
|
1546
|
gokhlayeh@215
|
1547 with_dev()
|
gokhlayeh@215
|
1548 {
|
gokhlayeh@215
|
1549 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1550 echo $PACKAGE
|
gokhlayeh@215
|
1551 look_for_dev
|
gokhlayeh@215
|
1552 done
|
gokhlayeh@215
|
1553 }
|
gokhlayeh@215
|
1554
|
gokhlayeh@215
|
1555 with_wanted()
|
gokhlayeh@215
|
1556 {
|
gokhlayeh@215
|
1557 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1558 echo $PACKAGE
|
gokhlayeh@215
|
1559 look_for_wanted
|
gokhlayeh@215
|
1560 done
|
gokhlayeh@215
|
1561 }
|
gokhlayeh@215
|
1562
|
gokhlayeh@215
|
1563 use_wanted()
|
gokhlayeh@215
|
1564 {
|
gokhlayeh@215
|
1565 for input in $(cat); do
|
gokhlayeh@215
|
1566 { grep ^$input$'\t' $wan_db || echo $input
|
gokhlayeh@215
|
1567 } | sed 's/.*\t//'
|
gokhlayeh@215
|
1568 done
|
gokhlayeh@215
|
1569 }
|
gokhlayeh@215
|
1570
|
gokhlayeh@186
|
1571 ########################################################################
|
gokhlayeh@186
|
1572 # SCAN
|
gokhlayeh@186
|
1573 ########################
|
gokhlayeh@186
|
1574 # Use wok-wanted.txt and wok-depeds.txt to scan depends.
|
gokhlayeh@186
|
1575 # Option in command line (must be first arg) :
|
gokhlayeh@186
|
1576 # --look_for=bdep/rbdep - Look for depends or reverse depends.
|
gokhlayeh@186
|
1577 # --with_dev - Add development packages (*-dev) in the result.
|
gokhlayeh@186
|
1578 # --with_wanted - Add package+reverse wanted in the result.
|
gokhlayeh@186
|
1579 # --with_args - Include packages in argument in the result.
|
gokhlayeh@186
|
1580
|
gokhlayeh@186
|
1581 scan()
|
gokhlayeh@186
|
1582 {
|
gokhlayeh@186
|
1583 # Get packages in argument.
|
gokhlayeh@223
|
1584 local PACKAGE WANTED pkg_list=
|
gokhlayeh@186
|
1585 for arg in $@; do
|
gokhlayeh@186
|
1586 [ "$arg" = "${arg#--}" ] || continue
|
gokhlayeh@186
|
1587 pkg_list="$pkg_list $arg"
|
gokhlayeh@186
|
1588 done
|
gokhlayeh@204
|
1589
|
gokhlayeh@186
|
1590 # Get options.
|
gokhlayeh@186
|
1591 [ "$pkg_list" ] || return
|
gokhlayeh@186
|
1592 local cooklist= look_for= with_dev= with_wanted= with_args= log_command="$0 $@" \
|
gokhlayeh@215
|
1593 get_options_list="look_for with_dev with_wanted with_args cooklist use_wanted"
|
gokhlayeh@186
|
1594 get_options
|
gokhlayeh@186
|
1595
|
gokhlayeh@186
|
1596 # Cooklist is a special case where we need to modify a little
|
gokhlayeh@186
|
1597 # scan behavior
|
gokhlayeh@186
|
1598 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1599 gen_wan_db
|
gokhlayeh@204
|
1600 look_for=all && with_args=yes && with_dev= && with_wanted=
|
gokhlayeh@204
|
1601 filter=use_wanted
|
gokhlayeh@241
|
1602 if [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@241
|
1603 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1604 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@241
|
1605 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@241
|
1606 check_for_missing
|
gokhlayeh@241
|
1607 done
|
gokhlayeh@241
|
1608 append_to_dep()
|
gokhlayeh@241
|
1609 {
|
gokhlayeh@241
|
1610 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@241
|
1611 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1612 else
|
gokhlayeh@241
|
1613 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1614 fi
|
gokhlayeh@241
|
1615 }
|
gokhlayeh@241
|
1616 else
|
gokhlayeh@241
|
1617 append_to_dep()
|
gokhlayeh@241
|
1618 {
|
gokhlayeh@241
|
1619 check_for_commit && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1620 }
|
gokhlayeh@241
|
1621 fi
|
gokhlayeh@204
|
1622 else
|
gokhlayeh@204
|
1623 append_to_dep()
|
gokhlayeh@204
|
1624 {
|
gokhlayeh@204
|
1625 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@204
|
1626 }
|
gokhlayeh@240
|
1627 # If requested packages are not in dep_db, partial generation of this db is needed.
|
gokhlayeh@241
|
1628 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1629 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@240
|
1630 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@240
|
1631 plan_check_for_missing=yes
|
gokhlayeh@240
|
1632 check_for_missing
|
gokhlayeh@240
|
1633 done
|
gokhlayeh@240
|
1634 if [ "$plan_check_for_missing" ]; then
|
gokhlayeh@240
|
1635 append_to_dep()
|
gokhlayeh@240
|
1636 {
|
gokhlayeh@240
|
1637 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@240
|
1638 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1639 else
|
gokhlayeh@240
|
1640 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1641 fi
|
gokhlayeh@240
|
1642 }
|
gokhlayeh@240
|
1643 check_db_status=yes
|
gokhlayeh@240
|
1644 unset plan_check_for_missing
|
gokhlayeh@240
|
1645 fi
|
gokhlayeh@186
|
1646 fi
|
gokhlayeh@215
|
1647
|
gokhlayeh@204
|
1648 [ "$with_dev" ] && filter=with_dev
|
gokhlayeh@204
|
1649 [ "$with_wanted" ] && filter=with_wanted
|
gokhlayeh@204
|
1650 if [ "$filter" ]; then
|
gokhlayeh@291
|
1651 pkg_list=$(echo $pkg_list | $filter | sort -u)
|
gokhlayeh@204
|
1652 scan_pkg()
|
gokhlayeh@204
|
1653 {
|
gokhlayeh@204
|
1654 look_for_$look_for | $filter
|
gokhlayeh@204
|
1655 }
|
gokhlayeh@204
|
1656 else
|
gokhlayeh@204
|
1657 scan_pkg()
|
gokhlayeh@204
|
1658 {
|
gokhlayeh@204
|
1659 look_for_$look_for
|
gokhlayeh@204
|
1660 }
|
gokhlayeh@204
|
1661 fi
|
gokhlayeh@215
|
1662 touch $tmp/dep
|
gokhlayeh@204
|
1663 for PACKAGE in $pkg_list; do
|
gokhlayeh@204
|
1664 [ "$with_args" ] && append_to_dep
|
gokhlayeh@204
|
1665 scan_pkg
|
gokhlayeh@186
|
1666 done | tr ' ' '\n' | sort -u > $tmp/list
|
gokhlayeh@186
|
1667 [ "$look_for" = bdep ] && look_for=dep
|
gokhlayeh@186
|
1668 while [ -s $tmp/list ]; do
|
gokhlayeh@186
|
1669 PACKAGE=$(sed 1!d $tmp/list)
|
gokhlayeh@186
|
1670 sed 1d -i $tmp/list
|
gokhlayeh@204
|
1671 append_to_dep
|
gokhlayeh@204
|
1672 for pkg in $(scan_pkg); do
|
gokhlayeh@204
|
1673 if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then
|
gokhlayeh@204
|
1674 echo $pkg >> $tmp/list
|
gokhlayeh@186
|
1675 fi
|
gokhlayeh@186
|
1676 done
|
gokhlayeh@186
|
1677 done
|
gokhlayeh@204
|
1678 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1679 mv $tmp/dep $tmp/cooklist
|
gokhlayeh@215
|
1680 else
|
gokhlayeh@204
|
1681 cat $tmp/dep | sort -u
|
gokhlayeh@186
|
1682 fi
|
gokhlayeh@204
|
1683 rm -f $tmp/dep $tmp/list
|
gokhlayeh@240
|
1684 if [ "$check_db_status" ]; then
|
gokhlayeh@240
|
1685 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@240
|
1686 [ "$plan_sort_wandb" ] && sort -o $wan_db $wan_db && unset plan_sort_wandb
|
gokhlayeh@240
|
1687 if [ "$plan_regen_cookorder" ]; then
|
gokhlayeh@240
|
1688 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt || \
|
gokhlayeh@240
|
1689 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@240
|
1690 fi
|
gokhlayeh@240
|
1691 fi
|
gokhlayeh@186
|
1692 }
|
gokhlayeh@186
|
1693
|
gokhlayeh@186
|
1694 ########################################################################
|
gokhlayeh@186
|
1695 # This section contains functions to check package repository and
|
gokhlayeh@186
|
1696 # find which packages to cook.
|
gokhlayeh@186
|
1697 ########################
|
gokhlayeh@186
|
1698
|
gokhlayeh@240
|
1699 check_for_missing()
|
gokhlayeh@240
|
1700 {
|
gokhlayeh@240
|
1701 local PACKAGE
|
gokhlayeh@240
|
1702 if ! check_for_pkg_in_wok; then
|
gokhlayeh@240
|
1703 [ "$?" = 2 ] && return 1
|
gokhlayeh@240
|
1704 return
|
gokhlayeh@240
|
1705 fi
|
gokhlayeh@241
|
1706 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1707 source_receipt
|
gokhlayeh@240
|
1708 PACKAGE=${WANTED:-$PACKAGE}
|
gokhlayeh@240
|
1709 update_wan_db
|
gokhlayeh@240
|
1710 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@240
|
1711 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1712 source_receipt
|
gokhlayeh@240
|
1713 update_dep_db
|
gokhlayeh@240
|
1714 done
|
gokhlayeh@240
|
1715 }
|
gokhlayeh@240
|
1716
|
gokhlayeh@186
|
1717 check_for_commit()
|
gokhlayeh@186
|
1718 {
|
gokhlayeh@204
|
1719 if ! check_for_pkg_in_wok; then
|
gokhlayeh@204
|
1720 [ "$?" = 2 ] && return 1
|
gokhlayeh@204
|
1721 return
|
gokhlayeh@204
|
1722 fi
|
gokhlayeh@204
|
1723 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@204
|
1724 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1725 source_receipt
|
gokhlayeh@204
|
1726
|
gokhlayeh@186
|
1727 # We use md5 of cooking stuff in the packaged receipt to check
|
gokhlayeh@186
|
1728 # commit. We look consecutively in 3 different locations :
|
gokhlayeh@204
|
1729 # - in the wok/PACKAGE/taz/* folder
|
gokhlayeh@186
|
1730 # - in the receipt in the package in incoming repository
|
gokhlayeh@186
|
1731 # - in the receipt in the package in packages repository
|
gokhlayeh@186
|
1732 # If md5sum match, there's no commit.
|
gokhlayeh@186
|
1733 check_for_commit_using_md5sum()
|
gokhlayeh@186
|
1734 {
|
gokhlayeh@186
|
1735 if [ ! -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1736 sed -n '/# md5sum of cooking stuff :/,$p' receipt | \
|
gokhlayeh@186
|
1737 sed -e 1d -e 's/^# //' > $WOK/$PACKAGE/md5
|
gokhlayeh@186
|
1738 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1739 fi
|
gokhlayeh@204
|
1740
|
gokhlayeh@186
|
1741 if [ -s md5 ]; then
|
gokhlayeh@186
|
1742 if md5sum -cs md5; then
|
gokhlayeh@204
|
1743
|
gokhlayeh@204
|
1744 # If md5sum check if ok, check for new/missing files in
|
gokhlayeh@204
|
1745 # cooking stuff.
|
gokhlayeh@204
|
1746 for file in $([ -f receipt ] && echo receipt; \
|
gokhlayeh@204
|
1747 [ -f description.txt ] && echo description.txt; \
|
gokhlayeh@204
|
1748 [ -d stuff ] && find stuff); do
|
gokhlayeh@204
|
1749 if ! fgrep -q " $file" md5; then
|
gokhlayeh@186
|
1750 set_commited
|
gokhlayeh@186
|
1751 fi
|
gokhlayeh@186
|
1752 done
|
gokhlayeh@186
|
1753 else
|
gokhlayeh@186
|
1754 set_commited
|
gokhlayeh@186
|
1755 fi
|
gokhlayeh@186
|
1756 else
|
gokhlayeh@204
|
1757 set_commited
|
gokhlayeh@186
|
1758 fi
|
gokhlayeh@186
|
1759 }
|
gokhlayeh@186
|
1760 set_commited()
|
gokhlayeh@186
|
1761 {
|
gokhlayeh@204
|
1762 ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/commit &&
|
gokhlayeh@204
|
1763 echo $PACKAGE >> $PACKAGES_REPOSITORY/commit
|
gokhlayeh@186
|
1764 gen_cookmd5
|
gokhlayeh@204
|
1765 update_dep_db
|
gokhlayeh@186
|
1766 }
|
gokhlayeh@195
|
1767 taz_dir=$(echo $WOK/$PACKAGE/taz/$PACKAGE-* | fgrep -v '*')
|
gokhlayeh@186
|
1768 if [ -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1769 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1770 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1771 elif [ "$taz_dir" ]; then
|
gokhlayeh@186
|
1772 cd $taz_dir
|
gokhlayeh@186
|
1773 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1774 else
|
gokhlayeh@195
|
1775 pkg=$(echo $INCOMING_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@195
|
1776 [ "$pkg" ] || pkg=$(echo $PACKAGES_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@186
|
1777 if [ "$pkg" ]; then
|
gokhlayeh@186
|
1778 get_pkg_files $pkg
|
gokhlayeh@186
|
1779 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1780 rm -r $pkg_files_dir
|
gokhlayeh@204
|
1781 else
|
gokhlayeh@204
|
1782 set_commited
|
gokhlayeh@186
|
1783 fi
|
gokhlayeh@186
|
1784 fi
|
gokhlayeh@204
|
1785 [ "$forced" ] || echo $PACKAGE >> $tmp/checked
|
gokhlayeh@186
|
1786 done
|
gokhlayeh@204
|
1787 return
|
gokhlayeh@186
|
1788 }
|
gokhlayeh@186
|
1789
|
gokhlayeh@186
|
1790 gen_cook_list()
|
gokhlayeh@186
|
1791 {
|
gokhlayeh@204
|
1792 report step "Scanning wok"
|
gokhlayeh@204
|
1793 if [ "$pkg" ]; then
|
gokhlayeh@204
|
1794 scan $pkg --cooklist
|
gokhlayeh@204
|
1795 else
|
gokhlayeh@204
|
1796 scan `cat $cooklist` --cooklist
|
gokhlayeh@204
|
1797 fi
|
gokhlayeh@204
|
1798 report end-step
|
gokhlayeh@209
|
1799
|
gokhlayeh@209
|
1800 [ -s $tmp/checked ] || [ -s $tmp/cooklist ] || return
|
gokhlayeh@209
|
1801
|
gokhlayeh@209
|
1802 # Core toolchain should not be cooked unless cook-toolchain is used.
|
gokhlayeh@209
|
1803 if ! [ -f /etc/config.site.tmptoolchain ] ; then
|
gokhlayeh@209
|
1804 for PACKAGE in $(scan gcc --look_for=all --with_args --with_wanted); do
|
gokhlayeh@209
|
1805 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/blocked || \
|
gokhlayeh@209
|
1806 echo $PACKAGE >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@209
|
1807 done
|
gokhlayeh@209
|
1808 fi
|
gokhlayeh@209
|
1809
|
gokhlayeh@241
|
1810 if [ -s $PACKAGES_REPOSITORY/commit ] && [ "$COMMAND" != gen-cooklist ]; then
|
gokhlayeh@186
|
1811 cd $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1812 for PACKAGE in $(cat commit); do
|
gokhlayeh@186
|
1813 WANTED="$(look_for_wanted)"
|
gokhlayeh@186
|
1814 if [ "$WANTED" ]; then
|
gokhlayeh@204
|
1815 grep -q ^$WANTED$ broken cooklist blocked commit && continue
|
gokhlayeh@186
|
1816 fi
|
gokhlayeh@204
|
1817 grep -q ^$PACKAGE$ blocked cooklist && continue
|
gokhlayeh@204
|
1818 echo $PACKAGE >> cooklist
|
gokhlayeh@186
|
1819 done
|
gokhlayeh@186
|
1820 fi
|
gokhlayeh@186
|
1821 sort_cooklist
|
gokhlayeh@186
|
1822 }
|
gokhlayeh@186
|
1823
|
gokhlayeh@186
|
1824 sort_cooklist()
|
gokhlayeh@186
|
1825 {
|
gokhlayeh@266
|
1826 if [ "$(sed 1!d $PACKAGES_REPOSITORY/cookorder.txt)" = "#PlanSort" ]; then
|
gokhlayeh@266
|
1827 sed 1d -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@266
|
1828 plan_regen_cookorder=yes
|
gokhlayeh@266
|
1829 fi
|
gokhlayeh@266
|
1830 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@266
|
1831 [ "$plan_regen_cookorder" ] && sort_db
|
gokhlayeh@215
|
1832 report step "Sorting cooklist"
|
gokhlayeh@204
|
1833 if [ -f "$tmp/checked" ]; then
|
gokhlayeh@204
|
1834 rm -f $tmp/cooklist
|
gokhlayeh@204
|
1835 cat $tmp/checked | while read PACKAGE; do
|
gokhlayeh@204
|
1836 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/cooklist && \
|
gokhlayeh@204
|
1837 echo $PACKAGE >> $tmp/cooklist
|
gokhlayeh@204
|
1838 done
|
gokhlayeh@209
|
1839 elif ! [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@209
|
1840 cat $PACKAGES_REPOSITORY/blocked | while read PACKAGE; do
|
gokhlayeh@209
|
1841 sed "/^$PACKAGE/d" -i $tmp/cooklist
|
gokhlayeh@209
|
1842 done
|
gokhlayeh@204
|
1843 fi
|
gokhlayeh@215
|
1844
|
gokhlayeh@204
|
1845 for PACKAGE in $(cat $tmp/cooklist); do
|
gokhlayeh@204
|
1846 WANTED="$(look_for_wanted)"
|
gokhlayeh@204
|
1847 [ "$WANTED" ] || continue
|
gokhlayeh@297
|
1848 if grep -q ^$WANTED$ $PACKAGES_REPOSITORY/broken $tmp/cooklist; then
|
gokhlayeh@186
|
1849 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1850 elif [ ! -d $WOK/$WANTED/install ]; then
|
gokhlayeh@204
|
1851 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1852 echo $WANTED >> $tmp/cooklist
|
gokhlayeh@186
|
1853 fi
|
gokhlayeh@186
|
1854 done
|
gokhlayeh@186
|
1855
|
gokhlayeh@204
|
1856 # Use cookorder.txt to sort cooklist.
|
gokhlayeh@204
|
1857 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
1858 cat $PACKAGES_REPOSITORY/cookorder.txt | while read PACKAGE; do
|
gokhlayeh@204
|
1859 if grep -q ^$PACKAGE$ $tmp/cooklist; then
|
gokhlayeh@204
|
1860 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1861 echo $PACKAGE >> $tmp/cooklist.tmp
|
gokhlayeh@204
|
1862 fi
|
gokhlayeh@204
|
1863 done
|
gokhlayeh@204
|
1864
|
gokhlayeh@204
|
1865 # Remaining packages in cooklist are thoses without compile_rules.
|
gokhlayeh@204
|
1866 # They can be cooked first in any order.
|
gokhlayeh@204
|
1867 if [ -f $tmp/cooklist.tmp ]; then
|
gokhlayeh@204
|
1868 cat $tmp/cooklist.tmp >> $tmp/cooklist
|
gokhlayeh@204
|
1869 rm $tmp/cooklist.tmp
|
gokhlayeh@204
|
1870 fi
|
gokhlayeh@204
|
1871
|
gokhlayeh@204
|
1872 cat $tmp/cooklist
|
gokhlayeh@204
|
1873 [ "$cooklist" = "$PACKAGES_REPOSITORY/cooklist" ] && \
|
gokhlayeh@204
|
1874 cat $tmp/cooklist > $cooklist
|
gokhlayeh@204
|
1875 fi
|
gokhlayeh@204
|
1876
|
gokhlayeh@186
|
1877 report end-step
|
gokhlayeh@186
|
1878 }
|
gokhlayeh@186
|
1879
|
gokhlayeh@284
|
1880 look_for_missing_pkg()
|
gokhlayeh@284
|
1881 {
|
gokhlayeh@284
|
1882 for pkg in $(cat $PACKAGES_REPOSITORY/$1); do
|
gokhlayeh@284
|
1883 grep -q ^$pkg$ $INCOMING_REPOSITORY/packages.txt \
|
gokhlayeh@284
|
1884 $PACKAGES_REPOSITORY/packages.txt || \
|
gokhlayeh@284
|
1885 continue
|
gokhlayeh@284
|
1886 echo $pkg
|
gokhlayeh@284
|
1887 done
|
gokhlayeh@284
|
1888 }
|
gokhlayeh@284
|
1889
|
gokhlayeh@186
|
1890 check_for_incoming()
|
gokhlayeh@186
|
1891 {
|
gokhlayeh@204
|
1892 [ -s $INCOMING_REPOSITORY/packages.desc ] || {
|
gokhlayeh@204
|
1893 echo "No packages in $INCOMING_REPOSITORY."
|
gokhlayeh@204
|
1894 return; }
|
gokhlayeh@204
|
1895 if [ -s $PACKAGES_REPOSITORY/broken ]; then
|
gokhlayeh@290
|
1896 missingpkg=$(look_for_missing_pkg broken)
|
gokhlayeh@290
|
1897 if [ "$missingpkg" ]; then
|
gokhlayeh@290
|
1898 echo "Don't move incoming packages to main repository because theses ones are broken:" >&2
|
gokhlayeh@290
|
1899 echo "$missingpkg"
|
gokhlayeh@290
|
1900 return 1
|
gokhlayeh@290
|
1901 fi
|
gokhlayeh@186
|
1902 fi
|
gokhlayeh@204
|
1903 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
1904 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
1905 if [ "$missingpkg" ]; then
|
gokhlayeh@290
|
1906 echo "Don't move incoming packages to main repository because theses ones needs to be cooked:" >&2
|
gokhlayeh@290
|
1907 echo "$missingpkg"
|
gokhlayeh@290
|
1908 return 1
|
gokhlayeh@290
|
1909 fi
|
gokhlayeh@204
|
1910 fi
|
gokhlayeh@215
|
1911 pkg="$(cut -f 1 -d '|' $INCOMING_REPOSITORY/packages.desc)"
|
gokhlayeh@214
|
1912 if ! [ "$forced" ]; then
|
gokhlayeh@214
|
1913 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@214
|
1914 gen_cook_list
|
gokhlayeh@214
|
1915 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
1916 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
1917 if [ "$missingpkg" ]; then
|
gokhlayeh@290
|
1918 echo "Don't move incoming packages to main repository because theses ones needs to be cooked:" >&2
|
gokhlayeh@290
|
1919 echo "$missingpkg"
|
gokhlayeh@290
|
1920 return 1
|
gokhlayeh@290
|
1921 fi
|
gokhlayeh@214
|
1922 fi
|
gokhlayeh@204
|
1923 fi
|
gokhlayeh@204
|
1924 report step "Moving incoming packages to main repository"
|
gokhlayeh@204
|
1925 unset EXTRAVERSION
|
gokhlayeh@215
|
1926 for PACKAGE in $pkg; do
|
gokhlayeh@186
|
1927 prev_VERSION=$(get_pkg_version $PACKAGES_REPOSITORY)
|
gokhlayeh@204
|
1928 VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
1929 remove_previous_package $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
1930 echo "Moving $PACKAGE..."
|
gokhlayeh@204
|
1931 mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
1932 touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg
|
gokhlayeh@266
|
1933 previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
1934 sed -e "/^$PACKAGE:main/d" \
|
slaxemulator@275
|
1935 -e "s/^$PACKAGE:incoming/$PACKAGE:main/" \
|
gokhlayeh@266
|
1936 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
1937 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
1938 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
1939 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
1940 fi
|
gokhlayeh@204
|
1941 done
|
gokhlayeh@204
|
1942 report end-step
|
gokhlayeh@204
|
1943 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
1944 packages.txt; do
|
gokhlayeh@204
|
1945 echo -n "" > $INCOMING_REPOSITORY/$file
|
gokhlayeh@204
|
1946 done
|
gokhlayeh@204
|
1947 rm -r $INCOMING_REPOSITORY/files.list.lzma
|
gokhlayeh@186
|
1948 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@186
|
1949 }
|
gokhlayeh@186
|
1950
|
gokhlayeh@186
|
1951 ########################################################################
|
gokhlayeh@186
|
1952 # TAZWOK MAIN FUNCTIONS
|
gokhlayeh@186
|
1953 ########################
|
gokhlayeh@186
|
1954
|
gokhlayeh@186
|
1955 clean()
|
gokhlayeh@186
|
1956 {
|
gokhlayeh@186
|
1957 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1958 ls -A $WOK/$PACKAGE | grep -q -v -e ^receipt$ -e ^description.txt$ \
|
gokhlayeh@186
|
1959 -e ^stuff$ || return
|
gokhlayeh@186
|
1960
|
gokhlayeh@249
|
1961 [ "$COMMAND" = clean-wok ] || report step "Cleaning $PACKAGE"
|
gokhlayeh@186
|
1962 # Check for clean_wok function.
|
gokhlayeh@186
|
1963 if grep -q ^clean_wok $RECEIPT; then
|
gokhlayeh@186
|
1964 clean_wok
|
gokhlayeh@186
|
1965 fi
|
gokhlayeh@186
|
1966 # Clean should only have a receipt, stuff and optional desc.
|
gokhlayeh@186
|
1967 for f in `ls .`
|
gokhlayeh@186
|
1968 do
|
gokhlayeh@186
|
1969 case $f in
|
gokhlayeh@250
|
1970 receipt|stuff|description.txt|md5)
|
gokhlayeh@186
|
1971 continue ;;
|
gokhlayeh@186
|
1972 *)
|
gokhlayeh@263
|
1973 rm -rf $f ;;
|
gokhlayeh@186
|
1974 esac
|
gokhlayeh@186
|
1975 done
|
gokhlayeh@262
|
1976 [ "$COMMAND" != clean-wok ] && report end-step
|
gokhlayeh@186
|
1977 }
|
gokhlayeh@186
|
1978
|
gokhlayeh@186
|
1979 # Configure and make a package with the receipt.
|
gokhlayeh@186
|
1980 compile_package()
|
gokhlayeh@186
|
1981 {
|
gokhlayeh@186
|
1982 check_for_package_on_cmdline
|
gokhlayeh@186
|
1983
|
gokhlayeh@186
|
1984 # Include the receipt to get all needed variables and functions
|
gokhlayeh@186
|
1985 # and cd into the work directory to start the work.
|
gokhlayeh@186
|
1986 check_for_receipt
|
gokhlayeh@186
|
1987 source_receipt
|
gokhlayeh@186
|
1988
|
gokhlayeh@186
|
1989 # Log the package name and date.
|
gokhlayeh@186
|
1990 echo "date `date +%Y%m%d\ \%H:%M:%S`" >> $LOG
|
gokhlayeh@186
|
1991 echo "package $PACKAGE (compile)" >> $LOG
|
gokhlayeh@186
|
1992
|
gokhlayeh@186
|
1993 # Set wanted $src variable to help compiling.
|
gokhlayeh@186
|
1994 [ ! "$src" ] && set_src_path
|
gokhlayeh@186
|
1995 check_for_build_depends || return 1
|
gokhlayeh@186
|
1996 check_for_wanted
|
gokhlayeh@186
|
1997 unset target
|
gokhlayeh@186
|
1998 check_for_tarball && check_for_compile_rules
|
gokhlayeh@186
|
1999 }
|
gokhlayeh@186
|
2000
|
gokhlayeh@186
|
2001 # Cook command also include all features to manage lists which keep
|
gokhlayeh@186
|
2002 # track of wok/packages state.
|
gokhlayeh@186
|
2003 cook()
|
gokhlayeh@186
|
2004 {
|
gokhlayeh@186
|
2005 cook_code=
|
gokhlayeh@186
|
2006 set_common_path
|
gokhlayeh@186
|
2007 check_for_receipt
|
gokhlayeh@186
|
2008 source_receipt
|
gokhlayeh@186
|
2009
|
gokhlayeh@186
|
2010 # Define log path and start report.
|
gokhlayeh@186
|
2011 [ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
2012 report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
2013 report step "Cooking $PACKAGE"
|
gokhlayeh@186
|
2014 report open-bloc
|
gokhlayeh@186
|
2015
|
gokhlayeh@186
|
2016 clean $PACKAGE
|
gokhlayeh@186
|
2017 [ -s $tmp/cooklist ] && sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@186
|
2018
|
gokhlayeh@186
|
2019 if compile_package; then
|
gokhlayeh@215
|
2020 remove_src
|
gokhlayeh@186
|
2021 refresh_packages_from_compile
|
gokhlayeh@186
|
2022 gen_package
|
gokhlayeh@186
|
2023
|
gokhlayeh@186
|
2024 # Update packages-incoming repository.
|
gokhlayeh@186
|
2025 store_pkgname=$PACKAGE
|
gokhlayeh@186
|
2026 pkg_repository=$INCOMING_REPOSITORY
|
gokhlayeh@186
|
2027 update_packages_db
|
gokhlayeh@186
|
2028
|
gokhlayeh@186
|
2029 PACKAGE=$store_pkgname
|
gokhlayeh@186
|
2030 unset store_pkgname
|
gokhlayeh@186
|
2031
|
gokhlayeh@186
|
2032 # Upgrade to cooked packages if it was previously installed.
|
gokhlayeh@186
|
2033 report step "Look for package(s) to upgrade"
|
gokhlayeh@186
|
2034 for pkg in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@186
|
2035 if [ -d $INSTALLED/$pkg ]; then
|
gokhlayeh@186
|
2036 tazpkg get-install $pkg --forced
|
gokhlayeh@186
|
2037 fi
|
gokhlayeh@186
|
2038 done
|
gokhlayeh@186
|
2039 report end-step
|
gokhlayeh@186
|
2040 else
|
gokhlayeh@186
|
2041
|
gokhlayeh@186
|
2042 # Set package as broken.
|
gokhlayeh@186
|
2043 if ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
2044 echo $PACKAGE >> $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
2045 fi
|
gokhlayeh@186
|
2046 gen_cookmd5
|
gokhlayeh@186
|
2047 cook_code=1
|
gokhlayeh@186
|
2048 fi
|
gokhlayeh@186
|
2049
|
gokhlayeh@186
|
2050 # Remove build_depends in cook mode (if in cooklist, it's done when
|
gokhlayeh@186
|
2051 # checking build_depends of next package and we remove only unneeded
|
gokhlayeh@186
|
2052 # packages to keep chroot minimal and gain some time).
|
gokhlayeh@210
|
2053 if [ "$COMMAND" = cook ]; then
|
gokhlayeh@210
|
2054 remove_build_depends $MISSING_PACKAGE
|
gokhlayeh@210
|
2055 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@210
|
2056 fi
|
gokhlayeh@210
|
2057
|
gokhlayeh@186
|
2058 # Regen the cooklist if it was planned and command is not cook.
|
gokhlayeh@186
|
2059 [ "$regen_cooklist" ] && unset regen_cooklist && \
|
gokhlayeh@186
|
2060 [ "$COMMAND" != cook ] && sort_cooklist
|
gokhlayeh@186
|
2061
|
gokhlayeh@186
|
2062 # Some hacks to set the bloc & function status as failed if cook was
|
gokhlayeh@186
|
2063 # failed.
|
gokhlayeh@186
|
2064 report_return_code=$cook_code
|
gokhlayeh@186
|
2065 report close-bloc
|
gokhlayeh@186
|
2066 report end-sublog
|
gokhlayeh@186
|
2067 return $cook_code
|
gokhlayeh@186
|
2068 }
|
gokhlayeh@186
|
2069
|
gokhlayeh@186
|
2070 cook_list()
|
gokhlayeh@186
|
2071 {
|
gokhlayeh@204
|
2072 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
2073 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@204
|
2074 # Note : options -main variables- are automatically keeped by
|
gokhlayeh@204
|
2075 # the sub-applications tazchroot/tazwok; as well as report data.
|
gokhlayeh@204
|
2076 cd $LOCAL_REPOSITORY
|
gokhlayeh@204
|
2077 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@204
|
2078 tazchroot tazwok cook-list --SLITAZ_DIR=$SLITAZ_DIR --SLITAZ_VERSION=$SLITAZ_VERSION ${undigest:+ --undigest=$undigest}
|
gokhlayeh@204
|
2079 return
|
gokhlayeh@204
|
2080 fi
|
gokhlayeh@204
|
2081 while [ -s $tmp/cooklist ]; do
|
gokhlayeh@204
|
2082 PACKAGE=$(sed 1!d $tmp/cooklist)
|
gokhlayeh@204
|
2083 cook
|
gokhlayeh@204
|
2084 done
|
gokhlayeh@204
|
2085 remove_build_depends $MISSING_PACKAGE $remove_later
|
gokhlayeh@210
|
2086 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@204
|
2087 else
|
gokhlayeh@186
|
2088 echo "Nothing to cook."
|
gokhlayeh@186
|
2089 return
|
gokhlayeh@186
|
2090 fi
|
gokhlayeh@186
|
2091 }
|
gokhlayeh@186
|
2092
|
gokhlayeh@186
|
2093 configure_tazchroot()
|
gokhlayeh@186
|
2094 {
|
gokhlayeh@190
|
2095 cat > $LOCAL_REPOSITORY/tazchroot.conf << EOF
|
gokhlayeh@186
|
2096 # Tazchroot configuration file - created by tazwok.
|
gokhlayeh@186
|
2097
|
gokhlayeh@186
|
2098 # Default chroot path
|
gokhlayeh@186
|
2099 SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@186
|
2100 SLITAZ_VERSION=$SLITAZ_VERSION
|
gokhlayeh@186
|
2101 $( [ "$undigest" ] && echo "undigest=$undigest" )
|
gokhlayeh@186
|
2102 LOCAL_REPOSITORY=$SLITAZ_DIR/$(if [ "$undigest" ]; then echo '$undigest'; else echo '$SLITAZ_VERSION'; fi)
|
gokhlayeh@186
|
2103 chroot_dir=\$LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
2104
|
gokhlayeh@186
|
2105 # Default scripts path (theses scripts are added in the
|
gokhlayeh@186
|
2106 # $chroot_dir/usr/bin and can be called with tazchroot script)
|
gokhlayeh@186
|
2107 script_dir=/var/lib/tazchroot
|
gokhlayeh@186
|
2108
|
gokhlayeh@186
|
2109 # List of directories to mount.
|
gokhlayeh@192
|
2110 list_dir="$(for dir in packages wok src packages-incoming log flavors iso; do echo $LOCAL_REPOSITORY/$dir; done)
|
gokhlayeh@186
|
2111 $SLITAZ_LOG$( [ "$undigest" ] && echo -e "\n$SLITAZ_DIR/$SLITAZ_VERSION/packages" )"
|
gokhlayeh@186
|
2112
|
gokhlayeh@186
|
2113 create_chroot()
|
gokhlayeh@186
|
2114 {
|
gokhlayeh@186
|
2115 mkdir -p \$chroot_dir
|
gokhlayeh@186
|
2116 for pkg in \$(tazwok build-depends toolchain --SLITAZ_DIR=\$SLITAZ_DIR --SLITAZ_VERSION=\$SLITAZ_VERSION${undigest:+ --undigest=\$undigest}); do
|
gokhlayeh@186
|
2117 tazpkg get-install \$pkg --root="\$chroot_dir"
|
gokhlayeh@186
|
2118 done
|
gokhlayeh@186
|
2119
|
gokhlayeh@186
|
2120 # Store list of installed packages needed by cleanchroot.
|
gokhlayeh@194
|
2121 ls -1 \$chroot_dir/\$INSTALLED > \$chroot_dir/\$LOCALSTATE/chroot-pkgs
|
gokhlayeh@186
|
2122
|
gokhlayeh@186
|
2123 sed -e "s~^SLITAZ_DIR=.*~SLITAZ_DIR=\$SLITAZ_DIR~" \\
|
gokhlayeh@186
|
2124 -e "s/^SLITAZ_VERSION=.*/SLITAZ_VERSION=\$SLITAZ_VERSION/" \\
|
gokhlayeh@186
|
2125 -i \$chroot_dir/etc/slitaz/slitaz.conf
|
gokhlayeh@186
|
2126 $( [ "$undigest" ] && echo ' echo "undigest='"$undigest"'" >> $chroot_dir/etc/slitaz/tazwok.conf')
|
gokhlayeh@186
|
2127 sed 's/LC_ALL/LC_ALL=POSIX/' -i \$chroot_dir/etc/profile
|
gokhlayeh@186
|
2128 }
|
gokhlayeh@186
|
2129
|
gokhlayeh@186
|
2130 mount_chroot()
|
gokhlayeh@186
|
2131 {
|
gokhlayeh@186
|
2132 cp -a /etc/resolv.conf \$chroot_dir/etc/resolv.conf
|
gokhlayeh@194
|
2133 echo "\$LOCAL_REPOSITORY/packages" > \$chroot_dir\$LOCALSTATE/mirror
|
gokhlayeh@194
|
2134 mkdir -p \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming
|
gokhlayeh@194
|
2135 echo "\$LOCAL_REPOSITORY/packages-incoming" > \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming/mirror
|
gokhlayeh@194
|
2136 $( [ "$undigest" ] && echo ' mkdir -p $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION
|
gokhlayeh@194
|
2137 echo "$SLITAZ_DIR/$SLITAZ_VERSION/packages" > $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION/mirror' )
|
gokhlayeh@194
|
2138 echo -e "\${LOCAL_REPOSITORY##*/}-incoming\nmain" > \$chroot_dir\$LOCALSTATE/priority
|
gokhlayeh@186
|
2139 mount -t proc proc \$chroot_dir/proc
|
gokhlayeh@186
|
2140 mount -t sysfs sysfs \$chroot_dir/sys
|
gokhlayeh@186
|
2141 mount -t devpts devpts \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2142 mount -t tmpfs shm \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2143 for dir in \$list_dir; do
|
gokhlayeh@186
|
2144 mkdir -p \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2145 mount \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2146 done
|
gokhlayeh@186
|
2147 }
|
gokhlayeh@186
|
2148
|
gokhlayeh@186
|
2149 umount_chroot()
|
gokhlayeh@186
|
2150 {
|
gokhlayeh@186
|
2151 for dir in \$list_dir; do
|
gokhlayeh@186
|
2152 umount \$chroot_dir\$dir
|
gokhlayeh@186
|
2153 done
|
gokhlayeh@186
|
2154 umount \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2155 umount \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2156 umount \$chroot_dir/sys
|
gokhlayeh@186
|
2157 umount \$chroot_dir/proc
|
gokhlayeh@186
|
2158 }
|
gokhlayeh@186
|
2159 EOF
|
gokhlayeh@186
|
2160 }
|
gokhlayeh@186
|
2161
|
gokhlayeh@186
|
2162 ########################################################################
|
gokhlayeh@186
|
2163 ######################### END OF NEW FUNCTIONS #########################
|
gokhlayeh@186
|
2164 ########################################################################
|
gokhlayeh@186
|
2165
|
pascal@111
|
2166 # List packages providing a virtual package
|
pascal@111
|
2167 whoprovide()
|
pascal@111
|
2168 {
|
pascal@111
|
2169 local i;
|
gokhlayeh@195
|
2170 for i in $(fgrep -l PROVIDE $WOK/*/receipt); do
|
pascal@111
|
2171 . $i
|
pascal@111
|
2172 case " $PROVIDE " in
|
pascal@111
|
2173 *\ $1\ *|*\ $1:*) echo $(basename $(dirname $i));;
|
pascal@111
|
2174 esac
|
pascal@111
|
2175 done
|
pascal@111
|
2176 }
|
pascal@111
|
2177
|
gokhlayeh@186
|
2178 ########################################################################
|
gokhlayeh@186
|
2179 # TAZWOK COMMANDS
|
gokhlayeh@186
|
2180 ########################
|
pankso@7
|
2181
|
pankso@7
|
2182 case "$COMMAND" in
|
pankso@7
|
2183 stats)
|
paul@166
|
2184 # Tazwok general statistics from the wok config file.
|
pankso@7
|
2185 #
|
gokhlayeh@186
|
2186 get_tazwok_config
|
gokhlayeh@186
|
2187 echo -e "\n\033[1mTazwok configuration statistics\033[0m
|
pankso@7
|
2188 ================================================================================
|
pankso@7
|
2189 Wok directory : $WOK
|
pankso@7
|
2190 Packages repository : $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
2191 Incoming repository : $INCOMING_REPOSITORY
|
pankso@7
|
2192 Sources repository : $SOURCES_REPOSITORY
|
gokhlayeh@186
|
2193 Log directory : $LOCAL_REPOSITORY/log
|
pankso@7
|
2194 Packages in the wok : `ls -1 $WOK | wc -l`
|
pankso@16
|
2195 Cooked packages : `ls -1 $PACKAGES_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2196 Incoming packages : `ls -1 $INCOMING_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2197 ================================================================================\n"
|
gokhlayeh@186
|
2198 ;;
|
pankso@133
|
2199 edit)
|
gokhlayeh@186
|
2200 get_tazwok_config
|
pankso@133
|
2201 check_for_package_on_cmdline
|
pankso@133
|
2202 check_for_receipt
|
gokhlayeh@186
|
2203 $EDITOR $WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
2204 ;;
|
pascal@98
|
2205 build-depends)
|
gokhlayeh@186
|
2206 # List dependencies to rebuild wok, or only a package
|
gokhlayeh@186
|
2207 get_tazwok_config
|
gokhlayeh@215
|
2208 report(){ : ; }
|
gokhlayeh@242
|
2209 if [ ! "$PACKAGE" ] || [ "$PACKAGE" = toolchain ]; then
|
gokhlayeh@186
|
2210 scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
2211 --look_for=dep --with_dev --with_args
|
gokhlayeh@186
|
2212 else
|
gokhlayeh@186
|
2213 check_for_package_on_cmdline
|
gokhlayeh@186
|
2214 scan $PACKAGE --look_for=bdep --with_dev
|
gokhlayeh@186
|
2215 fi
|
gokhlayeh@186
|
2216 ;;
|
gokhlayeh@186
|
2217 gen-cooklist)
|
gokhlayeh@215
|
2218 check_root
|
gokhlayeh@204
|
2219 get_options_list="pkg"
|
gokhlayeh@186
|
2220 get_tazwok_config
|
gokhlayeh@215
|
2221 report(){ : ; }
|
gokhlayeh@204
|
2222 if ! [ "$pkg" ]; then
|
gokhlayeh@242
|
2223 if [ ! "$LIST" ] || [ "$LIST" = toolchain ]; then
|
gokhlayeh@242
|
2224 pkg="$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA"
|
gokhlayeh@242
|
2225 else
|
gokhlayeh@242
|
2226 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@242
|
2227 fi
|
gokhlayeh@186
|
2228 fi
|
gokhlayeh@204
|
2229 gen_cook_list
|
gokhlayeh@186
|
2230 ;;
|
pascal@119
|
2231 check-depends)
|
gokhlayeh@186
|
2232 # Check package depends /!\
|
gokhlayeh@186
|
2233 get_tazwok_config
|
pascal@119
|
2234 echo ""
|
paul@121
|
2235 echo -e "\033[1mCheck every receipt for DEPENDS - doesn't scan ELF files\033[0m
|
pascal@119
|
2236 ================================================================================"
|
pascal@119
|
2237 TMPDIR=/tmp/tazwok$$
|
pascal@119
|
2238 DEFAULT_DEPENDS="glibc-base gcc-lib-base"
|
pascal@119
|
2239
|
pascal@119
|
2240 # Build ALL_DEPENDS variable
|
pascal@119
|
2241 scan_dep()
|
pascal@119
|
2242 {
|
pascal@119
|
2243 local i
|
pascal@119
|
2244 ALL_DEPENDS="$ALL_DEPENDS$PACKAGE "
|
pascal@128
|
2245 for i in $DEPENDS $SUGGESTED ; do
|
pascal@119
|
2246 case " $ALL_DEPENDS " in
|
pascal@119
|
2247 *\ $i\ *) continue;;
|
pascal@119
|
2248 esac
|
pascal@120
|
2249 [ -d $WOK/$i ] || {
|
pascal@120
|
2250 ALL_DEPENDS="$ALL_DEPENDS$i "
|
pascal@120
|
2251 continue
|
pascal@120
|
2252 }
|
pascal@128
|
2253 DEPENDS=""
|
pascal@128
|
2254 SUGGESTED=""
|
pascal@119
|
2255 . $WOK/$i/receipt
|
pascal@119
|
2256 scan_dep
|
pascal@119
|
2257 done
|
pascal@119
|
2258 }
|
pankso@133
|
2259
|
pascal@119
|
2260 # Check for ELF file
|
pascal@119
|
2261 is_elf()
|
pascal@119
|
2262 {
|
pascal@119
|
2263 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" \
|
pascal@119
|
2264 = "ELF" ]
|
pascal@119
|
2265 }
|
pascal@119
|
2266
|
pascal@119
|
2267 # Print shared library dependencies
|
pascal@119
|
2268 ldd()
|
pascal@119
|
2269 {
|
pascal@130
|
2270 LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
|
pascal@119
|
2271 }
|
pascal@119
|
2272
|
pascal@119
|
2273 mkdir $TMPDIR
|
pascal@119
|
2274 cd $TMPDIR
|
pascal@140
|
2275 for i in $LOCALSTATE/files.list.lzma \
|
pascal@140
|
2276 $LOCALSTATE/undigest/*/files.list.lzma ; do
|
pascal@119
|
2277 [ -f $i ] && lzma d $i -so >> files.list
|
pascal@119
|
2278 done
|
pascal@119
|
2279 for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
|
pascal@119
|
2280 tazpkg extract $pkg > /dev/null 2>&1
|
pascal@119
|
2281 . */receipt
|
pascal@119
|
2282 ALL_DEPENDS="$DEFAULT_DEPENDS "
|
pascal@119
|
2283 scan_dep
|
pascal@119
|
2284 find */fs -type f | while read file ; do
|
pascal@119
|
2285 is_elf $file || continue
|
pascal@119
|
2286 case "$file" in
|
pascal@119
|
2287 *.o|*.ko|*.ko.gz) continue;;
|
pascal@119
|
2288 esac
|
pascal@119
|
2289 ldd $file | while read lib rem; do
|
pascal@119
|
2290 case "$lib" in
|
pascal@128
|
2291 statically|linux-gate.so*|ld-*.so|*/ld-*.so)
|
pascal@119
|
2292 continue;;
|
pascal@119
|
2293 esac
|
gokhlayeh@195
|
2294 for dep in $(fgrep $lib files.list | cut -d: -f1); do
|
pascal@119
|
2295 case " $ALL_DEPENDS " in
|
pascal@119
|
2296 *\ $dep\ *) continue 2;;
|
pascal@119
|
2297 esac
|
gokhlayeh@195
|
2298 for vdep in $(fgrep $dep $LOCALSTATE/packages.equiv | cut -d= -f1); do
|
pascal@128
|
2299 case " $ALL_DEPENDS " in
|
pascal@129
|
2300 *\ $vdep\ *) continue 3;;
|
pascal@128
|
2301 esac
|
pascal@128
|
2302 done
|
pascal@119
|
2303 done
|
pascal@128
|
2304 [ -n "$dep" ] || dep="UNKNOWN"
|
pascal@119
|
2305 echo "$(basename $pkg): ${file#*fs} depends on package $dep for the shared library $lib"
|
pascal@119
|
2306 done
|
pascal@119
|
2307 done
|
pascal@119
|
2308 rm -rf */
|
pascal@119
|
2309 done
|
pascal@119
|
2310 cd /tmp
|
pascal@119
|
2311 rm -rf $TMPDIR
|
gokhlayeh@186
|
2312 ;;
|
pascal@76
|
2313 check)
|
paul@154
|
2314 # Check wok consistency
|
gokhlayeh@186
|
2315 get_tazwok_config
|
pascal@76
|
2316 echo ""
|
pascal@76
|
2317 echo -e "\033[1mWok and packages checking\033[0m
|
pascal@76
|
2318 ================================================================================"
|
pascal@77
|
2319 cd $WOK
|
pascal@77
|
2320 for pkg in $(ls)
|
pascal@76
|
2321 do
|
pascal@76
|
2322 [ -f $pkg/receipt ] || continue
|
gokhlayeh@186
|
2323 RECEIPT= $pkg/receipt
|
gokhlayeh@186
|
2324 source_receipt
|
gokhlayeh@186
|
2325 [ "$PACKAGE" = "$pkg" ] || echo "Package $PACKAGE should be $pkg" >&2
|
gokhlayeh@186
|
2326 [ -n "$VERSION" ] || echo "Package $PACKAGE has no VERSION" >&2
|
gokhlayeh@186
|
2327 [ -n "$PACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded PACKED_SIZE" >&2
|
gokhlayeh@186
|
2328 [ -n "$UNPACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded UNPACKED_SIZE" >&2
|
gokhlayeh@186
|
2329 [ -n "$EXTRAVERSION" ] && echo "Package $PACKAGE has hardcoded EXTRAVERSION" >&2
|
pascal@97
|
2330 if [ -n "$WANTED" ]; then
|
pascal@97
|
2331 if [ ! -f $WANTED/receipt ]; then
|
gokhlayeh@186
|
2332 echo "Package $PACKAGE wants unknown $WANTED package" >&2
|
pascal@97
|
2333 else
|
pascal@97
|
2334 BASEVERSION=$(. $WANTED/receipt ; echo $VERSION)
|
pascal@103
|
2335 if [ "$VERSION" = "$WANTED" ]; then
|
pascal@103
|
2336 # BASEVERSION is computed in receipt
|
gokhlayeh@195
|
2337 fgrep -q '_pkg=' $pkg/receipt &&
|
pascal@103
|
2338 BASEVERSION=$VERSION
|
pascal@103
|
2339 fi
|
pascal@97
|
2340 if [ "$VERSION" != "$BASEVERSION" ]; then
|
gokhlayeh@186
|
2341 echo "Package $PACKAGE ($VERSION) wants $WANTED ($BASEVERSION)" >&2
|
pascal@97
|
2342 fi
|
pascal@97
|
2343 fi
|
pascal@97
|
2344 fi
|
pascal@97
|
2345
|
pascal@94
|
2346 if [ -n "$CATEGORY" ]; then
|
pascal@94
|
2347 case " $(echo $CATEGORIES) " in
|
pascal@94
|
2348 *\ $CATEGORY\ *);;
|
gokhlayeh@186
|
2349 *) echo "Package $PACKAGE has an invalid CATEGORY" >&2;;
|
pascal@94
|
2350 esac
|
pascal@94
|
2351 else
|
gokhlayeh@186
|
2352 echo"Package $PACKAGE has no CATEGORY" >&2
|
pascal@94
|
2353 fi
|
gokhlayeh@186
|
2354 [ -n "$SHORT_DESC" ] || echo "Package $PACKAGE has no SHORT_DESC" >&2
|
gokhlayeh@186
|
2355 [ -n "$MAINTAINER" ] || echo "Package $PACKAGE has no MAINTAINER" >&2
|
pascal@122
|
2356 case "$WGET_URL" in
|
pascal@178
|
2357 ftp*|http*) busybox wget -s $WGET_URL 2> /dev/null ||
|
gokhlayeh@186
|
2358 echo "Package $PACKAGE has a wrong WGET_URL" >&2;;
|
pascal@122
|
2359 '') ;;
|
gokhlayeh@186
|
2360 *) echo "Package $PACKAGE has an invalid WGET_URL" >&2;;
|
pascal@122
|
2361 esac
|
pascal@112
|
2362 case "$WEB_SITE" in
|
pascal@125
|
2363 ftp*|http*);;
|
gokhlayeh@186
|
2364 '') echo "Package $PACKAGE has no WEB_SITE" >&2;;
|
gokhlayeh@186
|
2365 *) echo "Package $PACKAGE has an invalid WEB_SITE" >&2;;
|
pascal@112
|
2366 esac
|
pascal@78
|
2367 case "$MAINTAINER" in
|
gokhlayeh@186
|
2368 *\<*|*\>*) echo "Package $PACKAGE has an invalid MAINTAINER: $MAINTAINER" >&2;;
|
pascal@78
|
2369 esac
|
pascal@78
|
2370 case "$MAINTAINER" in
|
pascal@78
|
2371 *@*);;
|
gokhlayeh@186
|
2372 *) echo "Package $PACKAGE MAINTAINER is not an email address" >&2;;
|
pascal@78
|
2373 esac
|
gokhlayeh@186
|
2374 MSG="Missing dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@76
|
2375 for i in $DEPENDS; do
|
pascal@76
|
2376 [ -d $i ] && continue
|
pascal@111
|
2377 [ -n "$(whoprovide $i)" ] && continue
|
pascal@76
|
2378 echo -e "$MSG $i"
|
pascal@76
|
2379 MSG=""
|
pascal@76
|
2380 done
|
gokhlayeh@186
|
2381 MSG="Missing build dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@92
|
2382 for i in $BUILD_DEPENDS; do
|
pascal@92
|
2383 [ -d $i ] && continue
|
pascal@111
|
2384 [ -n "$(whoprovide $i)" ] && continue
|
pascal@92
|
2385 echo -e "$MSG $i"
|
pascal@92
|
2386 MSG=""
|
pascal@92
|
2387 done
|
pascal@76
|
2388 MSG="Dependencies loop between $PACKAGE and :\n"
|
pascal@76
|
2389 ALL_DEPS=""
|
pascal@76
|
2390 check_for_deps_loop $PACKAGE $DEPENDS
|
pascal@140
|
2391 [ -d $WOK/$pkg/taz ] && for i in $BUILD_DEPENDS; do
|
pascal@141
|
2392 [ $WOK/$pkg/taz -nt $INSTALLED/$i/files.list ] && continue
|
paul@154
|
2393 echo "$pkg should be rebuilt after $i installation"
|
pascal@140
|
2394 done
|
pascal@76
|
2395 done
|
gokhlayeh@186
|
2396 ;;
|
pankso@7
|
2397 list)
|
paul@166
|
2398 # List packages in wok directory. User can specify a category.
|
pankso@7
|
2399 #
|
gokhlayeh@186
|
2400 get_tazwok_config
|
pankso@7
|
2401 if [ "$2" = "category" ]; then
|
pankso@7
|
2402 echo -e "\033[1m\nPackages categories :\033[0m $CATEGORIES\n"
|
pankso@7
|
2403 exit 0
|
pankso@7
|
2404 fi
|
pankso@7
|
2405 # Check for an asked category.
|
pankso@7
|
2406 if [ -n "$2" ]; then
|
pankso@7
|
2407 ASKED_CATEGORY=$2
|
pankso@7
|
2408 echo ""
|
pankso@7
|
2409 echo -e "\033[1mPackages in category :\033[0m $ASKED_CATEGORY"
|
pankso@7
|
2410 echo "================================================================================"
|
pankso@7
|
2411 for pkg in $WOK/*
|
pankso@7
|
2412 do
|
erjo@168
|
2413 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2414 . $pkg/receipt
|
pankso@7
|
2415 if [ "$CATEGORY" == "$ASKED_CATEGORY" ]; then
|
pankso@7
|
2416 echo -n "$PACKAGE"
|
pankso@28
|
2417 echo -e "\033[28G $VERSION"
|
pankso@7
|
2418 packages=$(($packages+1))
|
pankso@7
|
2419 fi
|
pankso@7
|
2420 done
|
pankso@7
|
2421 echo "================================================================================"
|
gokhlayeh@236
|
2422 echo -e "$packages packages in category $ASKED_CATEGORY.\n"
|
pankso@7
|
2423 else
|
pankso@7
|
2424 # By default list all packages and version.
|
pankso@7
|
2425 echo ""
|
pankso@7
|
2426 echo -e "\033[1mList of packages in the wok\033[0m"
|
pankso@7
|
2427 echo "================================================================================"
|
pankso@7
|
2428 for pkg in $WOK/*
|
pankso@7
|
2429 do
|
erjo@168
|
2430 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2431 . $pkg/receipt
|
pankso@7
|
2432 echo -n "$PACKAGE"
|
pankso@28
|
2433 echo -en "\033[28G $VERSION"
|
pankso@7
|
2434 echo -e "\033[42G $CATEGORY"
|
pankso@7
|
2435 packages=$(($packages+1))
|
pankso@7
|
2436 done
|
pankso@7
|
2437 echo "================================================================================"
|
gokhlayeh@236
|
2438 echo -e "$packages packages available in the wok.\n"
|
pankso@7
|
2439 fi
|
pankso@7
|
2440 ;;
|
pankso@7
|
2441 info)
|
MikeDSmith25@82
|
2442 # Information about a package.
|
pankso@7
|
2443 #
|
gokhlayeh@186
|
2444 get_tazwok_config
|
pankso@7
|
2445 check_for_package_on_cmdline
|
pankso@7
|
2446 check_for_receipt
|
pankso@7
|
2447 . $WOK/$PACKAGE/receipt
|
pankso@7
|
2448 echo ""
|
MikeDSmith25@82
|
2449 echo -e "\033[1mTazwok package information\033[0m
|
pankso@7
|
2450 ================================================================================
|
pankso@7
|
2451 Package : $PACKAGE
|
pankso@7
|
2452 Version : $VERSION
|
pankso@7
|
2453 Category : $CATEGORY
|
pankso@7
|
2454 Short desc : $SHORT_DESC
|
pankso@7
|
2455 Maintainer : $MAINTAINER"
|
pankso@7
|
2456 if [ ! "$WEB_SITE" = "" ]; then
|
pankso@7
|
2457 echo "Web site : $WEB_SITE"
|
pankso@7
|
2458 fi
|
pankso@7
|
2459 if [ ! "$DEPENDS" = "" ]; then
|
pankso@7
|
2460 echo "Depends : $DEPENDS"
|
pankso@7
|
2461 fi
|
pankso@7
|
2462 if [ ! "$WANTED" = "" ]; then
|
pankso@7
|
2463 echo "Wanted src : $WANTED"
|
pankso@7
|
2464 fi
|
pankso@7
|
2465 echo "================================================================================"
|
pankso@7
|
2466 echo ""
|
gokhlayeh@186
|
2467 ;;
|
pankso@7
|
2468 check-log)
|
pankso@7
|
2469 # We just cat the file log to view process info.
|
pankso@7
|
2470 #
|
gokhlayeh@186
|
2471 get_tazwok_config
|
pankso@7
|
2472 if [ ! -f "$LOG" ]; then
|
gokhlayeh@186
|
2473 echo -e "\nNo process log found. The package is probably not cooked.\n" >&2
|
gokhlayeh@186
|
2474 exit 1
|
pankso@7
|
2475 else
|
pankso@7
|
2476 echo ""
|
pankso@7
|
2477 echo -e "\033[1mPackage process log for :\033[0m $PACKAGE"
|
pankso@7
|
2478 echo "================================================================================"
|
pankso@7
|
2479 cat $LOG
|
pankso@7
|
2480 echo "================================================================================"
|
pankso@7
|
2481 echo ""
|
gokhlayeh@237
|
2482 if [ -s "$WOK/$PACKAGE/warning.txt" ]; then
|
gokhlayeh@237
|
2483 echo -e "\033[1mCook warning(s) for :\033[0m $PACKAGE"
|
gokhlayeh@237
|
2484 echo "================================================================================"
|
gokhlayeh@237
|
2485 cat "$WOK/$PACKAGE/warning.txt"
|
gokhlayeh@237
|
2486 echo "================================================================================"
|
gokhlayeh@237
|
2487 echo ""
|
gokhlayeh@237
|
2488 fi
|
pankso@7
|
2489 fi
|
gokhlayeh@186
|
2490 ;;
|
pankso@7
|
2491 search)
|
pankso@7
|
2492 # Search for a package by pattern or name.
|
pankso@7
|
2493 #
|
gokhlayeh@186
|
2494 get_tazwok_config
|
pankso@7
|
2495 if [ -z "$2" ]; then
|
gokhlayeh@186
|
2496 echo -e "\nPlease specify a pattern or a package name to search." >&2
|
gokhlayeh@186
|
2497 echo -e "Example : 'tazwok search gcc'.\n" >&2
|
gokhlayeh@186
|
2498 exit 1
|
pankso@7
|
2499 fi
|
pankso@7
|
2500 echo ""
|
pankso@7
|
2501 echo -e "\033[1mSearch result for :\033[0m $2"
|
pankso@7
|
2502 echo "================================================================================"
|
gokhlayeh@195
|
2503 list=`ls -1 $WOK | fgrep $2`
|
pankso@7
|
2504 for pkg in $list
|
pankso@7
|
2505 do
|
pankso@7
|
2506 . $WOK/$pkg/receipt
|
pankso@7
|
2507 echo -n "$PACKAGE "
|
pankso@7
|
2508 echo -en "\033[24G $VERSION"
|
pankso@7
|
2509 echo -e "\033[42G $CATEGORY"
|
gokhlayeh@186
|
2510 packages=$(($PACKAGEs+1))
|
pankso@7
|
2511 done
|
pankso@7
|
2512 echo "================================================================================"
|
gokhlayeh@238
|
2513 echo "$packages packages found for : $2"
|
pankso@7
|
2514 echo ""
|
gokhlayeh@186
|
2515 ;;
|
pankso@7
|
2516 compile)
|
pankso@7
|
2517 # Configure and make a package with the receipt.
|
pankso@7
|
2518 #
|
gokhlayeh@186
|
2519 get_tazwok_config
|
gokhlayeh@186
|
2520 source_lib report
|
gokhlayeh@186
|
2521 report start
|
pankso@7
|
2522 compile_package
|
gokhlayeh@186
|
2523 ;;
|
pankso@7
|
2524 genpkg)
|
paul@121
|
2525 # Generate a package.
|
pankso@7
|
2526 #
|
gokhlayeh@186
|
2527 get_tazwok_config
|
gokhlayeh@186
|
2528 source_lib report
|
gokhlayeh@186
|
2529 report start
|
pankso@7
|
2530 gen_package
|
gokhlayeh@186
|
2531 ;;
|
pankso@7
|
2532 cook)
|
pankso@7
|
2533 # Compile and generate a package. Just execute tazwok with
|
pankso@7
|
2534 # the good commands.
|
pankso@7
|
2535 #
|
pankso@7
|
2536 check_root
|
gokhlayeh@186
|
2537 get_tazwok_config
|
gokhlayeh@186
|
2538 source_lib report
|
gokhlayeh@186
|
2539 report start
|
gokhlayeh@215
|
2540 update_wan_db
|
gokhlayeh@215
|
2541 check_for_commit
|
gokhlayeh@215
|
2542 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@215
|
2543 [ "$plan_sort_wandb" ] && sort -o $wan_db $wan_db && unset plan_sort_wandb
|
gokhlayeh@215
|
2544 if [ "$plan_regen_cookorder" ]; then
|
gokhlayeh@215
|
2545 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt || \
|
gokhlayeh@215
|
2546 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@215
|
2547 fi
|
gokhlayeh@186
|
2548 cook
|
gokhlayeh@186
|
2549 ;;
|
gokhlayeh@186
|
2550 sort-cooklist)
|
gokhlayeh@297
|
2551 if [ ! -f "$LIST" ]; then
|
gokhlayeh@297
|
2552 echo "Usage : tazwok sort-cooklist cooklist" >&2
|
gokhlayeh@186
|
2553 exit 1
|
gokhlayeh@186
|
2554 fi
|
gokhlayeh@297
|
2555 check_root
|
gokhlayeh@186
|
2556 get_tazwok_config
|
gokhlayeh@297
|
2557 report(){ : ; }
|
gokhlayeh@297
|
2558 # When using sort-cooklist, the script should behave as for gen-cooklist
|
gokhlayeh@297
|
2559 # The only difference between theses two is where the output is sended.
|
gokhlayeh@297
|
2560 COMMAND=gen-cooklist
|
gokhlayeh@186
|
2561 cooklist=$LIST
|
gokhlayeh@297
|
2562 gen_cook_list
|
gokhlayeh@300
|
2563 cp -af $tmp/cooklist $cooklist
|
gokhlayeh@186
|
2564 ;;
|
pankso@7
|
2565 cook-list)
|
gokhlayeh@204
|
2566 # Cook all packages listed in a file or in default cooklist.
|
gokhlayeh@186
|
2567 check_root
|
gokhlayeh@204
|
2568 get_options_list="pkg forced"
|
gokhlayeh@186
|
2569 get_tazwok_config
|
gokhlayeh@186
|
2570 source_lib report
|
gokhlayeh@186
|
2571 report start
|
gokhlayeh@204
|
2572 if ! [ "$pkg" ]; then
|
gokhlayeh@204
|
2573 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@186
|
2574 fi
|
gokhlayeh@204
|
2575 gen_cook_list
|
gokhlayeh@186
|
2576 cook_list
|
gokhlayeh@186
|
2577 ;;
|
gokhlayeh@186
|
2578 clean)
|
gokhlayeh@186
|
2579 # Clean up a package work directory + thoses which want it.
|
pankso@7
|
2580 #
|
gokhlayeh@186
|
2581 get_tazwok_config
|
pankso@7
|
2582 check_for_package_on_cmdline
|
pankso@7
|
2583 check_for_receipt
|
gokhlayeh@186
|
2584 source_lib report
|
gokhlayeh@186
|
2585 report start
|
pankso@7
|
2586 . $RECEIPT
|
gokhlayeh@186
|
2587 clean
|
gokhlayeh@186
|
2588 ;;
|
pankso@7
|
2589 gen-clean-wok)
|
paul@121
|
2590 # Generate a clean wok from the current wok by copying all receipts
|
pankso@7
|
2591 # and stuff directory.
|
pankso@7
|
2592 #
|
gokhlayeh@186
|
2593 get_tazwok_config
|
gokhlayeh@186
|
2594 source_lib report
|
gokhlayeh@186
|
2595 report start
|
gokhlayeh@186
|
2596 if [ -z "$ARG" ]; then
|
gokhlayeh@186
|
2597 echo -e "\nPlease specify the destination for the new clean wok.\n" >&2
|
gokhlayeh@186
|
2598 exit 1
|
pankso@7
|
2599 else
|
gokhlayeh@186
|
2600 dest=$ARG
|
pankso@7
|
2601 mkdir -p $dest
|
pankso@7
|
2602 fi
|
gokhlayeh@186
|
2603 report step "Creating clean wok in : $dest"
|
pankso@7
|
2604 for pkg in `ls -1 $WOK`
|
pankso@7
|
2605 do
|
pankso@7
|
2606 mkdir -p $dest/$pkg
|
pankso@7
|
2607 cp -a $WOK/$pkg/receipt $dest/$pkg
|
gokhlayeh@186
|
2608 [ -f $WOK/$pkg/description.txt ] && \
|
gokhlayeh@186
|
2609 cp -a $WOK/$pkg/description.txt $dest/$pkg
|
pankso@7
|
2610 if [ -d "$WOK/$pkg/stuff" ]; then
|
pankso@7
|
2611 cp -a $WOK/$pkg/stuff $dest/$pkg
|
pankso@7
|
2612 fi
|
pankso@7
|
2613 done
|
gokhlayeh@186
|
2614 [ -d $WOK/.hg ] && cp -a $WOK/.hg $dest
|
gokhlayeh@186
|
2615 report end-step
|
pankso@7
|
2616 echo "Packages cleaned : `ls -1 $dest | wc -l`"
|
pankso@7
|
2617 echo ""
|
gokhlayeh@186
|
2618 ;;
|
pankso@7
|
2619 clean-wok)
|
pankso@7
|
2620 # Clean all packages in the work directory
|
pankso@7
|
2621 #
|
gokhlayeh@186
|
2622 get_tazwok_config
|
gokhlayeh@186
|
2623 source_lib report
|
gokhlayeh@186
|
2624 report start
|
gokhlayeh@186
|
2625 report step "Cleaning wok"
|
gokhlayeh@186
|
2626 for PACKAGE in `ls -1 $WOK`
|
pankso@7
|
2627 do
|
gokhlayeh@186
|
2628 set_common_path
|
gokhlayeh@186
|
2629 source_receipt
|
gokhlayeh@186
|
2630 clean
|
pankso@7
|
2631 done
|
pankso@7
|
2632 echo "`ls -1 $WOK | wc -l` packages cleaned."
|
gokhlayeh@186
|
2633 ;;
|
gokhlayeh@266
|
2634 clean-src)
|
gokhlayeh@266
|
2635 # Remove tarball unrelated to wok receipts from src repo.
|
gokhlayeh@266
|
2636 check_root
|
gokhlayeh@266
|
2637 get_options_list="forced"
|
gokhlayeh@266
|
2638 get_tazwok_config
|
gokhlayeh@266
|
2639 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
2640 echo -n "Checking $SOURCES_REPOSITORY..."
|
gokhlayeh@266
|
2641 for TARBALL in *; do
|
gokhlayeh@266
|
2642 [ "$TARBALL" = sources.list ] && continue
|
gokhlayeh@266
|
2643 grep -q $'\t'$TARBALL$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2644 echo $TARBALL >> $tmp/obsolete
|
gokhlayeh@266
|
2645 done
|
gokhlayeh@266
|
2646 status
|
slaxemulator@273
|
2647 if ! [ -f $tmp/obsolete ]; then
|
slaxemulator@273
|
2648 echo "No sources need to be removed."
|
slaxemulator@273
|
2649 exit 1
|
slaxemulator@273
|
2650 fi
|
gokhlayeh@266
|
2651 echo ""
|
gokhlayeh@266
|
2652 echo -e "\033[1mObsolete/unrelated-to-wok sourcess :\033[0m"
|
gokhlayeh@266
|
2653 horizontal_line
|
gokhlayeh@266
|
2654 cat $tmp/obsolete
|
gokhlayeh@266
|
2655 horizontal_line
|
gokhlayeh@266
|
2656 echo "$(wc -l $tmp/obsolete | cut -f1 -d' ') tarballs to remove."
|
gokhlayeh@266
|
2657 echo ""
|
gokhlayeh@266
|
2658 echo -n "Please confirm removing (type uppercase YES): "
|
gokhlayeh@266
|
2659 read answer
|
gokhlayeh@266
|
2660 if [ "$answer" = YES ]; then
|
gokhlayeh@266
|
2661 echo -n "Removing old sources..."
|
gokhlayeh@266
|
2662 cat $tmp/obsolete | while read i; do
|
gokhlayeh@266
|
2663 rm -f $SOURCES_REPOSITORY/$i
|
gokhlayeh@266
|
2664 done
|
gokhlayeh@266
|
2665 status
|
gokhlayeh@266
|
2666 fi
|
gokhlayeh@266
|
2667 ;;
|
pankso@7
|
2668 gen-list)
|
gokhlayeh@186
|
2669 get_tazwok_config
|
gokhlayeh@204
|
2670 if [ "$2" ]; then
|
gokhlayeh@204
|
2671 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2672 pkg_repository=$2
|
gokhlayeh@204
|
2673 else
|
gokhlayeh@204
|
2674 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@204
|
2675 exit 1
|
gokhlayeh@204
|
2676 fi
|
gokhlayeh@204
|
2677 fi
|
gokhlayeh@204
|
2678
|
gokhlayeh@186
|
2679 source_lib report
|
gokhlayeh@186
|
2680 report start
|
gokhlayeh@204
|
2681 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2682 gen_packages_db
|
gokhlayeh@204
|
2683 else
|
gokhlayeh@204
|
2684 pkg_repository=$PACKAGES_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2685 pkg_repository=$INCOMING_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2686 fi
|
gokhlayeh@186
|
2687 ;;
|
gokhlayeh@186
|
2688 check-list)
|
gokhlayeh@186
|
2689 # The directory to move into by default is the repository,
|
gokhlayeh@186
|
2690 # if $2 is not empty cd into $2.
|
pankso@7
|
2691 #
|
gokhlayeh@186
|
2692 get_tazwok_config
|
gokhlayeh@204
|
2693 if [ "$2" ]; then
|
pankso@7
|
2694 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2695 pkg_repository=$2
|
pankso@7
|
2696 else
|
gokhlayeh@186
|
2697 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@186
|
2698 exit 1
|
pankso@7
|
2699 fi
|
pankso@7
|
2700 fi
|
gokhlayeh@186
|
2701
|
gokhlayeh@186
|
2702 source_lib report
|
gokhlayeh@204
|
2703 report start
|
gokhlayeh@204
|
2704 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2705 update_packages_db
|
gokhlayeh@204
|
2706 else
|
gokhlayeh@204
|
2707 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2708 pkg_repository=$INCOMING_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2709 fi
|
gokhlayeh@186
|
2710 ;;
|
pankso@7
|
2711 new-tree)
|
MikeDSmith25@82
|
2712 # Just create a few directories and generate an empty receipt to prepare
|
pankso@7
|
2713 # the creation of a new package.
|
pankso@7
|
2714 #
|
gokhlayeh@186
|
2715 get_tazwok_config
|
pankso@7
|
2716 check_for_package_on_cmdline
|
pankso@7
|
2717 if [ -d $WOK/$PACKAGE ]; then
|
gokhlayeh@186
|
2718 echo -e "\n$PACKAGE package tree already exists.\n" >&2
|
gokhlayeh@186
|
2719 exit 1
|
pankso@7
|
2720 fi
|
pankso@7
|
2721 echo "Creating : $WOK/$PACKAGE"
|
pankso@7
|
2722 mkdir $WOK/$PACKAGE
|
pankso@7
|
2723 cd $WOK/$PACKAGE
|
pankso@7
|
2724 echo -n "Preparing the receipt..."
|
pankso@7
|
2725 #
|
pankso@7
|
2726 # Default receipt begin.
|
pankso@7
|
2727 #
|
pankso@7
|
2728 echo "# SliTaz package receipt." > receipt
|
pankso@7
|
2729 echo "" >> receipt
|
pankso@7
|
2730 echo "PACKAGE=\"$PACKAGE\"" >> receipt
|
pankso@7
|
2731 # Finish the empty receipt.
|
pankso@7
|
2732 cat >> receipt << "EOF"
|
pankso@7
|
2733 VERSION=""
|
pankso@7
|
2734 CATEGORY=""
|
pankso@7
|
2735 SHORT_DESC=""
|
pankso@7
|
2736 MAINTAINER=""
|
pankso@7
|
2737 DEPENDS=""
|
pankso@7
|
2738 TARBALL="$PACKAGE-$VERSION.tar.gz"
|
pankso@7
|
2739 WEB_SITE=""
|
pankso@7
|
2740 WGET_URL=""
|
pankso@7
|
2741
|
pankso@7
|
2742 # Rules to configure and make the package.
|
pankso@7
|
2743 compile_rules()
|
pankso@7
|
2744 {
|
pankso@7
|
2745 cd $src
|
gokhlayeh@204
|
2746 ./configure && make && make install
|
pankso@7
|
2747 }
|
pankso@7
|
2748
|
pankso@7
|
2749 # Rules to gen a SliTaz package suitable for Tazpkg.
|
pankso@7
|
2750 genpkg_rules()
|
pankso@7
|
2751 {
|
pankso@7
|
2752 mkdir -p $fs/usr
|
pankso@7
|
2753 cp -a $_pkg/usr/bin $fs/usr
|
pankso@7
|
2754 }
|
pankso@7
|
2755
|
pankso@7
|
2756 EOF
|
pankso@7
|
2757 #
|
pankso@7
|
2758 # Default receipt end.
|
pankso@7
|
2759 #
|
pankso@7
|
2760 status
|
pankso@7
|
2761 # Interactive mode, asking and seding.
|
pankso@7
|
2762 if [ "$3" = "--interactive" ]; then
|
paul@154
|
2763 echo "Entering into interactive mode..."
|
pankso@7
|
2764 echo "================================================================================"
|
pankso@7
|
2765 echo "Package : $PACKAGE"
|
pankso@7
|
2766 # Version.
|
pankso@7
|
2767 echo -n "Version : " ; read anser
|
pankso@7
|
2768 sed -i s/'VERSION=\"\"'/"VERSION=\"$anser\""/ receipt
|
pankso@7
|
2769 # Category.
|
pankso@7
|
2770 echo -n "Category : " ; read anser
|
pankso@7
|
2771 sed -i s/'CATEGORY=\"\"'/"CATEGORY=\"$anser\""/ receipt
|
pankso@7
|
2772 # Short description.
|
pankso@7
|
2773 echo -n "Short desc : " ; read anser
|
pankso@7
|
2774 sed -i s/'SHORT_DESC=\"\"'/"SHORT_DESC=\"$anser\""/ receipt
|
pankso@7
|
2775 # Maintainer.
|
pankso@7
|
2776 echo -n "Maintainer : " ; read anser
|
pankso@7
|
2777 sed -i s/'MAINTAINER=\"\"'/"MAINTAINER=\"$anser\""/ receipt
|
pankso@7
|
2778 # Web site.
|
pankso@7
|
2779 echo -n "Web site : " ; read anser
|
pankso@133
|
2780 sed -i s#'WEB_SITE=\"\"'#"WEB_SITE=\"$anser\""# receipt
|
pankso@7
|
2781 echo ""
|
pankso@7
|
2782 # Wget URL.
|
pankso@7
|
2783 echo "Wget URL to download source tarball."
|
pankso@7
|
2784 echo "Example : \$GNU_MIRROR/\$PACKAGE/\$TARBALL"
|
pankso@7
|
2785 echo -n "Wget url : " ; read anser
|
pankso@7
|
2786 sed -i s#'WGET_URL=\"\"'#"WGET_URL=\"$anser\""# receipt
|
pankso@7
|
2787 # Ask for a stuff dir.
|
pankso@7
|
2788 echo -n "Do you need a stuff directory ? (y/N) : " ; read anser
|
pankso@7
|
2789 if [ "$anser" = "y" ]; then
|
pankso@7
|
2790 echo -n "Creating the stuff directory..."
|
pankso@7
|
2791 mkdir stuff && status
|
pankso@7
|
2792 fi
|
pankso@7
|
2793 # Ask for a description file.
|
pankso@7
|
2794 echo -n "Are you going to write a description ? (y/N) : " ; read anser
|
pankso@7
|
2795 if [ "$anser" = "y" ]; then
|
pankso@7
|
2796 echo -n "Creating the description.txt file..."
|
pankso@7
|
2797 echo "" > description.txt && status
|
pankso@7
|
2798 fi
|
pankso@7
|
2799 echo "================================================================================"
|
pankso@7
|
2800 echo ""
|
pankso@7
|
2801 fi
|
gokhlayeh@186
|
2802 ;;
|
pankso@7
|
2803 remove)
|
pankso@7
|
2804 # Remove a package from the wok.
|
pankso@7
|
2805 #
|
gokhlayeh@186
|
2806 get_tazwok_config
|
pankso@7
|
2807 check_for_package_on_cmdline
|
pankso@7
|
2808 echo ""
|
pascal@83
|
2809 echo -n "Please confirm deletion (y/N) : "; read anser
|
pascal@83
|
2810 if [ "$anser" = "y" ]; then
|
pascal@83
|
2811 echo -n "Removing $PACKAGE..."
|
pascal@83
|
2812 rm -rf $WOK/$PACKAGE && status
|
pascal@83
|
2813 echo ""
|
pascal@83
|
2814 fi
|
gokhlayeh@186
|
2815 ;;
|
pankso@106
|
2816 hgup)
|
paul@166
|
2817 # Pull and update a Hg wok.
|
gokhlayeh@186
|
2818 get_tazwok_config
|
gokhlayeh@195
|
2819 if ls -l $WOK/.hg/hgrc | fgrep -q "root"; then
|
pankso@106
|
2820 check_root
|
pankso@106
|
2821 fi
|
pankso@106
|
2822 cd $WOK
|
gokhlayeh@186
|
2823 hg pull && hg update
|
gokhlayeh@186
|
2824 ;;
|
pankso@108
|
2825 maintainers)
|
gokhlayeh@186
|
2826 get_tazwok_config
|
pankso@108
|
2827 echo ""
|
pankso@108
|
2828 echo "List of maintainers for: $WOK"
|
pankso@108
|
2829 echo "================================================================================"
|
pankso@108
|
2830 touch /tmp/slitaz-maintainers
|
pankso@108
|
2831 for pkg in $WOK/*
|
pankso@108
|
2832 do
|
pankso@108
|
2833 . $pkg/receipt
|
gokhlayeh@195
|
2834 if ! fgrep -q "$MAINTAINER" /tmp/slitaz-maintainers; then
|
pankso@108
|
2835 echo "$MAINTAINER" >> /tmp/slitaz-maintainers
|
pankso@108
|
2836 echo "$MAINTAINER"
|
pankso@108
|
2837 fi
|
pankso@108
|
2838 done
|
pankso@108
|
2839 echo "================================================================================"
|
pankso@108
|
2840 echo "Maintainers: `cat /tmp/slitaz-maintainers | wc -l`"
|
pankso@108
|
2841 echo ""
|
pankso@108
|
2842 # Remove tmp files
|
gokhlayeh@186
|
2843 rm -f /tmp/slitaz-maintainers
|
gokhlayeh@186
|
2844 ;;
|
pankso@107
|
2845 maintained-by)
|
paul@166
|
2846 # Search for packages maintained by a contributor.
|
gokhlayeh@186
|
2847 get_tazwok_config
|
pankso@107
|
2848 if [ ! -n "$2" ]; then
|
gokhlayeh@186
|
2849 echo "Specify a name or email of a maintainer." >&2
|
gokhlayeh@186
|
2850 exit 1
|
pankso@107
|
2851 fi
|
pankso@107
|
2852 echo "Maintainer packages"
|
pankso@107
|
2853 echo "================================================================================"
|
pankso@107
|
2854 for pkg in $WOK/*
|
pankso@107
|
2855 do
|
pankso@107
|
2856 . $pkg/receipt
|
gokhlayeh@195
|
2857 if echo "$MAINTAINER" | fgrep -q "$2"; then
|
pankso@107
|
2858 echo "$PACKAGE"
|
gokhlayeh@186
|
2859 packages=$(($PACKAGEs+1))
|
pankso@107
|
2860 fi
|
pankso@107
|
2861 done
|
pankso@107
|
2862 echo "================================================================================"
|
gokhlayeh@186
|
2863 echo "Packages maintained by $2: $PACKAGEs"
|
gokhlayeh@186
|
2864 echo ""
|
gokhlayeh@186
|
2865 ;;
|
gokhlayeh@268
|
2866 tags)
|
gokhlayeh@268
|
2867 get_tazwok_config
|
gokhlayeh@268
|
2868 echo -e "\n\033[1mTags list :\033[0m"
|
gokhlayeh@268
|
2869 horizontal_line
|
gokhlayeh@268
|
2870 cd $WOK
|
gokhlayeh@268
|
2871 for i in */receipt; do
|
gokhlayeh@268
|
2872 unset TAGS
|
gokhlayeh@268
|
2873 source $i
|
gokhlayeh@268
|
2874 for t in $TAGS; do
|
gokhlayeh@268
|
2875 grep -q ^$t$ $tmp/tags && continue
|
gokhlayeh@268
|
2876 echo $t | tee -a $tmp/tags
|
gokhlayeh@268
|
2877 done
|
gokhlayeh@268
|
2878 done
|
gokhlayeh@268
|
2879 horizontal_line
|
gokhlayeh@268
|
2880 echo "$(wc -l $tmp/tags | cut -f1 -d ' ') tags listed."
|
gokhlayeh@268
|
2881 ;;
|
erjo@159
|
2882 check-src)
|
erjo@159
|
2883 # Verify if upstream package is still available
|
erjo@159
|
2884 #
|
gokhlayeh@186
|
2885 get_tazwok_config
|
erjo@159
|
2886 check_for_package_on_cmdline
|
erjo@159
|
2887 check_for_receipt
|
gokhlayeh@186
|
2888 source_receipt
|
erjo@159
|
2889 check_src()
|
erjo@159
|
2890 {
|
erjo@159
|
2891 for url in $@; do
|
pascal@178
|
2892 busybox wget -s $url 2>/dev/null && break
|
erjo@159
|
2893 done
|
erjo@159
|
2894 }
|
gokhlayeh@186
|
2895 if [ "$WGET_URL" ];then
|
erjo@159
|
2896 echo -n "$PACKAGE : "
|
erjo@159
|
2897 check_src $WGET_URL
|
erjo@159
|
2898 status
|
erjo@159
|
2899 else
|
erjo@159
|
2900 echo "No tarball to check for $PACKAGE"
|
erjo@159
|
2901 fi
|
gokhlayeh@186
|
2902 ;;
|
gokhlayeh@186
|
2903 get-src)
|
gokhlayeh@186
|
2904 check_root
|
gokhlayeh@225
|
2905 get_options_list="target nounpack"
|
gokhlayeh@186
|
2906 get_tazwok_config
|
gokhlayeh@186
|
2907 check_for_package_on_cmdline
|
gokhlayeh@186
|
2908 check_for_receipt
|
gokhlayeh@186
|
2909 source_receipt
|
gokhlayeh@186
|
2910 if [ "$WGET_URL" ];then
|
gokhlayeh@186
|
2911 source_lib report
|
gokhlayeh@186
|
2912 report start
|
gokhlayeh@225
|
2913 check_for_tarball
|
gokhlayeh@186
|
2914 else
|
gokhlayeh@186
|
2915 echo "No tarball to download for $PACKAGE"
|
gokhlayeh@186
|
2916 fi
|
gokhlayeh@186
|
2917 ;;
|
gokhlayeh@204
|
2918 check-commit)
|
gokhlayeh@186
|
2919 check_root
|
gokhlayeh@204
|
2920 get_options_list="missing forced"
|
gokhlayeh@186
|
2921 get_tazwok_config
|
gokhlayeh@186
|
2922 source_lib report
|
gokhlayeh@186
|
2923 report start
|
gokhlayeh@204
|
2924 if [ "$forced" ]; then
|
gokhlayeh@204
|
2925 rm -f $WOK/*/md5
|
gokhlayeh@204
|
2926 unset forced
|
gokhlayeh@204
|
2927 fi
|
gokhlayeh@204
|
2928 if [ "$missing" ]; then
|
gokhlayeh@204
|
2929 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2930 else
|
gokhlayeh@204
|
2931 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2932 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2933 } | sort -u)"
|
gokhlayeh@204
|
2934 fi
|
gokhlayeh@204
|
2935 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
2936 gen_cook_list
|
gokhlayeh@186
|
2937 ;;
|
gokhlayeh@186
|
2938 cook-commit)
|
gokhlayeh@186
|
2939 check_root
|
gokhlayeh@204
|
2940 get_options_list="missing forced"
|
gokhlayeh@186
|
2941 get_tazwok_config
|
gokhlayeh@186
|
2942 source_lib report
|
gokhlayeh@186
|
2943 report start
|
gokhlayeh@204
|
2944 if [ "$forced" ]; then
|
gokhlayeh@204
|
2945 rm -f $WOK/*/md5
|
gokhlayeh@204
|
2946 unset forced
|
gokhlayeh@204
|
2947 fi
|
gokhlayeh@204
|
2948 if [ "$missing" ]; then
|
gokhlayeh@204
|
2949 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2950 else
|
gokhlayeh@204
|
2951 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2952 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2953 } | sort -u)"
|
gokhlayeh@204
|
2954 fi
|
gokhlayeh@204
|
2955 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
2956 gen_cook_list
|
gokhlayeh@186
|
2957 cook_list
|
gokhlayeh@186
|
2958 ;;
|
gokhlayeh@186
|
2959 cook-all)
|
gokhlayeh@186
|
2960 check_root
|
gokhlayeh@204
|
2961 get_options_list="forced missing"
|
gokhlayeh@186
|
2962 get_tazwok_config
|
gokhlayeh@186
|
2963 source_lib report
|
gokhlayeh@186
|
2964 report start
|
gokhlayeh@204
|
2965 if [ "$missing" ]; then
|
gokhlayeh@204
|
2966 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2967 else
|
gokhlayeh@204
|
2968 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2969 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2970 } | sort -u)"
|
gokhlayeh@204
|
2971 fi
|
gokhlayeh@204
|
2972 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@204
|
2973 gen_cook_list
|
gokhlayeh@186
|
2974 cook_list
|
gokhlayeh@186
|
2975 ;;
|
gokhlayeh@186
|
2976 gen-wok-db)
|
gokhlayeh@186
|
2977 check_root
|
gokhlayeh@186
|
2978 get_tazwok_config
|
gokhlayeh@186
|
2979 source_lib report
|
gokhlayeh@186
|
2980 report start
|
gokhlayeh@204
|
2981 gen_wok_db
|
gokhlayeh@186
|
2982 ;;
|
gokhlayeh@186
|
2983 report)
|
gokhlayeh@186
|
2984 get_tazwok_config
|
gokhlayeh@186
|
2985 cd $PACKAGES_REPOSITORY
|
gokhlayeh@239
|
2986 if [ "$2" ]; then
|
gokhlayeh@239
|
2987 case $2 in
|
gokhlayeh@239
|
2988 commit|cooklist|incoming|broken|blocked)
|
gokhlayeh@239
|
2989 show="$2"
|
gokhlayeh@239
|
2990 ;;
|
gokhlayeh@239
|
2991 *)
|
gokhlayeh@239
|
2992 echo "usage : tazwok report [commit|cooklist|incoming|broken|blocked]" >&2
|
gokhlayeh@239
|
2993 exit 1
|
gokhlayeh@239
|
2994 ;;
|
gokhlayeh@239
|
2995 esac
|
gokhlayeh@239
|
2996 else
|
gokhlayeh@239
|
2997 show="commit cooklist incoming broken blocked"
|
gokhlayeh@239
|
2998 fi
|
gokhlayeh@239
|
2999 for i in $show; do
|
gokhlayeh@186
|
3000 if [ -s $i ]; then
|
gokhlayeh@239
|
3001 echo ""
|
gokhlayeh@239
|
3002 echo -e "\033[1m$i\033[0m"
|
gokhlayeh@239
|
3003 echo "================================================================================"
|
gokhlayeh@239
|
3004 cat $i
|
gokhlayeh@239
|
3005 echo "================================================================================"
|
gokhlayeh@239
|
3006 echo ""
|
gokhlayeh@186
|
3007 fi
|
gokhlayeh@186
|
3008 done
|
gokhlayeh@186
|
3009 ;;
|
gokhlayeh@186
|
3010 check-incoming)
|
gokhlayeh@186
|
3011 check_root
|
gokhlayeh@214
|
3012 get_options_list="forced"
|
gokhlayeh@186
|
3013 get_tazwok_config
|
gokhlayeh@186
|
3014 source_lib report
|
gokhlayeh@186
|
3015 report start
|
gokhlayeh@186
|
3016 check_for_incoming
|
gokhlayeh@186
|
3017 ;;
|
gokhlayeh@190
|
3018 configure-chroot)
|
gokhlayeh@190
|
3019 check_root
|
gokhlayeh@190
|
3020 get_tazwok_config
|
gokhlayeh@190
|
3021 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@190
|
3022 cd $LOCAL_REPOSITORY
|
gokhlayeh@190
|
3023 configure_tazchroot
|
gokhlayeh@190
|
3024 else
|
gokhlayeh@190
|
3025 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@190
|
3026 exit 1
|
gokhlayeh@190
|
3027 fi
|
gokhlayeh@190
|
3028 ;;
|
gokhlayeh@186
|
3029 chroot)
|
gokhlayeh@186
|
3030 check_root
|
gokhlayeh@186
|
3031 get_tazwok_config
|
gokhlayeh@186
|
3032 # Merge this and the other chroot function ?.
|
gokhlayeh@186
|
3033 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3034 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3035 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3036 tazchroot
|
gokhlayeh@186
|
3037 else
|
gokhlayeh@186
|
3038 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3039 exit 1
|
gokhlayeh@186
|
3040 fi
|
gokhlayeh@186
|
3041 ;;
|
gokhlayeh@186
|
3042 cook-toolchain)
|
gokhlayeh@186
|
3043 check_root
|
gokhlayeh@186
|
3044 get_tazwok_config
|
gokhlayeh@186
|
3045 echo -n "" > $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
3046 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3047 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3048 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3049 tazchroot cook-toolchain
|
gokhlayeh@186
|
3050 # Buggy : chroot can be elsewhere.
|
gokhlayeh@186
|
3051 rm -r $LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
3052 # /!\ to be writed :
|
gokhlayeh@186
|
3053 # next rm chroot and plan cook-all by pushing all packages
|
gokhlayeh@186
|
3054 # in cooklist.
|
gokhlayeh@186
|
3055 else
|
gokhlayeh@186
|
3056 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3057 exit 1
|
gokhlayeh@186
|
3058 fi
|
gokhlayeh@186
|
3059 ;;
|
gokhlayeh@235
|
3060 webserver)
|
gokhlayeh@235
|
3061 check_root
|
gokhlayeh@235
|
3062 get_tazwok_config
|
gokhlayeh@235
|
3063 if [ "$ARG" = on ]; then
|
gokhlayeh@235
|
3064 if [ "$WEBSERVER" ] && [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3065 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3066 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3067 exit 1
|
gokhlayeh@235
|
3068 fi
|
gokhlayeh@235
|
3069 if ! [ -f $LOCAL_REPOSITORY/tazchroot.conf ]; then
|
gokhlayeh@235
|
3070 tazwok configure-chroot ${undigest:+--undigest=$undigest} --SLITAZ_VERSION=$SLITAZ_VERSION --SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@235
|
3071 fi
|
gokhlayeh@235
|
3072 for pkg in php lighttpd; do
|
gokhlayeh@235
|
3073 [ -d $INSTALLED/$pkg ] || missing="$missing $pkg"
|
gokhlayeh@235
|
3074 done
|
gokhlayeh@235
|
3075 if [ "$missing" ]; then
|
gokhlayeh@235
|
3076 echo "You need to install those packages to start webserver: $missing." >&2
|
gokhlayeh@235
|
3077 exit 1
|
gokhlayeh@235
|
3078 fi
|
gokhlayeh@235
|
3079 if [ ! -f "$LOCAL_REPOSITORY/tazwok.conf" ]; then
|
gokhlayeh@235
|
3080 echo "Copying /etc/slitaz/tazwok.conf to $LOCAL_REPOSITORY/tazwok.conf: webserver is configured repository-by-repository."
|
gokhlayeh@235
|
3081 cp /etc/slitaz/tazwok.conf $LOCAL_REPOSITORY
|
gokhlayeh@235
|
3082 fi
|
gokhlayeh@235
|
3083 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3084 echo -n "Where to store php pages (default: /var/www/vhosts/bb)? "
|
gokhlayeh@235
|
3085 read WEBSERVER
|
gokhlayeh@235
|
3086 [ "$WEBSERVER" ] || WEBSERVER="/var/www/vhosts/bb"
|
gokhlayeh@235
|
3087 fi
|
gokhlayeh@235
|
3088 if [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3089 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3090 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3091 exit 1
|
gokhlayeh@235
|
3092 fi
|
gokhlayeh@235
|
3093 mkdir -p $WEBSERVER
|
gokhlayeh@235
|
3094 echo "${undigest:-$SLITAZ_VERSION}" >> $WEBSERVER/repositories.list
|
gokhlayeh@267
|
3095 for file in index.php log.php download.php; do
|
gokhlayeh@235
|
3096 [ -f "$WEBSERVER/$file" ] || ln -s /usr/share/slitaz/web-bb/$file $WEBSERVER
|
gokhlayeh@235
|
3097 done
|
gokhlayeh@267
|
3098 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3099 ln -s $dir $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3100 done
|
gokhlayeh@235
|
3101 source $LOCAL_REPOSITORY/tazchroot.conf
|
gokhlayeh@235
|
3102 echo "<?php
|
gokhlayeh@235
|
3103
|
gokhlayeh@235
|
3104 // Web interface configuration
|
gokhlayeh@235
|
3105
|
gokhlayeh@235
|
3106 \$version=\"${undigest:-$SLITAZ_VERSION}\";
|
gokhlayeh@235
|
3107 \$chroot=\"$chroot_dir\";
|
gokhlayeh@235
|
3108 \$lockfile=\"\$chroot/proc/1\";
|
gokhlayeh@235
|
3109 \$db_dir=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3110 \$log_dir=\"$LOCAL_REPOSITORY/log\";
|
gokhlayeh@235
|
3111 \$packages=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3112 \$incoming=\"$INCOMING_REPOSITORY\";
|
gokhlayeh@251
|
3113 \$wok=\"$WOK\";
|
gokhlayeh@235
|
3114
|
gokhlayeh@235
|
3115 ?>" > $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@235
|
3116 [ -L "$WEBSERVER/web" ] || ln -s /usr/share/slitaz/web $WEBSERVER
|
gokhlayeh@235
|
3117 echo "WEBSERVER=\"$WEBSERVER\"" >> $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3118 if [ -L "$WEBSERVER/conf.php" ]; then
|
gokhlayeh@235
|
3119 echo "Do yo want to make ${undigest:-$SLITAZ_VERSION} the default page (y/N) ? "
|
gokhlayeh@235
|
3120 read answer
|
gokhlayeh@235
|
3121 if [ "$answer" = y ]; then
|
gokhlayeh@235
|
3122 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3123 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3124 fi
|
gokhlayeh@235
|
3125 else
|
gokhlayeh@235
|
3126 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3127 fi
|
gokhlayeh@235
|
3128 elif [ "$ARG" = off ]; then
|
gokhlayeh@235
|
3129 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3130 echo "No webserver running for ${undigest:-$SLITAZ_VERSION}" >&2
|
gokhlayeh@235
|
3131 exit 1
|
gokhlayeh@235
|
3132 fi
|
gokhlayeh@235
|
3133 sed '/^WEBSERVER/d' -i $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3134 sed "/^${undigest:-$SLITAZ_VERSION}$/d" -i $WEBSERVER/repositories.list
|
gokhlayeh@235
|
3135 rm $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@267
|
3136 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3137 rm $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3138 done
|
gokhlayeh@235
|
3139 if ! [ -s "$WEBSERVER/repositories.list" ]; then
|
gokhlayeh@235
|
3140 echo "$WEBSERVER/repositories.list is empty; tazwok doesn't remove the server automatically in case you have important stuff in it. If it's not the case, you can remove it using: rm -r $WEBSERVER"
|
gokhlayeh@235
|
3141 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3142 elif [ "$(readlink $WEBSERVER/conf.php)" = "$WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php" ]; then
|
gokhlayeh@235
|
3143 echo "${undigest:-$SLITAZ_VERSION} was the default version to use; switched to : $(sed 1!d $WEBSERVER/repositories.list)"
|
gokhlayeh@235
|
3144 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3145 ln -s $WEBSERVER/conf-$(sed 1!d $WEBSERVER/repositories.list).php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3146 fi
|
gokhlayeh@235
|
3147 else
|
gokhlayeh@235
|
3148 echo "Usage: tazwok webserver on/off" >&2
|
gokhlayeh@235
|
3149 exit 1
|
gokhlayeh@235
|
3150 fi
|
gokhlayeh@235
|
3151 ;;
|
pankso@7
|
3152 usage|*)
|
MikeDSmith25@82
|
3153 # Print usage also for all unknown commands.
|
pankso@7
|
3154 #
|
pankso@7
|
3155 usage
|
gokhlayeh@186
|
3156 ;;
|
pankso@7
|
3157 esac
|
pankso@7
|
3158
|
gokhlayeh@186
|
3159 report stop 2>/dev/null || exit 0
|