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