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