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