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