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