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