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