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