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