rev |
line source |
pankso@7
|
1 #!/bin/sh
|
pankso@7
|
2 # Tazwok - SliTaz source compiler and binary packages generator/cooker.
|
pankso@7
|
3 #
|
MikeDSmith25@82
|
4 # Tazwok can compile source packages and create binary packages suitable for
|
MikeDSmith25@82
|
5 # Tazpkg (Tiny Autonomous zone package manager). You can build individual
|
MikeDSmith25@82
|
6 # packages or a list of packages with one command, rebuild the full distro,
|
pankso@7
|
7 # generate a packages repository and also list and get info about packages.
|
pankso@7
|
8 #
|
pankso@106
|
9 # (C) 2007-2009 SliTaz - GNU General Public License.
|
pankso@7
|
10 #
|
pankso@7
|
11
|
gokhlayeh@186
|
12 VERSION=3.9.0
|
gokhlayeh@186
|
13 . /usr/lib/slitaz/libtaz
|
gokhlayeh@186
|
14 source_lib commons
|
pankso@7
|
15
|
gokhlayeh@186
|
16 # Use text instead of numbers, don't get $2 here if it's an option.
|
gokhlayeh@186
|
17 [ "$2" = "${2#--}" ] && PACKAGE=$2 && LIST=$2 && ARG=$2
|
gokhlayeh@186
|
18 COMMAND=$1
|
pankso@7
|
19
|
gokhlayeh@186
|
20 ########################################################################
|
gokhlayeh@186
|
21 # TAZWOK USAGE
|
gokhlayeh@186
|
22 ########################
|
gokhlayeh@186
|
23 # Print the usage (English).
|
pankso@7
|
24
|
gokhlayeh@237
|
25 usage()
|
pankso@7
|
26 {
|
pankso@7
|
27 echo -e "\nSliTaz sources compiler and packages generator - Version: $VERSION\n
|
pankso@107
|
28 \033[1mUsage: \033[0m `basename $0` [command] [package|list|category|dir|id] [--option]
|
pankso@7
|
29 \033[1mCommands: \033[0m\n
|
pankso@7
|
30 usage Print this short usage.
|
pankso@7
|
31 stats Print Tazwok statistics from the config file and the wok.
|
pankso@133
|
32 edit Edit a package receipt in the current wok.
|
paul@121
|
33 build-depends Generate a list of packages to build a wok.
|
pankso@7
|
34 list List all packages in the wok tree or by category.
|
MikeDSmith25@82
|
35 info Get information about a package in the wok.
|
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
|
pankso@7
|
287 fi
|
pankso@7
|
288 }
|
pankso@7
|
289
|
pankso@40
|
290 # Check for build dependencies, notify user and install if specified.
|
pankso@18
|
291 check_for_build_depends()
|
pankso@18
|
292 {
|
gokhlayeh@204
|
293 [ "$WANTED" ] && return
|
gokhlayeh@213
|
294 [ "$CATEGORY" = meta ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@272
|
295 [ ! "$BUILD_DEPENDS" ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@186
|
296 report step "Looking for build dependencies"
|
gokhlayeh@186
|
297
|
gokhlayeh@186
|
298 # Keep the list of previously installed build_depends then compare
|
gokhlayeh@186
|
299 # it with new build_depends to know what to install and what to
|
gokhlayeh@186
|
300 # what to remove.
|
gokhlayeh@186
|
301 plan_remove=" $MISSING_PACKAGE $remove_later "
|
gokhlayeh@186
|
302 [ ! "${plan_remove// }" ] && unset plan_remove
|
gokhlayeh@186
|
303 unset MISSING_PACKAGE remove_later
|
gokhlayeh@186
|
304 rwanted=$(look_for_rwanted)
|
gokhlayeh@186
|
305
|
gokhlayeh@215
|
306 for pkg in $(scan $PACKAGE --look_for=bdep --with_dev | \
|
gokhlayeh@204
|
307 fgrep -v $(for i in $(look_for_rwanted) $PACKAGE; do echo " -e $i"; done))
|
pankso@18
|
308 do
|
gokhlayeh@186
|
309
|
gokhlayeh@186
|
310 # Delay the removing of previous cook depends if they are needed
|
gokhlayeh@186
|
311 # for next cook too.
|
gokhlayeh@186
|
312 if [ ! -d "$INSTALLED/$pkg" ] ; then
|
gokhlayeh@186
|
313 MISSING_PACKAGE="$MISSING_PACKAGE $pkg"
|
gokhlayeh@186
|
314 fi
|
gokhlayeh@186
|
315 if [ "$plan_remove" != "${plan_remove/ $pkg }" ]; then
|
gokhlayeh@186
|
316 plan_remove="${plan_remove/ $pkg / }"
|
gokhlayeh@186
|
317 remove_later="$remove_later $pkg"
|
gokhlayeh@186
|
318 fi
|
gokhlayeh@186
|
319 if grep -q ^$pkg$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
320 broken="$broken$pkg "
|
pankso@18
|
321 fi
|
pankso@18
|
322 done
|
gokhlayeh@186
|
323
|
gokhlayeh@186
|
324 # Don't cook if a depend is broken.
|
gokhlayeh@186
|
325 if [ "$broken" ]; then
|
gokhlayeh@186
|
326 MISSING_PACKAGE=$plan_remove
|
gokhlayeh@186
|
327 echo "Can't cook $PACKAGE because broken depend(s) : $broken" >&2
|
gokhlayeh@186
|
328 unset plan_remove broken
|
gokhlayeh@186
|
329
|
gokhlayeh@186
|
330 # Set report step to failed.
|
gokhlayeh@186
|
331 report_return_code=1
|
gokhlayeh@186
|
332 report end-step
|
gokhlayeh@186
|
333 return 1
|
gokhlayeh@186
|
334 fi
|
gokhlayeh@186
|
335 if [ "$MISSING_PACKAGE" ]; then
|
gokhlayeh@186
|
336 install_missing()
|
gokhlayeh@186
|
337 {
|
gokhlayeh@186
|
338 echo "Installing missing packages : $MISSING_PACKAGE"
|
gokhlayeh@186
|
339 for pkg in $MISSING_PACKAGE; do
|
gokhlayeh@186
|
340 [ -d "$INSTALLED/$pkg" ] || tazpkg get-install $pkg
|
gokhlayeh@186
|
341 done
|
gokhlayeh@186
|
342 }
|
gokhlayeh@186
|
343 if [ "$auto_install" = yes ]; then
|
gokhlayeh@186
|
344 install_missing
|
gokhlayeh@186
|
345 else
|
gokhlayeh@186
|
346 echo "================================================================================"
|
gokhlayeh@186
|
347 for pkg in $MISSING_PACKAGE
|
gokhlayeh@186
|
348 do
|
pankso@18
|
349 echo "Missing : $pkg"
|
gokhlayeh@186
|
350 done
|
gokhlayeh@186
|
351 echo "================================================================================"
|
gokhlayeh@186
|
352 echo "You can continue, exit or install missing dependencies."
|
gokhlayeh@186
|
353 echo -n "Install, continue or exit (install/y/N) ? "; read answer
|
gokhlayeh@186
|
354 case $answer in
|
gokhlayeh@186
|
355 install)
|
gokhlayeh@186
|
356 install_missing ;;
|
gokhlayeh@186
|
357 y|yes)
|
gokhlayeh@186
|
358 unset MISSING_PACKAGE;;
|
gokhlayeh@186
|
359 *)
|
gokhlayeh@186
|
360 report stop
|
gokhlayeh@186
|
361 exit 0 ;;
|
gokhlayeh@186
|
362 esac
|
gokhlayeh@186
|
363 fi
|
gokhlayeh@186
|
364 fi
|
gokhlayeh@186
|
365 report end-step
|
gokhlayeh@186
|
366 remove_build_depends $plan_remove
|
gokhlayeh@186
|
367 unset plan_remove
|
gokhlayeh@186
|
368 }
|
gokhlayeh@186
|
369
|
gokhlayeh@186
|
370 remove_build_depends()
|
gokhlayeh@186
|
371 {
|
gokhlayeh@186
|
372 [ "$1" ] || return
|
gokhlayeh@186
|
373 report step "Removing previous build dependencies"
|
gokhlayeh@186
|
374 echo "Removing theses packages : $@"
|
gokhlayeh@186
|
375 for pkg in $@; do
|
gokhlayeh@223
|
376 [ -d "$INSTALLED/$pkg" ] && tazpkg remove $pkg --auto
|
gokhlayeh@186
|
377 done
|
gokhlayeh@186
|
378 report end-step
|
gokhlayeh@186
|
379 }
|
gokhlayeh@186
|
380
|
gokhlayeh@186
|
381 # Check if we can use the new way to handle tarball
|
gokhlayeh@186
|
382 # or if we keep the previous method by check for
|
gokhlayeh@186
|
383 # _pkg=/src= in receipt and reverse-wanted.
|
gokhlayeh@186
|
384 check_for_var_modification()
|
gokhlayeh@186
|
385 {
|
gokhlayeh@186
|
386 for var in $@; do
|
gokhlayeh@186
|
387 for pkg in $PACKAGE $(look_for_wanted) $(look_for_rwanted); do
|
gokhlayeh@186
|
388 [ -f $WOK/$pkg/receipt ] || continue
|
gokhlayeh@195
|
389 fgrep -q "$var=" $WOK/$pkg/receipt && return 1
|
pankso@18
|
390 done
|
gokhlayeh@186
|
391 done
|
gokhlayeh@186
|
392
|
gokhlayeh@186
|
393 # Tweak to make if; then...; fi function working with this one.
|
gokhlayeh@186
|
394 echo -n ""
|
gokhlayeh@186
|
395 }
|
gokhlayeh@186
|
396
|
gokhlayeh@186
|
397 set_src_path()
|
gokhlayeh@186
|
398 {
|
gokhlayeh@186
|
399 if check_for_var_modification src _pkg; then
|
gokhlayeh@186
|
400 src=$WOK/${WANTED:-$PACKAGE}/${WANTED:-$PACKAGE}-$VERSION
|
gokhlayeh@186
|
401 else
|
gokhlayeh@266
|
402 tazwok_warning "Use original name or tarball root directory because src/_pkg are defined into the receipt (this is no more needed!)."
|
gokhlayeh@186
|
403 src=$WOK/${WANTED:-$PACKAGE}/${SOURCE:-${WANTED:-$PACKAGE}}-$VERSION
|
pankso@18
|
404 fi
|
gokhlayeh@298
|
405 stuff=$WOK/$PACKAGE/stuff
|
gokhlayeh@298
|
406 [ "$WANTED" ] && wanted_stuff=$WOK/$WANTED/stuff
|
pankso@18
|
407 }
|
pascal@76
|
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
|
gokhlayeh@186
|
414 _pkg=$src/_pkg
|
gokhlayeh@186
|
415 fi
|
gokhlayeh@186
|
416 }
|
gokhlayeh@186
|
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 }
|
gokhlayeh@186
|
424
|
gokhlayeh@186
|
425 remove_previous_package()
|
gokhlayeh@186
|
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"
|
slaxemulator@232
|
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."
|
slaxemulator@232
|
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
|
gokhlayeh@186
|
624 fi
|
gokhlayeh@186
|
625 }
|
gokhlayeh@186
|
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
|
gokhlayeh@278
|
668 fi
|
gokhlayeh@278
|
669 fi
|
erjo@53
|
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
|
erjo@53
|
752 done
|
erjo@53
|
753 }
|
pankso@18
|
754
|
gokhlayeh@186
|
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
|
gokhlayeh@186
|
850 }
|
gokhlayeh@186
|
851
|
gokhlayeh@186
|
852 # Remove .pyc and .pyo files from packages
|
gokhlayeh@186
|
853 py_compiled_files_remove()
|
gokhlayeh@186
|
854 {
|
gokhlayeh@186
|
855 report step "Removing all .pyc and .pyo files from package ..."
|
gokhlayeh@186
|
856 find $fs -type f -name "*.pyc" -delete 2>/dev/null
|
gokhlayeh@186
|
857 find $fs -type f -name "*.pyo" -delete 2>/dev/null
|
gokhlayeh@186
|
858 report end-step
|
pankso@25
|
859 }
|
pankso@25
|
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
|
gokhlayeh@186
|
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@186
|
1155 fi
|
gokhlayeh@186
|
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@186
|
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
|
gokhlayeh@170
|
1193 fi
|
gokhlayeh@170
|
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 }
|
gokhlayeh@186
|
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
|
gokhlayeh@215
|
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
|
gokhlayeh@204
|
1352 }
|
gokhlayeh@204
|
1353
|
gokhlayeh@204
|
1354 gen_wan_db()
|
gokhlayeh@204
|
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
|
gokhlayeh@204
|
1368 }
|
gokhlayeh@204
|
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
|
pankso@28
|
1395 }
|
pankso@28
|
1396
|
gokhlayeh@186
|
1397 sort_db()
|
pascal@91
|
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@91
|
1448 }
|
pascal@91
|
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
|
gokhlayeh@186
|
2052 report step "Cooking $PACKAGE"
|
gokhlayeh@186
|
2053 report open-bloc
|
gokhlayeh@186
|
2054
|
gokhlayeh@186
|
2055 clean $PACKAGE
|
gokhlayeh@186
|
2056 [ -s $tmp/cooklist ] && sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@186
|
2057
|
gokhlayeh@186
|
2058 if compile_package; then
|
gokhlayeh@215
|
2059 remove_src
|
gokhlayeh@186
|
2060 refresh_packages_from_compile
|
gokhlayeh@186
|
2061 gen_package
|
gokhlayeh@186
|
2062
|
gokhlayeh@186
|
2063 # Update packages-incoming repository.
|
gokhlayeh@186
|
2064 store_pkgname=$PACKAGE
|
gokhlayeh@186
|
2065 pkg_repository=$INCOMING_REPOSITORY
|
gokhlayeh@186
|
2066 update_packages_db
|
gokhlayeh@186
|
2067
|
gokhlayeh@186
|
2068 PACKAGE=$store_pkgname
|
gokhlayeh@186
|
2069 unset store_pkgname
|
gokhlayeh@186
|
2070
|
gokhlayeh@186
|
2071 # Upgrade to cooked packages if it was previously installed.
|
gokhlayeh@186
|
2072 report step "Look for package(s) to upgrade"
|
gokhlayeh@186
|
2073 for pkg in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@186
|
2074 if [ -d $INSTALLED/$pkg ]; then
|
gokhlayeh@186
|
2075 tazpkg get-install $pkg --forced
|
gokhlayeh@186
|
2076 fi
|
gokhlayeh@186
|
2077 done
|
gokhlayeh@186
|
2078 report end-step
|
gokhlayeh@186
|
2079 else
|
gokhlayeh@186
|
2080
|
gokhlayeh@186
|
2081 # Set package as broken.
|
gokhlayeh@186
|
2082 if ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
2083 echo $PACKAGE >> $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
2084 fi
|
gokhlayeh@186
|
2085 gen_cookmd5
|
gokhlayeh@186
|
2086 cook_code=1
|
gokhlayeh@186
|
2087 fi
|
gokhlayeh@186
|
2088
|
gokhlayeh@186
|
2089 # Remove build_depends in cook mode (if in cooklist, it's done when
|
gokhlayeh@186
|
2090 # checking build_depends of next package and we remove only unneeded
|
gokhlayeh@186
|
2091 # packages to keep chroot minimal and gain some time).
|
gokhlayeh@210
|
2092 if [ "$COMMAND" = cook ]; then
|
gokhlayeh@210
|
2093 remove_build_depends $MISSING_PACKAGE
|
gokhlayeh@210
|
2094 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@210
|
2095 fi
|
gokhlayeh@210
|
2096
|
gokhlayeh@186
|
2097 # Regen the cooklist if it was planned and command is not cook.
|
gokhlayeh@186
|
2098 [ "$regen_cooklist" ] && unset regen_cooklist && \
|
gokhlayeh@186
|
2099 [ "$COMMAND" != cook ] && sort_cooklist
|
gokhlayeh@186
|
2100
|
gokhlayeh@186
|
2101 # Some hacks to set the bloc & function status as failed if cook was
|
gokhlayeh@186
|
2102 # failed.
|
gokhlayeh@186
|
2103 report_return_code=$cook_code
|
gokhlayeh@186
|
2104 report close-bloc
|
gokhlayeh@186
|
2105 report end-sublog
|
gokhlayeh@186
|
2106 return $cook_code
|
gokhlayeh@186
|
2107 }
|
gokhlayeh@186
|
2108
|
gokhlayeh@186
|
2109 cook_list()
|
gokhlayeh@186
|
2110 {
|
gokhlayeh@204
|
2111 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
2112 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@204
|
2113 # Note : options -main variables- are automatically keeped by
|
gokhlayeh@204
|
2114 # the sub-applications tazchroot/tazwok; as well as report data.
|
gokhlayeh@204
|
2115 cd $LOCAL_REPOSITORY
|
gokhlayeh@204
|
2116 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@204
|
2117 tazchroot tazwok cook-list --SLITAZ_DIR=$SLITAZ_DIR --SLITAZ_VERSION=$SLITAZ_VERSION ${undigest:+ --undigest=$undigest}
|
gokhlayeh@204
|
2118 return
|
gokhlayeh@204
|
2119 fi
|
gokhlayeh@204
|
2120 while [ -s $tmp/cooklist ]; do
|
gokhlayeh@204
|
2121 PACKAGE=$(sed 1!d $tmp/cooklist)
|
gokhlayeh@204
|
2122 cook
|
gokhlayeh@204
|
2123 done
|
gokhlayeh@204
|
2124 remove_build_depends $MISSING_PACKAGE $remove_later
|
gokhlayeh@210
|
2125 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@204
|
2126 else
|
gokhlayeh@186
|
2127 echo "Nothing to cook."
|
gokhlayeh@186
|
2128 return
|
gokhlayeh@186
|
2129 fi
|
gokhlayeh@186
|
2130 }
|
gokhlayeh@186
|
2131
|
gokhlayeh@186
|
2132 configure_tazchroot()
|
gokhlayeh@186
|
2133 {
|
gokhlayeh@190
|
2134 cat > $LOCAL_REPOSITORY/tazchroot.conf << EOF
|
gokhlayeh@186
|
2135 # Tazchroot configuration file - created by tazwok.
|
gokhlayeh@186
|
2136
|
gokhlayeh@186
|
2137 # Default chroot path
|
gokhlayeh@186
|
2138 SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@186
|
2139 SLITAZ_VERSION=$SLITAZ_VERSION
|
gokhlayeh@186
|
2140 $( [ "$undigest" ] && echo "undigest=$undigest" )
|
gokhlayeh@186
|
2141 LOCAL_REPOSITORY=$SLITAZ_DIR/$(if [ "$undigest" ]; then echo '$undigest'; else echo '$SLITAZ_VERSION'; fi)
|
gokhlayeh@186
|
2142 chroot_dir=\$LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
2143
|
gokhlayeh@186
|
2144 # Default scripts path (theses scripts are added in the
|
gokhlayeh@186
|
2145 # $chroot_dir/usr/bin and can be called with tazchroot script)
|
gokhlayeh@314
|
2146 script_dir=/usr/lib/slitaz/chroot-scripts/tazwok
|
gokhlayeh@186
|
2147
|
gokhlayeh@186
|
2148 # List of directories to mount.
|
gokhlayeh@318
|
2149 list_dir="$(for dir in packages wok src packages-incoming log flavors iso clean-wok; do echo $LOCAL_REPOSITORY/$dir; done)
|
gokhlayeh@186
|
2150 $SLITAZ_LOG$( [ "$undigest" ] && echo -e "\n$SLITAZ_DIR/$SLITAZ_VERSION/packages" )"
|
gokhlayeh@186
|
2151
|
gokhlayeh@186
|
2152 create_chroot()
|
gokhlayeh@186
|
2153 {
|
gokhlayeh@186
|
2154 mkdir -p \$chroot_dir
|
gokhlayeh@186
|
2155 for pkg in \$(tazwok build-depends toolchain --SLITAZ_DIR=\$SLITAZ_DIR --SLITAZ_VERSION=\$SLITAZ_VERSION${undigest:+ --undigest=\$undigest}); do
|
gokhlayeh@186
|
2156 tazpkg get-install \$pkg --root="\$chroot_dir"
|
gokhlayeh@186
|
2157 done
|
gokhlayeh@186
|
2158
|
gokhlayeh@186
|
2159 # Store list of installed packages needed by cleanchroot.
|
gokhlayeh@194
|
2160 ls -1 \$chroot_dir/\$INSTALLED > \$chroot_dir/\$LOCALSTATE/chroot-pkgs
|
gokhlayeh@186
|
2161
|
gokhlayeh@186
|
2162 sed -e "s~^SLITAZ_DIR=.*~SLITAZ_DIR=\$SLITAZ_DIR~" \\
|
gokhlayeh@186
|
2163 -e "s/^SLITAZ_VERSION=.*/SLITAZ_VERSION=\$SLITAZ_VERSION/" \\
|
gokhlayeh@186
|
2164 -i \$chroot_dir/etc/slitaz/slitaz.conf
|
gokhlayeh@186
|
2165 $( [ "$undigest" ] && echo ' echo "undigest='"$undigest"'" >> $chroot_dir/etc/slitaz/tazwok.conf')
|
gokhlayeh@186
|
2166 sed 's/LC_ALL/LC_ALL=POSIX/' -i \$chroot_dir/etc/profile
|
gokhlayeh@186
|
2167 }
|
gokhlayeh@186
|
2168
|
gokhlayeh@186
|
2169 mount_chroot()
|
gokhlayeh@186
|
2170 {
|
gokhlayeh@186
|
2171 cp -a /etc/resolv.conf \$chroot_dir/etc/resolv.conf
|
gokhlayeh@194
|
2172 echo "\$LOCAL_REPOSITORY/packages" > \$chroot_dir\$LOCALSTATE/mirror
|
gokhlayeh@194
|
2173 mkdir -p \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming
|
gokhlayeh@194
|
2174 echo "\$LOCAL_REPOSITORY/packages-incoming" > \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming/mirror
|
gokhlayeh@194
|
2175 $( [ "$undigest" ] && echo ' mkdir -p $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION
|
gokhlayeh@194
|
2176 echo "$SLITAZ_DIR/$SLITAZ_VERSION/packages" > $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION/mirror' )
|
gokhlayeh@194
|
2177 echo -e "\${LOCAL_REPOSITORY##*/}-incoming\nmain" > \$chroot_dir\$LOCALSTATE/priority
|
gokhlayeh@186
|
2178 mount -t proc proc \$chroot_dir/proc
|
gokhlayeh@186
|
2179 mount -t sysfs sysfs \$chroot_dir/sys
|
gokhlayeh@186
|
2180 mount -t devpts devpts \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2181 mount -t tmpfs shm \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2182 for dir in \$list_dir; do
|
gokhlayeh@186
|
2183 mkdir -p \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2184 mount \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2185 done
|
gokhlayeh@186
|
2186 }
|
gokhlayeh@186
|
2187
|
gokhlayeh@186
|
2188 umount_chroot()
|
gokhlayeh@186
|
2189 {
|
gokhlayeh@186
|
2190 for dir in \$list_dir; do
|
gokhlayeh@186
|
2191 umount \$chroot_dir\$dir
|
gokhlayeh@186
|
2192 done
|
gokhlayeh@186
|
2193 umount \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2194 umount \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2195 umount \$chroot_dir/sys
|
gokhlayeh@186
|
2196 umount \$chroot_dir/proc
|
gokhlayeh@186
|
2197 }
|
gokhlayeh@186
|
2198 EOF
|
gokhlayeh@186
|
2199 }
|
gokhlayeh@186
|
2200
|
gokhlayeh@186
|
2201 ########################################################################
|
gokhlayeh@186
|
2202 ######################### END OF NEW FUNCTIONS #########################
|
gokhlayeh@186
|
2203 ########################################################################
|
gokhlayeh@186
|
2204
|
pascal@111
|
2205 # List packages providing a virtual package
|
pascal@111
|
2206 whoprovide()
|
pascal@111
|
2207 {
|
pascal@111
|
2208 local i;
|
gokhlayeh@195
|
2209 for i in $(fgrep -l PROVIDE $WOK/*/receipt); do
|
pascal@111
|
2210 . $i
|
pascal@111
|
2211 case " $PROVIDE " in
|
pascal@111
|
2212 *\ $1\ *|*\ $1:*) echo $(basename $(dirname $i));;
|
pascal@111
|
2213 esac
|
pascal@111
|
2214 done
|
pascal@111
|
2215 }
|
pascal@111
|
2216
|
gokhlayeh@186
|
2217 ########################################################################
|
gokhlayeh@186
|
2218 # TAZWOK COMMANDS
|
gokhlayeh@186
|
2219 ########################
|
pankso@7
|
2220
|
pankso@7
|
2221 case "$COMMAND" in
|
pankso@7
|
2222 stats)
|
paul@166
|
2223 # Tazwok general statistics from the wok config file.
|
pankso@7
|
2224 #
|
gokhlayeh@186
|
2225 get_tazwok_config
|
gokhlayeh@186
|
2226 echo -e "\n\033[1mTazwok configuration statistics\033[0m
|
pankso@7
|
2227 ================================================================================
|
pankso@7
|
2228 Wok directory : $WOK
|
pankso@7
|
2229 Packages repository : $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
2230 Incoming repository : $INCOMING_REPOSITORY
|
pankso@7
|
2231 Sources repository : $SOURCES_REPOSITORY
|
gokhlayeh@186
|
2232 Log directory : $LOCAL_REPOSITORY/log
|
pankso@7
|
2233 Packages in the wok : `ls -1 $WOK | wc -l`
|
pankso@16
|
2234 Cooked packages : `ls -1 $PACKAGES_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2235 Incoming packages : `ls -1 $INCOMING_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2236 ================================================================================\n"
|
gokhlayeh@186
|
2237 ;;
|
pankso@133
|
2238 edit)
|
gokhlayeh@186
|
2239 get_tazwok_config
|
pankso@133
|
2240 check_for_package_on_cmdline
|
pankso@133
|
2241 check_for_receipt
|
gokhlayeh@186
|
2242 $EDITOR $WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
2243 ;;
|
pascal@98
|
2244 build-depends)
|
gokhlayeh@186
|
2245 # List dependencies to rebuild wok, or only a package
|
gokhlayeh@186
|
2246 get_tazwok_config
|
gokhlayeh@215
|
2247 report(){ : ; }
|
gokhlayeh@242
|
2248 if [ ! "$PACKAGE" ] || [ "$PACKAGE" = toolchain ]; then
|
gokhlayeh@186
|
2249 scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
2250 --look_for=dep --with_dev --with_args
|
gokhlayeh@186
|
2251 else
|
gokhlayeh@186
|
2252 check_for_package_on_cmdline
|
gokhlayeh@186
|
2253 scan $PACKAGE --look_for=bdep --with_dev
|
gokhlayeh@186
|
2254 fi
|
gokhlayeh@186
|
2255 ;;
|
gokhlayeh@186
|
2256 gen-cooklist)
|
gokhlayeh@215
|
2257 check_root
|
gokhlayeh@204
|
2258 get_options_list="pkg"
|
gokhlayeh@186
|
2259 get_tazwok_config
|
gokhlayeh@215
|
2260 report(){ : ; }
|
gokhlayeh@204
|
2261 if ! [ "$pkg" ]; then
|
gokhlayeh@242
|
2262 if [ ! "$LIST" ] || [ "$LIST" = toolchain ]; then
|
gokhlayeh@242
|
2263 pkg="$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA"
|
gokhlayeh@242
|
2264 else
|
gokhlayeh@242
|
2265 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@242
|
2266 fi
|
gokhlayeh@186
|
2267 fi
|
gokhlayeh@204
|
2268 gen_cook_list
|
gokhlayeh@186
|
2269 ;;
|
pascal@119
|
2270 check-depends)
|
gokhlayeh@186
|
2271 # Check package depends /!\
|
gokhlayeh@186
|
2272 get_tazwok_config
|
pascal@119
|
2273 echo ""
|
paul@121
|
2274 echo -e "\033[1mCheck every receipt for DEPENDS - doesn't scan ELF files\033[0m
|
pascal@119
|
2275 ================================================================================"
|
pascal@119
|
2276 TMPDIR=/tmp/tazwok$$
|
pascal@119
|
2277 DEFAULT_DEPENDS="glibc-base gcc-lib-base"
|
pascal@119
|
2278
|
pascal@119
|
2279 # Build ALL_DEPENDS variable
|
pascal@119
|
2280 scan_dep()
|
pascal@119
|
2281 {
|
pascal@119
|
2282 local i
|
pascal@119
|
2283 ALL_DEPENDS="$ALL_DEPENDS$PACKAGE "
|
pascal@128
|
2284 for i in $DEPENDS $SUGGESTED ; do
|
pascal@119
|
2285 case " $ALL_DEPENDS " in
|
pascal@119
|
2286 *\ $i\ *) continue;;
|
pascal@119
|
2287 esac
|
pascal@120
|
2288 [ -d $WOK/$i ] || {
|
pascal@120
|
2289 ALL_DEPENDS="$ALL_DEPENDS$i "
|
pascal@120
|
2290 continue
|
pascal@120
|
2291 }
|
pascal@128
|
2292 DEPENDS=""
|
pascal@128
|
2293 SUGGESTED=""
|
pascal@119
|
2294 . $WOK/$i/receipt
|
pascal@119
|
2295 scan_dep
|
pascal@119
|
2296 done
|
pascal@119
|
2297 }
|
pankso@133
|
2298
|
pascal@119
|
2299 # Check for ELF file
|
pascal@119
|
2300 is_elf()
|
pascal@119
|
2301 {
|
slaxemulator@323
|
2302 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
|
pascal@119
|
2303 }
|
pascal@119
|
2304
|
pascal@119
|
2305 # Print shared library dependencies
|
pascal@119
|
2306 ldd()
|
pascal@119
|
2307 {
|
pascal@130
|
2308 LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
|
pascal@119
|
2309 }
|
pascal@119
|
2310
|
pascal@119
|
2311 mkdir $TMPDIR
|
pascal@119
|
2312 cd $TMPDIR
|
pascal@140
|
2313 for i in $LOCALSTATE/files.list.lzma \
|
pascal@140
|
2314 $LOCALSTATE/undigest/*/files.list.lzma ; do
|
pascal@119
|
2315 [ -f $i ] && lzma d $i -so >> files.list
|
pascal@119
|
2316 done
|
pascal@119
|
2317 for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
|
pascal@119
|
2318 tazpkg extract $pkg > /dev/null 2>&1
|
pascal@119
|
2319 . */receipt
|
pascal@119
|
2320 ALL_DEPENDS="$DEFAULT_DEPENDS "
|
pascal@119
|
2321 scan_dep
|
pascal@119
|
2322 find */fs -type f | while read file ; do
|
pascal@119
|
2323 is_elf $file || continue
|
pascal@119
|
2324 case "$file" in
|
pascal@119
|
2325 *.o|*.ko|*.ko.gz) continue;;
|
pascal@119
|
2326 esac
|
pascal@119
|
2327 ldd $file | while read lib rem; do
|
pascal@119
|
2328 case "$lib" in
|
pascal@128
|
2329 statically|linux-gate.so*|ld-*.so|*/ld-*.so)
|
pascal@119
|
2330 continue;;
|
pascal@119
|
2331 esac
|
gokhlayeh@195
|
2332 for dep in $(fgrep $lib files.list | cut -d: -f1); do
|
pascal@119
|
2333 case " $ALL_DEPENDS " in
|
pascal@119
|
2334 *\ $dep\ *) continue 2;;
|
pascal@119
|
2335 esac
|
gokhlayeh@195
|
2336 for vdep in $(fgrep $dep $LOCALSTATE/packages.equiv | cut -d= -f1); do
|
pascal@128
|
2337 case " $ALL_DEPENDS " in
|
pascal@129
|
2338 *\ $vdep\ *) continue 3;;
|
pascal@128
|
2339 esac
|
pascal@128
|
2340 done
|
pascal@119
|
2341 done
|
pascal@128
|
2342 [ -n "$dep" ] || dep="UNKNOWN"
|
pascal@119
|
2343 echo "$(basename $pkg): ${file#*fs} depends on package $dep for the shared library $lib"
|
pascal@119
|
2344 done
|
pascal@119
|
2345 done
|
pascal@119
|
2346 rm -rf */
|
pascal@119
|
2347 done
|
pascal@119
|
2348 cd /tmp
|
pascal@119
|
2349 rm -rf $TMPDIR
|
gokhlayeh@186
|
2350 ;;
|
pascal@76
|
2351 check)
|
paul@154
|
2352 # Check wok consistency
|
gokhlayeh@186
|
2353 get_tazwok_config
|
pascal@76
|
2354 echo ""
|
pascal@76
|
2355 echo -e "\033[1mWok and packages checking\033[0m
|
pascal@76
|
2356 ================================================================================"
|
pascal@77
|
2357 cd $WOK
|
pascal@77
|
2358 for pkg in $(ls)
|
pascal@76
|
2359 do
|
pascal@76
|
2360 [ -f $pkg/receipt ] || continue
|
gokhlayeh@186
|
2361 RECEIPT= $pkg/receipt
|
gokhlayeh@186
|
2362 source_receipt
|
gokhlayeh@186
|
2363 [ "$PACKAGE" = "$pkg" ] || echo "Package $PACKAGE should be $pkg" >&2
|
gokhlayeh@186
|
2364 [ -n "$VERSION" ] || echo "Package $PACKAGE has no VERSION" >&2
|
gokhlayeh@186
|
2365 [ -n "$PACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded PACKED_SIZE" >&2
|
gokhlayeh@186
|
2366 [ -n "$UNPACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded UNPACKED_SIZE" >&2
|
gokhlayeh@186
|
2367 [ -n "$EXTRAVERSION" ] && echo "Package $PACKAGE has hardcoded EXTRAVERSION" >&2
|
pascal@97
|
2368 if [ -n "$WANTED" ]; then
|
pascal@97
|
2369 if [ ! -f $WANTED/receipt ]; then
|
gokhlayeh@186
|
2370 echo "Package $PACKAGE wants unknown $WANTED package" >&2
|
pascal@97
|
2371 else
|
pascal@97
|
2372 BASEVERSION=$(. $WANTED/receipt ; echo $VERSION)
|
pascal@103
|
2373 if [ "$VERSION" = "$WANTED" ]; then
|
pascal@103
|
2374 # BASEVERSION is computed in receipt
|
gokhlayeh@195
|
2375 fgrep -q '_pkg=' $pkg/receipt &&
|
pascal@103
|
2376 BASEVERSION=$VERSION
|
pascal@103
|
2377 fi
|
pascal@97
|
2378 if [ "$VERSION" != "$BASEVERSION" ]; then
|
gokhlayeh@186
|
2379 echo "Package $PACKAGE ($VERSION) wants $WANTED ($BASEVERSION)" >&2
|
pascal@97
|
2380 fi
|
pascal@97
|
2381 fi
|
pascal@97
|
2382 fi
|
pascal@97
|
2383
|
pascal@94
|
2384 if [ -n "$CATEGORY" ]; then
|
pascal@94
|
2385 case " $(echo $CATEGORIES) " in
|
pascal@94
|
2386 *\ $CATEGORY\ *);;
|
gokhlayeh@186
|
2387 *) echo "Package $PACKAGE has an invalid CATEGORY" >&2;;
|
pascal@94
|
2388 esac
|
pascal@94
|
2389 else
|
gokhlayeh@186
|
2390 echo"Package $PACKAGE has no CATEGORY" >&2
|
pascal@94
|
2391 fi
|
gokhlayeh@186
|
2392 [ -n "$SHORT_DESC" ] || echo "Package $PACKAGE has no SHORT_DESC" >&2
|
gokhlayeh@186
|
2393 [ -n "$MAINTAINER" ] || echo "Package $PACKAGE has no MAINTAINER" >&2
|
pascal@122
|
2394 case "$WGET_URL" in
|
pascal@178
|
2395 ftp*|http*) busybox wget -s $WGET_URL 2> /dev/null ||
|
gokhlayeh@186
|
2396 echo "Package $PACKAGE has a wrong WGET_URL" >&2;;
|
pascal@122
|
2397 '') ;;
|
gokhlayeh@186
|
2398 *) echo "Package $PACKAGE has an invalid WGET_URL" >&2;;
|
pascal@122
|
2399 esac
|
pascal@112
|
2400 case "$WEB_SITE" in
|
pascal@125
|
2401 ftp*|http*);;
|
gokhlayeh@186
|
2402 '') echo "Package $PACKAGE has no WEB_SITE" >&2;;
|
gokhlayeh@186
|
2403 *) echo "Package $PACKAGE has an invalid WEB_SITE" >&2;;
|
pascal@112
|
2404 esac
|
pascal@78
|
2405 case "$MAINTAINER" in
|
gokhlayeh@186
|
2406 *\<*|*\>*) echo "Package $PACKAGE has an invalid MAINTAINER: $MAINTAINER" >&2;;
|
pascal@78
|
2407 esac
|
pascal@78
|
2408 case "$MAINTAINER" in
|
pascal@78
|
2409 *@*);;
|
gokhlayeh@186
|
2410 *) echo "Package $PACKAGE MAINTAINER is not an email address" >&2;;
|
pascal@78
|
2411 esac
|
gokhlayeh@186
|
2412 MSG="Missing dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@76
|
2413 for i in $DEPENDS; do
|
pascal@76
|
2414 [ -d $i ] && continue
|
pascal@111
|
2415 [ -n "$(whoprovide $i)" ] && continue
|
pascal@76
|
2416 echo -e "$MSG $i"
|
pascal@76
|
2417 MSG=""
|
pascal@76
|
2418 done
|
gokhlayeh@186
|
2419 MSG="Missing build dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@92
|
2420 for i in $BUILD_DEPENDS; do
|
pascal@92
|
2421 [ -d $i ] && continue
|
pascal@111
|
2422 [ -n "$(whoprovide $i)" ] && continue
|
pascal@92
|
2423 echo -e "$MSG $i"
|
pascal@92
|
2424 MSG=""
|
pascal@92
|
2425 done
|
pascal@76
|
2426 MSG="Dependencies loop between $PACKAGE and :\n"
|
pascal@76
|
2427 ALL_DEPS=""
|
pascal@76
|
2428 check_for_deps_loop $PACKAGE $DEPENDS
|
pascal@140
|
2429 [ -d $WOK/$pkg/taz ] && for i in $BUILD_DEPENDS; do
|
pascal@141
|
2430 [ $WOK/$pkg/taz -nt $INSTALLED/$i/files.list ] && continue
|
paul@154
|
2431 echo "$pkg should be rebuilt after $i installation"
|
pascal@140
|
2432 done
|
pascal@76
|
2433 done
|
gokhlayeh@186
|
2434 ;;
|
pankso@7
|
2435 list)
|
paul@166
|
2436 # List packages in wok directory. User can specify a category.
|
pankso@7
|
2437 #
|
gokhlayeh@186
|
2438 get_tazwok_config
|
pankso@7
|
2439 if [ "$2" = "category" ]; then
|
pankso@7
|
2440 echo -e "\033[1m\nPackages categories :\033[0m $CATEGORIES\n"
|
pankso@7
|
2441 exit 0
|
pankso@7
|
2442 fi
|
pankso@7
|
2443 # Check for an asked category.
|
pankso@7
|
2444 if [ -n "$2" ]; then
|
pankso@7
|
2445 ASKED_CATEGORY=$2
|
pankso@7
|
2446 echo ""
|
pankso@7
|
2447 echo -e "\033[1mPackages in category :\033[0m $ASKED_CATEGORY"
|
pankso@7
|
2448 echo "================================================================================"
|
pankso@7
|
2449 for pkg in $WOK/*
|
pankso@7
|
2450 do
|
erjo@168
|
2451 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2452 . $pkg/receipt
|
pankso@7
|
2453 if [ "$CATEGORY" == "$ASKED_CATEGORY" ]; then
|
pankso@7
|
2454 echo -n "$PACKAGE"
|
pankso@28
|
2455 echo -e "\033[28G $VERSION"
|
pankso@7
|
2456 packages=$(($packages+1))
|
pankso@7
|
2457 fi
|
pankso@7
|
2458 done
|
pankso@7
|
2459 echo "================================================================================"
|
gokhlayeh@236
|
2460 echo -e "$packages packages in category $ASKED_CATEGORY.\n"
|
pankso@7
|
2461 else
|
pankso@7
|
2462 # By default list all packages and version.
|
pankso@7
|
2463 echo ""
|
pankso@7
|
2464 echo -e "\033[1mList of packages in the wok\033[0m"
|
pankso@7
|
2465 echo "================================================================================"
|
pankso@7
|
2466 for pkg in $WOK/*
|
pankso@7
|
2467 do
|
erjo@168
|
2468 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2469 . $pkg/receipt
|
pankso@7
|
2470 echo -n "$PACKAGE"
|
pankso@28
|
2471 echo -en "\033[28G $VERSION"
|
pankso@7
|
2472 echo -e "\033[42G $CATEGORY"
|
pankso@7
|
2473 packages=$(($packages+1))
|
pankso@7
|
2474 done
|
pankso@7
|
2475 echo "================================================================================"
|
gokhlayeh@236
|
2476 echo -e "$packages packages available in the wok.\n"
|
pankso@7
|
2477 fi
|
pankso@7
|
2478 ;;
|
pankso@7
|
2479 info)
|
MikeDSmith25@82
|
2480 # Information about a package.
|
pankso@7
|
2481 #
|
gokhlayeh@186
|
2482 get_tazwok_config
|
pankso@7
|
2483 check_for_package_on_cmdline
|
pankso@7
|
2484 check_for_receipt
|
pankso@7
|
2485 . $WOK/$PACKAGE/receipt
|
pankso@7
|
2486 echo ""
|
MikeDSmith25@82
|
2487 echo -e "\033[1mTazwok package information\033[0m
|
pankso@7
|
2488 ================================================================================
|
pankso@7
|
2489 Package : $PACKAGE
|
pankso@7
|
2490 Version : $VERSION
|
pankso@7
|
2491 Category : $CATEGORY
|
pankso@7
|
2492 Short desc : $SHORT_DESC
|
pankso@7
|
2493 Maintainer : $MAINTAINER"
|
pankso@7
|
2494 if [ ! "$WEB_SITE" = "" ]; then
|
pankso@7
|
2495 echo "Web site : $WEB_SITE"
|
pankso@7
|
2496 fi
|
pankso@7
|
2497 if [ ! "$DEPENDS" = "" ]; then
|
pankso@7
|
2498 echo "Depends : $DEPENDS"
|
pankso@7
|
2499 fi
|
pankso@7
|
2500 if [ ! "$WANTED" = "" ]; then
|
pankso@7
|
2501 echo "Wanted src : $WANTED"
|
pankso@7
|
2502 fi
|
pankso@7
|
2503 echo "================================================================================"
|
pankso@7
|
2504 echo ""
|
gokhlayeh@186
|
2505 ;;
|
pankso@7
|
2506 check-log)
|
pankso@7
|
2507 # We just cat the file log to view process info.
|
pankso@7
|
2508 #
|
gokhlayeh@186
|
2509 get_tazwok_config
|
pankso@7
|
2510 if [ ! -f "$LOG" ]; then
|
gokhlayeh@186
|
2511 echo -e "\nNo process log found. The package is probably not cooked.\n" >&2
|
gokhlayeh@186
|
2512 exit 1
|
pankso@7
|
2513 else
|
pankso@7
|
2514 echo ""
|
pankso@7
|
2515 echo -e "\033[1mPackage process log for :\033[0m $PACKAGE"
|
pankso@7
|
2516 echo "================================================================================"
|
pankso@7
|
2517 cat $LOG
|
pankso@7
|
2518 echo "================================================================================"
|
pankso@7
|
2519 echo ""
|
gokhlayeh@237
|
2520 if [ -s "$WOK/$PACKAGE/warning.txt" ]; then
|
gokhlayeh@237
|
2521 echo -e "\033[1mCook warning(s) for :\033[0m $PACKAGE"
|
gokhlayeh@237
|
2522 echo "================================================================================"
|
gokhlayeh@237
|
2523 cat "$WOK/$PACKAGE/warning.txt"
|
gokhlayeh@237
|
2524 echo "================================================================================"
|
gokhlayeh@237
|
2525 echo ""
|
gokhlayeh@237
|
2526 fi
|
pankso@7
|
2527 fi
|
gokhlayeh@186
|
2528 ;;
|
pankso@7
|
2529 search)
|
pankso@7
|
2530 # Search for a package by pattern or name.
|
pankso@7
|
2531 #
|
gokhlayeh@186
|
2532 get_tazwok_config
|
pankso@7
|
2533 if [ -z "$2" ]; then
|
gokhlayeh@186
|
2534 echo -e "\nPlease specify a pattern or a package name to search." >&2
|
gokhlayeh@186
|
2535 echo -e "Example : 'tazwok search gcc'.\n" >&2
|
gokhlayeh@186
|
2536 exit 1
|
pankso@7
|
2537 fi
|
pankso@7
|
2538 echo ""
|
pankso@7
|
2539 echo -e "\033[1mSearch result for :\033[0m $2"
|
pankso@7
|
2540 echo "================================================================================"
|
gokhlayeh@195
|
2541 list=`ls -1 $WOK | fgrep $2`
|
pankso@7
|
2542 for pkg in $list
|
pankso@7
|
2543 do
|
pankso@7
|
2544 . $WOK/$pkg/receipt
|
pankso@7
|
2545 echo -n "$PACKAGE "
|
pankso@7
|
2546 echo -en "\033[24G $VERSION"
|
pankso@7
|
2547 echo -e "\033[42G $CATEGORY"
|
gokhlayeh@186
|
2548 packages=$(($PACKAGEs+1))
|
pankso@7
|
2549 done
|
pankso@7
|
2550 echo "================================================================================"
|
gokhlayeh@238
|
2551 echo "$packages packages found for : $2"
|
pankso@7
|
2552 echo ""
|
gokhlayeh@186
|
2553 ;;
|
pankso@7
|
2554 compile)
|
pankso@7
|
2555 # Configure and make a package with the receipt.
|
pankso@7
|
2556 #
|
gokhlayeh@186
|
2557 get_tazwok_config
|
gokhlayeh@186
|
2558 source_lib report
|
gokhlayeh@186
|
2559 report start
|
pankso@7
|
2560 compile_package
|
gokhlayeh@186
|
2561 ;;
|
pankso@7
|
2562 genpkg)
|
paul@121
|
2563 # Generate a package.
|
pankso@7
|
2564 #
|
gokhlayeh@186
|
2565 get_tazwok_config
|
gokhlayeh@186
|
2566 source_lib report
|
gokhlayeh@186
|
2567 report start
|
pankso@7
|
2568 gen_package
|
gokhlayeh@186
|
2569 ;;
|
pankso@7
|
2570 cook)
|
pankso@7
|
2571 # Compile and generate a package. Just execute tazwok with
|
pankso@7
|
2572 # the good commands.
|
pankso@7
|
2573 #
|
pankso@7
|
2574 check_root
|
gokhlayeh@186
|
2575 get_tazwok_config
|
gokhlayeh@186
|
2576 source_lib report
|
gokhlayeh@186
|
2577 report start
|
gokhlayeh@215
|
2578 update_wan_db
|
gokhlayeh@215
|
2579 check_for_commit
|
gokhlayeh@215
|
2580 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@215
|
2581 [ "$plan_sort_wandb" ] && sort -o $wan_db $wan_db && unset plan_sort_wandb
|
gokhlayeh@215
|
2582 if [ "$plan_regen_cookorder" ]; then
|
gokhlayeh@215
|
2583 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt || \
|
gokhlayeh@215
|
2584 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@215
|
2585 fi
|
gokhlayeh@186
|
2586 cook
|
gokhlayeh@186
|
2587 ;;
|
gokhlayeh@186
|
2588 sort-cooklist)
|
gokhlayeh@297
|
2589 if [ ! -f "$LIST" ]; then
|
gokhlayeh@297
|
2590 echo "Usage : tazwok sort-cooklist cooklist" >&2
|
gokhlayeh@186
|
2591 exit 1
|
gokhlayeh@186
|
2592 fi
|
gokhlayeh@297
|
2593 check_root
|
gokhlayeh@186
|
2594 get_tazwok_config
|
gokhlayeh@297
|
2595 report(){ : ; }
|
gokhlayeh@297
|
2596 # When using sort-cooklist, the script should behave as for gen-cooklist
|
gokhlayeh@297
|
2597 # The only difference between theses two is where the output is sended.
|
gokhlayeh@297
|
2598 COMMAND=gen-cooklist
|
gokhlayeh@186
|
2599 cooklist=$LIST
|
gokhlayeh@297
|
2600 gen_cook_list
|
gokhlayeh@300
|
2601 cp -af $tmp/cooklist $cooklist
|
gokhlayeh@186
|
2602 ;;
|
pankso@7
|
2603 cook-list)
|
gokhlayeh@204
|
2604 # Cook all packages listed in a file or in default cooklist.
|
gokhlayeh@186
|
2605 check_root
|
gokhlayeh@204
|
2606 get_options_list="pkg forced"
|
gokhlayeh@186
|
2607 get_tazwok_config
|
gokhlayeh@186
|
2608 source_lib report
|
gokhlayeh@186
|
2609 report start
|
gokhlayeh@204
|
2610 if ! [ "$pkg" ]; then
|
gokhlayeh@204
|
2611 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@186
|
2612 fi
|
gokhlayeh@204
|
2613 gen_cook_list
|
gokhlayeh@186
|
2614 cook_list
|
gokhlayeh@186
|
2615 ;;
|
gokhlayeh@186
|
2616 clean)
|
gokhlayeh@186
|
2617 # Clean up a package work directory + thoses which want it.
|
pankso@7
|
2618 #
|
gokhlayeh@186
|
2619 get_tazwok_config
|
pankso@7
|
2620 check_for_package_on_cmdline
|
pankso@7
|
2621 check_for_receipt
|
gokhlayeh@186
|
2622 source_lib report
|
gokhlayeh@186
|
2623 report start
|
pankso@7
|
2624 . $RECEIPT
|
gokhlayeh@186
|
2625 clean
|
gokhlayeh@186
|
2626 ;;
|
pankso@7
|
2627 gen-clean-wok)
|
paul@121
|
2628 # Generate a clean wok from the current wok by copying all receipts
|
pankso@7
|
2629 # and stuff directory.
|
pankso@7
|
2630 #
|
gokhlayeh@186
|
2631 get_tazwok_config
|
gokhlayeh@186
|
2632 source_lib report
|
gokhlayeh@186
|
2633 report start
|
gokhlayeh@186
|
2634 if [ -z "$ARG" ]; then
|
gokhlayeh@186
|
2635 echo -e "\nPlease specify the destination for the new clean wok.\n" >&2
|
gokhlayeh@186
|
2636 exit 1
|
pankso@7
|
2637 else
|
gokhlayeh@186
|
2638 dest=$ARG
|
pankso@7
|
2639 mkdir -p $dest
|
pankso@7
|
2640 fi
|
gokhlayeh@186
|
2641 report step "Creating clean wok in : $dest"
|
pankso@7
|
2642 for pkg in `ls -1 $WOK`
|
pankso@7
|
2643 do
|
pankso@7
|
2644 mkdir -p $dest/$pkg
|
pankso@7
|
2645 cp -a $WOK/$pkg/receipt $dest/$pkg
|
gokhlayeh@186
|
2646 [ -f $WOK/$pkg/description.txt ] && \
|
gokhlayeh@186
|
2647 cp -a $WOK/$pkg/description.txt $dest/$pkg
|
pankso@7
|
2648 if [ -d "$WOK/$pkg/stuff" ]; then
|
pankso@7
|
2649 cp -a $WOK/$pkg/stuff $dest/$pkg
|
pankso@7
|
2650 fi
|
pankso@7
|
2651 done
|
gokhlayeh@186
|
2652 [ -d $WOK/.hg ] && cp -a $WOK/.hg $dest
|
gokhlayeh@186
|
2653 report end-step
|
pankso@7
|
2654 echo "Packages cleaned : `ls -1 $dest | wc -l`"
|
pankso@7
|
2655 echo ""
|
gokhlayeh@186
|
2656 ;;
|
pankso@7
|
2657 clean-wok)
|
pankso@7
|
2658 # Clean all packages in the work directory
|
pankso@7
|
2659 #
|
gokhlayeh@186
|
2660 get_tazwok_config
|
gokhlayeh@186
|
2661 source_lib report
|
gokhlayeh@186
|
2662 report start
|
gokhlayeh@186
|
2663 report step "Cleaning wok"
|
gokhlayeh@186
|
2664 for PACKAGE in `ls -1 $WOK`
|
pankso@7
|
2665 do
|
gokhlayeh@186
|
2666 set_common_path
|
gokhlayeh@186
|
2667 source_receipt
|
gokhlayeh@186
|
2668 clean
|
pankso@7
|
2669 done
|
pankso@7
|
2670 echo "`ls -1 $WOK | wc -l` packages cleaned."
|
gokhlayeh@186
|
2671 ;;
|
gokhlayeh@266
|
2672 clean-src)
|
gokhlayeh@266
|
2673 # Remove tarball unrelated to wok receipts from src repo.
|
gokhlayeh@266
|
2674 check_root
|
gokhlayeh@266
|
2675 get_options_list="forced"
|
gokhlayeh@266
|
2676 get_tazwok_config
|
gokhlayeh@266
|
2677 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
2678 echo -n "Checking $SOURCES_REPOSITORY..."
|
gokhlayeh@266
|
2679 for TARBALL in *; do
|
gokhlayeh@266
|
2680 [ "$TARBALL" = sources.list ] && continue
|
gokhlayeh@266
|
2681 grep -q $'\t'$TARBALL$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2682 echo $TARBALL >> $tmp/obsolete
|
gokhlayeh@266
|
2683 done
|
gokhlayeh@266
|
2684 status
|
slaxemulator@273
|
2685 if ! [ -f $tmp/obsolete ]; then
|
slaxemulator@273
|
2686 echo "No sources need to be removed."
|
slaxemulator@273
|
2687 exit 1
|
slaxemulator@273
|
2688 fi
|
gokhlayeh@266
|
2689 echo ""
|
gokhlayeh@266
|
2690 echo -e "\033[1mObsolete/unrelated-to-wok sourcess :\033[0m"
|
gokhlayeh@266
|
2691 horizontal_line
|
gokhlayeh@266
|
2692 cat $tmp/obsolete
|
gokhlayeh@266
|
2693 horizontal_line
|
gokhlayeh@266
|
2694 echo "$(wc -l $tmp/obsolete | cut -f1 -d' ') tarballs to remove."
|
gokhlayeh@266
|
2695 echo ""
|
gokhlayeh@266
|
2696 echo -n "Please confirm removing (type uppercase YES): "
|
gokhlayeh@266
|
2697 read answer
|
gokhlayeh@266
|
2698 if [ "$answer" = YES ]; then
|
gokhlayeh@266
|
2699 echo -n "Removing old sources..."
|
gokhlayeh@266
|
2700 cat $tmp/obsolete | while read i; do
|
gokhlayeh@266
|
2701 rm -f $SOURCES_REPOSITORY/$i
|
gokhlayeh@266
|
2702 done
|
gokhlayeh@266
|
2703 status
|
gokhlayeh@266
|
2704 fi
|
gokhlayeh@266
|
2705 ;;
|
pankso@7
|
2706 gen-list)
|
gokhlayeh@186
|
2707 get_tazwok_config
|
gokhlayeh@204
|
2708 if [ "$2" ]; then
|
gokhlayeh@204
|
2709 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2710 pkg_repository=$2
|
gokhlayeh@204
|
2711 else
|
gokhlayeh@204
|
2712 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@204
|
2713 exit 1
|
gokhlayeh@204
|
2714 fi
|
gokhlayeh@204
|
2715 fi
|
gokhlayeh@204
|
2716
|
gokhlayeh@186
|
2717 source_lib report
|
gokhlayeh@186
|
2718 report start
|
gokhlayeh@204
|
2719 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2720 gen_packages_db
|
gokhlayeh@204
|
2721 else
|
gokhlayeh@204
|
2722 pkg_repository=$PACKAGES_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2723 pkg_repository=$INCOMING_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2724 fi
|
gokhlayeh@186
|
2725 ;;
|
gokhlayeh@186
|
2726 check-list)
|
gokhlayeh@186
|
2727 # The directory to move into by default is the repository,
|
gokhlayeh@186
|
2728 # if $2 is not empty cd into $2.
|
pankso@7
|
2729 #
|
gokhlayeh@186
|
2730 get_tazwok_config
|
gokhlayeh@204
|
2731 if [ "$2" ]; then
|
pankso@7
|
2732 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2733 pkg_repository=$2
|
pankso@7
|
2734 else
|
gokhlayeh@186
|
2735 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@186
|
2736 exit 1
|
pankso@7
|
2737 fi
|
pankso@7
|
2738 fi
|
gokhlayeh@186
|
2739
|
gokhlayeh@186
|
2740 source_lib report
|
gokhlayeh@204
|
2741 report start
|
gokhlayeh@204
|
2742 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2743 update_packages_db
|
gokhlayeh@204
|
2744 else
|
gokhlayeh@204
|
2745 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2746 pkg_repository=$INCOMING_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2747 fi
|
gokhlayeh@186
|
2748 ;;
|
pankso@7
|
2749 new-tree)
|
MikeDSmith25@82
|
2750 # Just create a few directories and generate an empty receipt to prepare
|
pankso@7
|
2751 # the creation of a new package.
|
pankso@7
|
2752 #
|
gokhlayeh@186
|
2753 get_tazwok_config
|
pankso@7
|
2754 check_for_package_on_cmdline
|
pankso@7
|
2755 if [ -d $WOK/$PACKAGE ]; then
|
gokhlayeh@186
|
2756 echo -e "\n$PACKAGE package tree already exists.\n" >&2
|
gokhlayeh@186
|
2757 exit 1
|
pankso@7
|
2758 fi
|
pankso@7
|
2759 echo "Creating : $WOK/$PACKAGE"
|
pankso@7
|
2760 mkdir $WOK/$PACKAGE
|
pankso@7
|
2761 cd $WOK/$PACKAGE
|
pankso@7
|
2762 echo -n "Preparing the receipt..."
|
pankso@7
|
2763 #
|
pankso@7
|
2764 # Default receipt begin.
|
pankso@7
|
2765 #
|
pankso@7
|
2766 echo "# SliTaz package receipt." > receipt
|
pankso@7
|
2767 echo "" >> receipt
|
pankso@7
|
2768 echo "PACKAGE=\"$PACKAGE\"" >> receipt
|
pankso@7
|
2769 # Finish the empty receipt.
|
pankso@7
|
2770 cat >> receipt << "EOF"
|
pankso@7
|
2771 VERSION=""
|
pankso@7
|
2772 CATEGORY=""
|
pankso@7
|
2773 SHORT_DESC=""
|
pankso@7
|
2774 MAINTAINER=""
|
pankso@7
|
2775 DEPENDS=""
|
pankso@7
|
2776 TARBALL="$PACKAGE-$VERSION.tar.gz"
|
pankso@7
|
2777 WEB_SITE=""
|
pankso@7
|
2778 WGET_URL=""
|
pankso@7
|
2779
|
pankso@7
|
2780 # Rules to configure and make the package.
|
pankso@7
|
2781 compile_rules()
|
pankso@7
|
2782 {
|
pankso@7
|
2783 cd $src
|
gokhlayeh@204
|
2784 ./configure && make && make install
|
pankso@7
|
2785 }
|
pankso@7
|
2786
|
pankso@7
|
2787 # Rules to gen a SliTaz package suitable for Tazpkg.
|
pankso@7
|
2788 genpkg_rules()
|
pankso@7
|
2789 {
|
pankso@7
|
2790 mkdir -p $fs/usr
|
pankso@7
|
2791 cp -a $_pkg/usr/bin $fs/usr
|
pankso@7
|
2792 }
|
pankso@7
|
2793
|
pankso@7
|
2794 EOF
|
pankso@7
|
2795 #
|
pankso@7
|
2796 # Default receipt end.
|
pankso@7
|
2797 #
|
pankso@7
|
2798 status
|
pankso@7
|
2799 # Interactive mode, asking and seding.
|
pankso@7
|
2800 if [ "$3" = "--interactive" ]; then
|
paul@154
|
2801 echo "Entering into interactive mode..."
|
pankso@7
|
2802 echo "================================================================================"
|
pankso@7
|
2803 echo "Package : $PACKAGE"
|
pankso@7
|
2804 # Version.
|
pankso@7
|
2805 echo -n "Version : " ; read anser
|
pankso@7
|
2806 sed -i s/'VERSION=\"\"'/"VERSION=\"$anser\""/ receipt
|
pankso@7
|
2807 # Category.
|
pankso@7
|
2808 echo -n "Category : " ; read anser
|
pankso@7
|
2809 sed -i s/'CATEGORY=\"\"'/"CATEGORY=\"$anser\""/ receipt
|
pankso@7
|
2810 # Short description.
|
pankso@7
|
2811 echo -n "Short desc : " ; read anser
|
pankso@7
|
2812 sed -i s/'SHORT_DESC=\"\"'/"SHORT_DESC=\"$anser\""/ receipt
|
pankso@7
|
2813 # Maintainer.
|
pankso@7
|
2814 echo -n "Maintainer : " ; read anser
|
pankso@7
|
2815 sed -i s/'MAINTAINER=\"\"'/"MAINTAINER=\"$anser\""/ receipt
|
pankso@7
|
2816 # Web site.
|
pankso@7
|
2817 echo -n "Web site : " ; read anser
|
pankso@133
|
2818 sed -i s#'WEB_SITE=\"\"'#"WEB_SITE=\"$anser\""# receipt
|
pankso@7
|
2819 echo ""
|
pankso@7
|
2820 # Wget URL.
|
pankso@7
|
2821 echo "Wget URL to download source tarball."
|
pankso@7
|
2822 echo "Example : \$GNU_MIRROR/\$PACKAGE/\$TARBALL"
|
pankso@7
|
2823 echo -n "Wget url : " ; read anser
|
pankso@7
|
2824 sed -i s#'WGET_URL=\"\"'#"WGET_URL=\"$anser\""# receipt
|
pankso@7
|
2825 # Ask for a stuff dir.
|
pankso@7
|
2826 echo -n "Do you need a stuff directory ? (y/N) : " ; read anser
|
pankso@7
|
2827 if [ "$anser" = "y" ]; then
|
pankso@7
|
2828 echo -n "Creating the stuff directory..."
|
pankso@7
|
2829 mkdir stuff && status
|
pankso@7
|
2830 fi
|
pankso@7
|
2831 # Ask for a description file.
|
pankso@7
|
2832 echo -n "Are you going to write a description ? (y/N) : " ; read anser
|
pankso@7
|
2833 if [ "$anser" = "y" ]; then
|
pankso@7
|
2834 echo -n "Creating the description.txt file..."
|
pankso@7
|
2835 echo "" > description.txt && status
|
pankso@7
|
2836 fi
|
pankso@7
|
2837 echo "================================================================================"
|
pankso@7
|
2838 echo ""
|
pankso@7
|
2839 fi
|
gokhlayeh@186
|
2840 ;;
|
pankso@7
|
2841 remove)
|
pankso@7
|
2842 # Remove a package from the wok.
|
pankso@7
|
2843 #
|
gokhlayeh@186
|
2844 get_tazwok_config
|
pankso@7
|
2845 check_for_package_on_cmdline
|
pankso@7
|
2846 echo ""
|
pascal@83
|
2847 echo -n "Please confirm deletion (y/N) : "; read anser
|
pascal@83
|
2848 if [ "$anser" = "y" ]; then
|
pascal@83
|
2849 echo -n "Removing $PACKAGE..."
|
pascal@83
|
2850 rm -rf $WOK/$PACKAGE && status
|
pascal@83
|
2851 echo ""
|
pascal@83
|
2852 fi
|
gokhlayeh@186
|
2853 ;;
|
gokhlayeh@304
|
2854 update-wok)
|
paul@166
|
2855 # Pull and update a Hg wok.
|
gokhlayeh@304
|
2856 get_options_list="local"
|
gokhlayeh@186
|
2857 get_tazwok_config
|
gokhlayeh@309
|
2858 source_lib report
|
gokhlayeh@310
|
2859 report start
|
gokhlayeh@304
|
2860 clean_wok=$LOCAL_REPOSITORY/clean-wok
|
gokhlayeh@304
|
2861 cd $clean_wok
|
gokhlayeh@304
|
2862 if ! [ "$local" ]; then
|
gokhlayeh@304
|
2863 if [ "$WOK_UPDATE_METHOD" = hg ]; then
|
gokhlayeh@304
|
2864 if ! [ -f "$INSTALLED/mercurial/receipt" ]; then
|
gokhlayeh@304
|
2865
|
gokhlayeh@304
|
2866 # Auto-install only if we are in a cook chroot.
|
gokhlayeh@304
|
2867 if [ -x /usr/bin/clean-chroot ]; then
|
gokhlayeh@304
|
2868 echo "" >&2
|
slaxemulator@327
|
2869 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
|
2870 echo "">&2
|
gokhlayeh@330
|
2871 exit 1
|
gokhlayeh@304
|
2872 else
|
gokhlayeh@304
|
2873 tazpkg get-install mercurial
|
gokhlayeh@304
|
2874 fi
|
gokhlayeh@330
|
2875 fi
|
gokhlayeh@304
|
2876
|
gokhlayeh@330
|
2877 report step "Getting wok changes using hg"
|
gokhlayeh@330
|
2878 if [ -d .hg ]; then
|
gokhlayeh@330
|
2879 hg pull -u || exit 1
|
gokhlayeh@304
|
2880 else
|
gokhlayeh@330
|
2881 hg clone $HG_WOK . || exit 1
|
gokhlayeh@304
|
2882 fi
|
gokhlayeh@309
|
2883 report end-step
|
gokhlayeh@304
|
2884 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@304
|
2885 else
|
gokhlayeh@309
|
2886 report step "Getting wok changes using tarball"
|
gokhlayeh@304
|
2887 { mkdir .tmp && cd .tmp
|
gokhlayeh@304
|
2888 wget "$TARBALL_WOK" &&
|
gokhlayeh@304
|
2889 case $TARBALL_WOK in
|
gokhlayeh@304
|
2890 *bz2) tar xjf *.bz2 -C wok; rm *.bz2;;
|
gokhlayeh@304
|
2891 *lzma) unlzma -c *.lzma | tar xf - -C wok; rm *.lzma ;;
|
gokhlayeh@304
|
2892 *gz) tar xzf *.gz -C wok; rm*.gz ;;
|
gokhlayeh@304
|
2893 esac &&
|
gokhlayeh@304
|
2894 rm -r $(ls -d $clean_wok/*) &&
|
gokhlayeh@304
|
2895 cp -a wok/* $clean_wok &&
|
gokhlayeh@304
|
2896 cd .. &&
|
gokhlayeh@304
|
2897 rm -r .tmp
|
gokhlayeh@304
|
2898 } || { echo "That's not cool: it fails!" >&2
|
gokhlayeh@309
|
2899 report end-step
|
gokhlayeh@304
|
2900 exit 1; }
|
gokhlayeh@309
|
2901 report end-step
|
gokhlayeh@304
|
2902 fi
|
pankso@106
|
2903 fi
|
gokhlayeh@309
|
2904 report step "Appending changes to wok"
|
gokhlayeh@304
|
2905
|
gokhlayeh@308
|
2906 # Handle removed files/dir.
|
gokhlayeh@308
|
2907 cd $WOK
|
gokhlayeh@313
|
2908 for dir in *; do
|
slaxemulator@329
|
2909 [ -d "$clean_wok/$dir" ] || rm -rf $dir
|
gokhlayeh@308
|
2910 done
|
gokhlayeh@308
|
2911 for file in */receipt */description.txt; do
|
slaxemulator@329
|
2912 [ -f "$clean_wok/$file" ] || rm -rf $file
|
gokhlayeh@308
|
2913 done
|
gokhlayeh@330
|
2914 for i in $(find */stuff 2>/dev/null); do
|
slaxemulator@329
|
2915 [ -e "$clean_wok/$i" ] || rm -rf $i
|
gokhlayeh@304
|
2916 done
|
gokhlayeh@304
|
2917
|
gokhlayeh@308
|
2918 cp -a $clean_wok/* $WOK
|
gokhlayeh@309
|
2919 report end-step
|
gokhlayeh@186
|
2920 ;;
|
pankso@108
|
2921 maintainers)
|
gokhlayeh@186
|
2922 get_tazwok_config
|
pankso@108
|
2923 echo ""
|
pankso@108
|
2924 echo "List of maintainers for: $WOK"
|
pankso@108
|
2925 echo "================================================================================"
|
pankso@108
|
2926 touch /tmp/slitaz-maintainers
|
pankso@108
|
2927 for pkg in $WOK/*
|
pankso@108
|
2928 do
|
pankso@108
|
2929 . $pkg/receipt
|
gokhlayeh@195
|
2930 if ! fgrep -q "$MAINTAINER" /tmp/slitaz-maintainers; then
|
pankso@108
|
2931 echo "$MAINTAINER" >> /tmp/slitaz-maintainers
|
pankso@108
|
2932 echo "$MAINTAINER"
|
pankso@108
|
2933 fi
|
pankso@108
|
2934 done
|
pankso@108
|
2935 echo "================================================================================"
|
pankso@108
|
2936 echo "Maintainers: `cat /tmp/slitaz-maintainers | wc -l`"
|
pankso@108
|
2937 echo ""
|
pankso@108
|
2938 # Remove tmp files
|
gokhlayeh@186
|
2939 rm -f /tmp/slitaz-maintainers
|
gokhlayeh@186
|
2940 ;;
|
pankso@107
|
2941 maintained-by)
|
paul@166
|
2942 # Search for packages maintained by a contributor.
|
gokhlayeh@186
|
2943 get_tazwok_config
|
pankso@107
|
2944 if [ ! -n "$2" ]; then
|
gokhlayeh@186
|
2945 echo "Specify a name or email of a maintainer." >&2
|
gokhlayeh@186
|
2946 exit 1
|
pankso@107
|
2947 fi
|
pankso@107
|
2948 echo "Maintainer packages"
|
pankso@107
|
2949 echo "================================================================================"
|
pankso@107
|
2950 for pkg in $WOK/*
|
pankso@107
|
2951 do
|
pankso@107
|
2952 . $pkg/receipt
|
gokhlayeh@195
|
2953 if echo "$MAINTAINER" | fgrep -q "$2"; then
|
pankso@107
|
2954 echo "$PACKAGE"
|
gokhlayeh@186
|
2955 packages=$(($PACKAGEs+1))
|
pankso@107
|
2956 fi
|
pankso@107
|
2957 done
|
pankso@107
|
2958 echo "================================================================================"
|
gokhlayeh@186
|
2959 echo "Packages maintained by $2: $PACKAGEs"
|
gokhlayeh@186
|
2960 echo ""
|
gokhlayeh@186
|
2961 ;;
|
gokhlayeh@268
|
2962 tags)
|
gokhlayeh@268
|
2963 get_tazwok_config
|
gokhlayeh@268
|
2964 echo -e "\n\033[1mTags list :\033[0m"
|
gokhlayeh@268
|
2965 horizontal_line
|
gokhlayeh@268
|
2966 cd $WOK
|
gokhlayeh@268
|
2967 for i in */receipt; do
|
gokhlayeh@268
|
2968 unset TAGS
|
gokhlayeh@268
|
2969 source $i
|
gokhlayeh@268
|
2970 for t in $TAGS; do
|
gokhlayeh@268
|
2971 grep -q ^$t$ $tmp/tags && continue
|
gokhlayeh@268
|
2972 echo $t | tee -a $tmp/tags
|
gokhlayeh@268
|
2973 done
|
gokhlayeh@268
|
2974 done
|
gokhlayeh@268
|
2975 horizontal_line
|
gokhlayeh@268
|
2976 echo "$(wc -l $tmp/tags | cut -f1 -d ' ') tags listed."
|
gokhlayeh@268
|
2977 ;;
|
erjo@159
|
2978 check-src)
|
erjo@159
|
2979 # Verify if upstream package is still available
|
erjo@159
|
2980 #
|
gokhlayeh@186
|
2981 get_tazwok_config
|
erjo@159
|
2982 check_for_package_on_cmdline
|
erjo@159
|
2983 check_for_receipt
|
gokhlayeh@186
|
2984 source_receipt
|
erjo@159
|
2985 check_src()
|
erjo@159
|
2986 {
|
erjo@159
|
2987 for url in $@; do
|
pascal@178
|
2988 busybox wget -s $url 2>/dev/null && break
|
erjo@159
|
2989 done
|
erjo@159
|
2990 }
|
gokhlayeh@186
|
2991 if [ "$WGET_URL" ];then
|
erjo@159
|
2992 echo -n "$PACKAGE : "
|
erjo@159
|
2993 check_src $WGET_URL
|
erjo@159
|
2994 status
|
erjo@159
|
2995 else
|
erjo@159
|
2996 echo "No tarball to check for $PACKAGE"
|
erjo@159
|
2997 fi
|
gokhlayeh@186
|
2998 ;;
|
gokhlayeh@186
|
2999 get-src)
|
gokhlayeh@186
|
3000 check_root
|
gokhlayeh@225
|
3001 get_options_list="target nounpack"
|
gokhlayeh@186
|
3002 get_tazwok_config
|
gokhlayeh@186
|
3003 check_for_package_on_cmdline
|
gokhlayeh@186
|
3004 check_for_receipt
|
gokhlayeh@186
|
3005 source_receipt
|
gokhlayeh@186
|
3006 if [ "$WGET_URL" ];then
|
gokhlayeh@186
|
3007 source_lib report
|
gokhlayeh@186
|
3008 report start
|
gokhlayeh@225
|
3009 check_for_tarball
|
gokhlayeh@186
|
3010 else
|
gokhlayeh@186
|
3011 echo "No tarball to download for $PACKAGE"
|
gokhlayeh@186
|
3012 fi
|
gokhlayeh@186
|
3013 ;;
|
gokhlayeh@204
|
3014 check-commit)
|
gokhlayeh@186
|
3015 check_root
|
gokhlayeh@204
|
3016 get_options_list="missing forced"
|
gokhlayeh@186
|
3017 get_tazwok_config
|
gokhlayeh@186
|
3018 source_lib report
|
gokhlayeh@186
|
3019 report start
|
gokhlayeh@204
|
3020 if [ "$forced" ]; then
|
gokhlayeh@204
|
3021 rm -f $WOK/*/md5
|
gokhlayeh@204
|
3022 unset forced
|
gokhlayeh@204
|
3023 fi
|
gokhlayeh@204
|
3024 if [ "$missing" ]; then
|
gokhlayeh@204
|
3025 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3026 else
|
gokhlayeh@204
|
3027 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3028 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3029 } | sort -u)"
|
gokhlayeh@204
|
3030 fi
|
gokhlayeh@204
|
3031 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
3032 gen_cook_list
|
gokhlayeh@186
|
3033 ;;
|
gokhlayeh@186
|
3034 cook-commit)
|
gokhlayeh@186
|
3035 check_root
|
gokhlayeh@204
|
3036 get_options_list="missing forced"
|
gokhlayeh@186
|
3037 get_tazwok_config
|
gokhlayeh@186
|
3038 source_lib report
|
gokhlayeh@186
|
3039 report start
|
gokhlayeh@204
|
3040 if [ "$forced" ]; then
|
gokhlayeh@204
|
3041 rm -f $WOK/*/md5
|
gokhlayeh@204
|
3042 unset forced
|
gokhlayeh@204
|
3043 fi
|
gokhlayeh@204
|
3044 if [ "$missing" ]; then
|
gokhlayeh@204
|
3045 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3046 else
|
gokhlayeh@204
|
3047 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3048 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3049 } | sort -u)"
|
gokhlayeh@204
|
3050 fi
|
gokhlayeh@204
|
3051 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
3052 gen_cook_list
|
gokhlayeh@186
|
3053 cook_list
|
gokhlayeh@186
|
3054 ;;
|
gokhlayeh@186
|
3055 cook-all)
|
gokhlayeh@186
|
3056 check_root
|
gokhlayeh@204
|
3057 get_options_list="forced missing"
|
gokhlayeh@186
|
3058 get_tazwok_config
|
gokhlayeh@186
|
3059 source_lib report
|
gokhlayeh@186
|
3060 report start
|
gokhlayeh@204
|
3061 if [ "$missing" ]; then
|
gokhlayeh@204
|
3062 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3063 else
|
gokhlayeh@204
|
3064 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3065 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3066 } | sort -u)"
|
gokhlayeh@204
|
3067 fi
|
gokhlayeh@204
|
3068 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@204
|
3069 gen_cook_list
|
gokhlayeh@186
|
3070 cook_list
|
gokhlayeh@186
|
3071 ;;
|
gokhlayeh@186
|
3072 gen-wok-db)
|
gokhlayeh@186
|
3073 check_root
|
gokhlayeh@186
|
3074 get_tazwok_config
|
gokhlayeh@186
|
3075 source_lib report
|
gokhlayeh@186
|
3076 report start
|
gokhlayeh@204
|
3077 gen_wok_db
|
gokhlayeh@186
|
3078 ;;
|
gokhlayeh@186
|
3079 report)
|
gokhlayeh@186
|
3080 get_tazwok_config
|
gokhlayeh@186
|
3081 cd $PACKAGES_REPOSITORY
|
gokhlayeh@239
|
3082 if [ "$2" ]; then
|
gokhlayeh@239
|
3083 case $2 in
|
gokhlayeh@239
|
3084 commit|cooklist|incoming|broken|blocked)
|
gokhlayeh@239
|
3085 show="$2"
|
gokhlayeh@239
|
3086 ;;
|
gokhlayeh@239
|
3087 *)
|
gokhlayeh@239
|
3088 echo "usage : tazwok report [commit|cooklist|incoming|broken|blocked]" >&2
|
gokhlayeh@239
|
3089 exit 1
|
gokhlayeh@239
|
3090 ;;
|
gokhlayeh@239
|
3091 esac
|
gokhlayeh@239
|
3092 else
|
gokhlayeh@239
|
3093 show="commit cooklist incoming broken blocked"
|
gokhlayeh@239
|
3094 fi
|
gokhlayeh@239
|
3095 for i in $show; do
|
gokhlayeh@186
|
3096 if [ -s $i ]; then
|
gokhlayeh@239
|
3097 echo ""
|
gokhlayeh@239
|
3098 echo -e "\033[1m$i\033[0m"
|
gokhlayeh@239
|
3099 echo "================================================================================"
|
gokhlayeh@239
|
3100 cat $i
|
gokhlayeh@239
|
3101 echo "================================================================================"
|
gokhlayeh@239
|
3102 echo ""
|
gokhlayeh@186
|
3103 fi
|
gokhlayeh@186
|
3104 done
|
gokhlayeh@186
|
3105 ;;
|
gokhlayeh@186
|
3106 check-incoming)
|
gokhlayeh@186
|
3107 check_root
|
gokhlayeh@214
|
3108 get_options_list="forced"
|
gokhlayeh@186
|
3109 get_tazwok_config
|
gokhlayeh@186
|
3110 source_lib report
|
gokhlayeh@186
|
3111 report start
|
gokhlayeh@307
|
3112 [ -f $LOCAL_RESOSITORY/incoming ] && rm [ -f $LOCAL_REPOSITORY/incoming ]
|
gokhlayeh@307
|
3113 report step "Checking $INCOMING_REPOSITORY"
|
gokhlayeh@307
|
3114 report open-bloc
|
gokhlayeh@313
|
3115 [ -f $LOCAL_REPOSITORY/log/incoming.html ] && rm $LOCAL_REPOSITORY/log/incoming.html
|
gokhlayeh@307
|
3116 report sublog $LOCAL_REPOSITORY/log/incoming.html
|
gokhlayeh@186
|
3117 check_for_incoming
|
gokhlayeh@307
|
3118 report end-sublog
|
gokhlayeh@307
|
3119 report close-bloc
|
gokhlayeh@186
|
3120 ;;
|
gokhlayeh@190
|
3121 configure-chroot)
|
gokhlayeh@190
|
3122 check_root
|
gokhlayeh@190
|
3123 get_tazwok_config
|
gokhlayeh@190
|
3124 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@190
|
3125 cd $LOCAL_REPOSITORY
|
gokhlayeh@190
|
3126 configure_tazchroot
|
gokhlayeh@190
|
3127 else
|
gokhlayeh@190
|
3128 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@190
|
3129 exit 1
|
gokhlayeh@190
|
3130 fi
|
gokhlayeh@190
|
3131 ;;
|
gokhlayeh@186
|
3132 chroot)
|
gokhlayeh@186
|
3133 check_root
|
gokhlayeh@186
|
3134 get_tazwok_config
|
gokhlayeh@186
|
3135 # Merge this and the other chroot function ?.
|
gokhlayeh@186
|
3136 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3137 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3138 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3139 tazchroot
|
gokhlayeh@186
|
3140 else
|
gokhlayeh@186
|
3141 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3142 exit 1
|
gokhlayeh@186
|
3143 fi
|
gokhlayeh@186
|
3144 ;;
|
gokhlayeh@186
|
3145 cook-toolchain)
|
gokhlayeh@186
|
3146 check_root
|
gokhlayeh@186
|
3147 get_tazwok_config
|
gokhlayeh@186
|
3148 echo -n "" > $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
3149 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3150 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3151 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3152 tazchroot cook-toolchain
|
gokhlayeh@186
|
3153 # Buggy : chroot can be elsewhere.
|
gokhlayeh@186
|
3154 rm -r $LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
3155 # /!\ to be writed :
|
gokhlayeh@186
|
3156 # next rm chroot and plan cook-all by pushing all packages
|
gokhlayeh@186
|
3157 # in cooklist.
|
gokhlayeh@186
|
3158 else
|
gokhlayeh@186
|
3159 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3160 exit 1
|
gokhlayeh@186
|
3161 fi
|
gokhlayeh@186
|
3162 ;;
|
gokhlayeh@235
|
3163 webserver)
|
gokhlayeh@235
|
3164 check_root
|
gokhlayeh@235
|
3165 get_tazwok_config
|
gokhlayeh@235
|
3166 if [ "$ARG" = on ]; then
|
gokhlayeh@235
|
3167 if [ "$WEBSERVER" ] && [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3168 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3169 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3170 exit 1
|
gokhlayeh@235
|
3171 fi
|
gokhlayeh@235
|
3172 if ! [ -f $LOCAL_REPOSITORY/tazchroot.conf ]; then
|
gokhlayeh@235
|
3173 tazwok configure-chroot ${undigest:+--undigest=$undigest} --SLITAZ_VERSION=$SLITAZ_VERSION --SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@235
|
3174 fi
|
gokhlayeh@235
|
3175 for pkg in php lighttpd; do
|
gokhlayeh@235
|
3176 [ -d $INSTALLED/$pkg ] || missing="$missing $pkg"
|
gokhlayeh@235
|
3177 done
|
gokhlayeh@235
|
3178 if [ "$missing" ]; then
|
gokhlayeh@235
|
3179 echo "You need to install those packages to start webserver: $missing." >&2
|
gokhlayeh@235
|
3180 exit 1
|
gokhlayeh@235
|
3181 fi
|
gokhlayeh@235
|
3182 if [ ! -f "$LOCAL_REPOSITORY/tazwok.conf" ]; then
|
gokhlayeh@235
|
3183 echo "Copying /etc/slitaz/tazwok.conf to $LOCAL_REPOSITORY/tazwok.conf: webserver is configured repository-by-repository."
|
gokhlayeh@235
|
3184 cp /etc/slitaz/tazwok.conf $LOCAL_REPOSITORY
|
gokhlayeh@235
|
3185 fi
|
gokhlayeh@235
|
3186 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3187 echo -n "Where to store php pages (default: /var/www/vhosts/bb)? "
|
gokhlayeh@235
|
3188 read WEBSERVER
|
gokhlayeh@235
|
3189 [ "$WEBSERVER" ] || WEBSERVER="/var/www/vhosts/bb"
|
gokhlayeh@235
|
3190 fi
|
gokhlayeh@235
|
3191 if [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3192 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3193 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3194 exit 1
|
gokhlayeh@235
|
3195 fi
|
gokhlayeh@235
|
3196 mkdir -p $WEBSERVER
|
gokhlayeh@235
|
3197 echo "${undigest:-$SLITAZ_VERSION}" >> $WEBSERVER/repositories.list
|
gokhlayeh@267
|
3198 for file in index.php log.php download.php; do
|
gokhlayeh@235
|
3199 [ -f "$WEBSERVER/$file" ] || ln -s /usr/share/slitaz/web-bb/$file $WEBSERVER
|
gokhlayeh@235
|
3200 done
|
gokhlayeh@267
|
3201 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3202 ln -s $dir $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3203 done
|
gokhlayeh@235
|
3204 source $LOCAL_REPOSITORY/tazchroot.conf
|
gokhlayeh@235
|
3205 echo "<?php
|
gokhlayeh@235
|
3206
|
gokhlayeh@235
|
3207 // Web interface configuration
|
gokhlayeh@235
|
3208
|
gokhlayeh@235
|
3209 \$version=\"${undigest:-$SLITAZ_VERSION}\";
|
gokhlayeh@235
|
3210 \$chroot=\"$chroot_dir\";
|
gokhlayeh@235
|
3211 \$lockfile=\"\$chroot/proc/1\";
|
gokhlayeh@235
|
3212 \$db_dir=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3213 \$log_dir=\"$LOCAL_REPOSITORY/log\";
|
gokhlayeh@235
|
3214 \$packages=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3215 \$incoming=\"$INCOMING_REPOSITORY\";
|
gokhlayeh@251
|
3216 \$wok=\"$WOK\";
|
gokhlayeh@235
|
3217
|
gokhlayeh@235
|
3218 ?>" > $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@235
|
3219 [ -L "$WEBSERVER/web" ] || ln -s /usr/share/slitaz/web $WEBSERVER
|
gokhlayeh@235
|
3220 echo "WEBSERVER=\"$WEBSERVER\"" >> $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3221 if [ -L "$WEBSERVER/conf.php" ]; then
|
gokhlayeh@235
|
3222 echo "Do yo want to make ${undigest:-$SLITAZ_VERSION} the default page (y/N) ? "
|
gokhlayeh@235
|
3223 read answer
|
gokhlayeh@235
|
3224 if [ "$answer" = y ]; then
|
gokhlayeh@235
|
3225 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3226 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3227 fi
|
gokhlayeh@235
|
3228 else
|
gokhlayeh@235
|
3229 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3230 fi
|
gokhlayeh@235
|
3231 elif [ "$ARG" = off ]; then
|
gokhlayeh@235
|
3232 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3233 echo "No webserver running for ${undigest:-$SLITAZ_VERSION}" >&2
|
gokhlayeh@235
|
3234 exit 1
|
gokhlayeh@235
|
3235 fi
|
gokhlayeh@235
|
3236 sed '/^WEBSERVER/d' -i $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3237 sed "/^${undigest:-$SLITAZ_VERSION}$/d" -i $WEBSERVER/repositories.list
|
gokhlayeh@235
|
3238 rm $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@267
|
3239 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3240 rm $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3241 done
|
gokhlayeh@235
|
3242 if ! [ -s "$WEBSERVER/repositories.list" ]; then
|
gokhlayeh@235
|
3243 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
|
3244 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3245 elif [ "$(readlink $WEBSERVER/conf.php)" = "$WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php" ]; then
|
gokhlayeh@235
|
3246 echo "${undigest:-$SLITAZ_VERSION} was the default version to use; switched to : $(sed 1!d $WEBSERVER/repositories.list)"
|
gokhlayeh@235
|
3247 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3248 ln -s $WEBSERVER/conf-$(sed 1!d $WEBSERVER/repositories.list).php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3249 fi
|
gokhlayeh@235
|
3250 else
|
gokhlayeh@235
|
3251 echo "Usage: tazwok webserver on/off" >&2
|
gokhlayeh@235
|
3252 exit 1
|
gokhlayeh@235
|
3253 fi
|
gokhlayeh@235
|
3254 ;;
|
pankso@7
|
3255 usage|*)
|
MikeDSmith25@82
|
3256 # Print usage also for all unknown commands.
|
pankso@7
|
3257 #
|
pankso@7
|
3258 usage
|
gokhlayeh@186
|
3259 ;;
|
pankso@7
|
3260 esac
|
pankso@7
|
3261
|
gokhlayeh@313
|
3262 report stop 2>/dev/null
|
gokhlayeh@330
|
3263 exit 0
|