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