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