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