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