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