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@505
|
12 VERSION=4.2.14
|
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"
|
gokhlayeh@204
|
1477 for PACKAGE in $(cut -f1 -d '|' $PACKAGES_REPOSITORY/packages.desc \
|
gokhlayeh@204
|
1478 $INCOMING_REPOSITORY/packages.desc | sort -u); do
|
gokhlayeh@186
|
1479 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1480 if [ -s $RECEIPT ]; then
|
gokhlayeh@186
|
1481 source_receipt
|
gokhlayeh@186
|
1482 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pankso@133
|
1483 fi
|
pascal@99
|
1484 done
|
gokhlayeh@215
|
1485 sort_db
|
gokhlayeh@204
|
1486 report close-bloc
|
pankso@28
|
1487 }
|
pankso@28
|
1488
|
gokhlayeh@204
|
1489 gen_wan_db()
|
pascal@91
|
1490 {
|
gokhlayeh@471
|
1491 rm -f $wan_db
|
gokhlayeh@204
|
1492 for RECEIPT in $(fgrep -l WANTED $WOK/*/receipt); do
|
gokhlayeh@204
|
1493 WANTED=
|
gokhlayeh@204
|
1494 source $RECEIPT
|
gokhlayeh@204
|
1495 [ "$WANTED" ] || continue
|
gokhlayeh@471
|
1496 echo -e $PACKAGE"\t"$WANTED >> $wan_db
|
gokhlayeh@204
|
1497 done
|
pascal@91
|
1498 }
|
pascal@91
|
1499
|
gokhlayeh@215
|
1500 update_wan_db()
|
gokhlayeh@215
|
1501 {
|
slaxemulator@326
|
1502 local PACKAGE=$PACKAGE
|
gokhlayeh@423
|
1503 wanted_list=$(fgrep WANTED=\"$PACKAGE\" $WOK/*/receipt | cut -f1 -d ':')
|
gokhlayeh@423
|
1504 grep $'\t'$PACKAGE $wan_db | cut -f 1 | while read wan; do
|
gokhlayeh@423
|
1505 echo "$wanted_list" | fgrep -q /$wan/receipt && continue
|
gokhlayeh@423
|
1506 sed "/^$wan\t/d" -i $wan_db
|
gokhlayeh@423
|
1507 done
|
gokhlayeh@423
|
1508 for RECEIPT in $wanted_list; do
|
gokhlayeh@470
|
1509 unset WANTED PACKAGE
|
gokhlayeh@215
|
1510 source $RECEIPT
|
gokhlayeh@215
|
1511 [ "$WANTED" ] || continue
|
gokhlayeh@215
|
1512 sed "/^$PACKAGE\t/d" -i $wan_db
|
gokhlayeh@470
|
1513 echo -e $PACKAGE"\t"$WANTED >> $wan_db
|
gokhlayeh@215
|
1514 done
|
gokhlayeh@423
|
1515 unset wanted_list
|
gokhlayeh@215
|
1516 }
|
gokhlayeh@215
|
1517
|
gokhlayeh@204
|
1518 update_dep_db()
|
gokhlayeh@204
|
1519 {
|
gokhlayeh@204
|
1520 sed "/^$PACKAGE\t/d" -i $dep_db
|
gokhlayeh@470
|
1521 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pascal@178
|
1522 }
|
pascal@178
|
1523
|
gokhlayeh@186
|
1524 sort_db()
|
pascal@178
|
1525 {
|
gokhlayeh@186
|
1526 report step "Generating cookorder.txt"
|
gokhlayeh@186
|
1527 cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do
|
gokhlayeh@186
|
1528 grep -q ^$PACKAGE$'\t' $wan_db && continue
|
gokhlayeh@186
|
1529
|
gokhlayeh@186
|
1530 # Replace each BUILD_DEPENDS with a WANTED package by it's
|
gokhlayeh@186
|
1531 # WANTED package.
|
gokhlayeh@186
|
1532 replace_by_wanted()
|
gokhlayeh@186
|
1533 {
|
gokhlayeh@186
|
1534 for p in $BUILD_DEPENDS; do
|
gokhlayeh@186
|
1535 if grep -q ^$p$'\t' $wan_db; then
|
gokhlayeh@186
|
1536 echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' '
|
gokhlayeh@186
|
1537 else
|
gokhlayeh@186
|
1538 echo -n $p' '
|
gokhlayeh@186
|
1539 fi
|
gokhlayeh@186
|
1540 done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' '
|
gokhlayeh@186
|
1541 }
|
gokhlayeh@186
|
1542 echo -e $PACKAGE"\t $(replace_by_wanted) "
|
gokhlayeh@186
|
1543 done > $tmp/db
|
gokhlayeh@186
|
1544 while [ -s "$tmp/db" ]; do
|
gokhlayeh@186
|
1545 status=start
|
gokhlayeh@186
|
1546 for pkg in $(cut -f 1 $tmp/db); do
|
gokhlayeh@195
|
1547 if ! fgrep -q ' '$pkg' ' $tmp/db; then
|
gokhlayeh@186
|
1548 echo $pkg >> $tmp/cookorder
|
gokhlayeh@186
|
1549 sed -e "/^$pkg\t/d" -e "s/ $pkg / /g" -i $tmp/db
|
gokhlayeh@186
|
1550 status=proceed
|
gokhlayeh@186
|
1551 fi
|
gokhlayeh@186
|
1552 done
|
gokhlayeh@186
|
1553 if [ "$status" = start ]; then
|
gokhlayeh@186
|
1554 cp -f $tmp/db /tmp/remain-depends.txt
|
paul@430
|
1555 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
|
1556 for remaining in $(cut -f 1 $tmp/db); do
|
slaxemulator@518
|
1557 if ! grep -q ^$remaining $PACKAGES_REPOSITORY/blocked; then
|
slaxemulator@518
|
1558 echo "$remaining" >> $PACKAGES_REPOSITORY/blocked
|
slaxemulator@517
|
1559 fi
|
gokhlayeh@186
|
1560 done
|
gokhlayeh@186
|
1561 break
|
gokhlayeh@186
|
1562 fi
|
gokhlayeh@186
|
1563 done
|
gokhlayeh@186
|
1564 [ -s $tmp/cookorder ] || touch $tmp/cookorder
|
gokhlayeh@186
|
1565
|
gokhlayeh@186
|
1566 # The toolchain packages are moved in first position.
|
gokhlayeh@186
|
1567 grep $(for pkg in `scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
1568 --look_for=all --with_args`; do echo " -e ^$pkg$"; done) \
|
gokhlayeh@186
|
1569 $tmp/cookorder | tac > $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1570 for pkg in $(cat $PACKAGES_REPOSITORY/cookorder.txt); do
|
gokhlayeh@186
|
1571 sed "/^$pkg$/d" -i $tmp/cookorder
|
gokhlayeh@186
|
1572 done
|
gokhlayeh@186
|
1573
|
gokhlayeh@186
|
1574 tac $tmp/cookorder >> $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1575 report end-step
|
pascal@178
|
1576 }
|
pascal@178
|
1577
|
gokhlayeh@186
|
1578 ########################################################################
|
gokhlayeh@186
|
1579 # SCAN CORE
|
gokhlayeh@186
|
1580 ########################
|
paul@430
|
1581 # Includes various scan core-functions. It's not intended to be used
|
gokhlayeh@186
|
1582 # directly : prefer scan wrappers in next section.
|
gokhlayeh@186
|
1583
|
gokhlayeh@186
|
1584 look_for_dep()
|
gokhlayeh@186
|
1585 {
|
gokhlayeh@186
|
1586 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
slaxemulator@516
|
1587 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1588 | cut -f 2
|
gokhlayeh@186
|
1589 else
|
slaxemulator@516
|
1590 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1591 cut -f 2
|
gokhlayeh@186
|
1592 fi
|
gokhlayeh@186
|
1593 }
|
gokhlayeh@186
|
1594
|
gokhlayeh@186
|
1595 look_for_bdep()
|
gokhlayeh@186
|
1596 {
|
gokhlayeh@186
|
1597 look_for_all
|
gokhlayeh@186
|
1598 }
|
gokhlayeh@186
|
1599
|
gokhlayeh@186
|
1600 look_for_all()
|
gokhlayeh@186
|
1601 {
|
gokhlayeh@186
|
1602 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
slaxemulator@516
|
1603 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1604 | cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1605 else
|
slaxemulator@516
|
1606 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1607 cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1608 fi
|
gokhlayeh@186
|
1609 }
|
gokhlayeh@186
|
1610
|
gokhlayeh@186
|
1611 look_for_rdep()
|
gokhlayeh@186
|
1612 {
|
slaxemulator@516
|
1613 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | cut -f 1
|
gokhlayeh@186
|
1614 if [ "$undigest" ]; then
|
slaxemulator@516
|
1615 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt | cut -f 1); do
|
gokhlayeh@186
|
1616 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1617 echo "$rdep"
|
gokhlayeh@186
|
1618 fi
|
gokhlayeh@186
|
1619 done
|
gokhlayeh@186
|
1620 fi
|
gokhlayeh@186
|
1621 }
|
gokhlayeh@186
|
1622
|
gokhlayeh@186
|
1623 look_for_rbdep()
|
gokhlayeh@186
|
1624 {
|
slaxemulator@516
|
1625 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@195
|
1626 cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1
|
gokhlayeh@186
|
1627 if [ "$undigest" ]; then
|
slaxemulator@516
|
1628 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@195
|
1629 | cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1); do
|
gokhlayeh@186
|
1630 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1631 echo "$rdep"
|
gokhlayeh@186
|
1632 fi
|
gokhlayeh@186
|
1633 done
|
gokhlayeh@186
|
1634 fi
|
gokhlayeh@186
|
1635 }
|
gokhlayeh@186
|
1636
|
gokhlayeh@186
|
1637 # Return WANTED if it exists.
|
gokhlayeh@186
|
1638 look_for_wanted()
|
gokhlayeh@186
|
1639 {
|
gokhlayeh@186
|
1640 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
slaxemulator@516
|
1641 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1642 else
|
slaxemulator@516
|
1643 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1644 fi
|
gokhlayeh@186
|
1645 }
|
gokhlayeh@186
|
1646
|
gokhlayeh@186
|
1647 # Return packages which wants PACKAGE.
|
gokhlayeh@186
|
1648 look_for_rwanted()
|
gokhlayeh@186
|
1649 {
|
slaxemulator@516
|
1650 grep $'\t'$PACKAGE$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1
|
gokhlayeh@186
|
1651 if [ "$undigest" ]; then
|
slaxemulator@516
|
1652 for rwanted in $(grep $'\t'$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 1); do
|
gokhlayeh@186
|
1653 if [ ! -f "$WOK/$rwanted/receipt" ]; then
|
gokhlayeh@186
|
1654 echo "$rwanted"
|
gokhlayeh@186
|
1655 fi
|
gokhlayeh@186
|
1656 done
|
gokhlayeh@186
|
1657 fi
|
gokhlayeh@186
|
1658 }
|
gokhlayeh@186
|
1659
|
gokhlayeh@186
|
1660 look_for_dev()
|
gokhlayeh@186
|
1661 {
|
gokhlayeh@223
|
1662 WANTED=$(look_for_wanted)
|
gokhlayeh@223
|
1663 if [ "$WANTED" ]; then
|
gokhlayeh@223
|
1664 if [ "$undigest" ] && [ ! -f "$WOK/$WANTED/receipt" ]; then
|
gokhlayeh@223
|
1665 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1666 else
|
gokhlayeh@223
|
1667 [ -f "$WOK/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1668 fi
|
gokhlayeh@223
|
1669 fi
|
gokhlayeh@223
|
1670 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@223
|
1671 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1672 else
|
gokhlayeh@223
|
1673 [ -f "$WOK/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1674 fi
|
gokhlayeh@186
|
1675 }
|
gokhlayeh@186
|
1676
|
gokhlayeh@215
|
1677 with_dev()
|
gokhlayeh@215
|
1678 {
|
gokhlayeh@215
|
1679 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1680 echo $PACKAGE
|
gokhlayeh@215
|
1681 look_for_dev
|
gokhlayeh@215
|
1682 done
|
gokhlayeh@215
|
1683 }
|
gokhlayeh@215
|
1684
|
gokhlayeh@215
|
1685 with_wanted()
|
gokhlayeh@215
|
1686 {
|
gokhlayeh@215
|
1687 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1688 echo $PACKAGE
|
gokhlayeh@215
|
1689 look_for_wanted
|
gokhlayeh@215
|
1690 done
|
gokhlayeh@215
|
1691 }
|
gokhlayeh@215
|
1692
|
gokhlayeh@215
|
1693 use_wanted()
|
gokhlayeh@215
|
1694 {
|
gokhlayeh@215
|
1695 for input in $(cat); do
|
gokhlayeh@215
|
1696 { grep ^$input$'\t' $wan_db || echo $input
|
gokhlayeh@215
|
1697 } | sed 's/.*\t//'
|
gokhlayeh@215
|
1698 done
|
gokhlayeh@215
|
1699 }
|
gokhlayeh@215
|
1700
|
gokhlayeh@186
|
1701 ########################################################################
|
gokhlayeh@186
|
1702 # SCAN
|
gokhlayeh@186
|
1703 ########################
|
gokhlayeh@186
|
1704 # Use wok-wanted.txt and wok-depeds.txt to scan depends.
|
gokhlayeh@186
|
1705 # Option in command line (must be first arg) :
|
gokhlayeh@186
|
1706 # --look_for=bdep/rbdep - Look for depends or reverse depends.
|
gokhlayeh@186
|
1707 # --with_dev - Add development packages (*-dev) in the result.
|
gokhlayeh@186
|
1708 # --with_wanted - Add package+reverse wanted in the result.
|
gokhlayeh@186
|
1709 # --with_args - Include packages in argument in the result.
|
gokhlayeh@186
|
1710
|
gokhlayeh@186
|
1711 scan()
|
gokhlayeh@186
|
1712 {
|
gokhlayeh@186
|
1713 # Get packages in argument.
|
slaxemulator@326
|
1714 local PACKAGE=$PACKAGE WANTED=$WANTED pkg_list=
|
gokhlayeh@186
|
1715 for arg in $@; do
|
gokhlayeh@186
|
1716 [ "$arg" = "${arg#--}" ] || continue
|
gokhlayeh@186
|
1717 pkg_list="$pkg_list $arg"
|
gokhlayeh@186
|
1718 done
|
gokhlayeh@204
|
1719
|
gokhlayeh@186
|
1720 # Get options.
|
gokhlayeh@186
|
1721 [ "$pkg_list" ] || return
|
gokhlayeh@186
|
1722 local cooklist= look_for= with_dev= with_wanted= with_args= log_command="$0 $@" \
|
gokhlayeh@215
|
1723 get_options_list="look_for with_dev with_wanted with_args cooklist use_wanted"
|
gokhlayeh@186
|
1724 get_options
|
gokhlayeh@470
|
1725
|
gokhlayeh@470
|
1726 # Get db md5 to be able to check for changes latter.
|
gokhlayeh@470
|
1727 db_md5=$(md5sum $dep_db $wan_db)
|
gokhlayeh@186
|
1728
|
gokhlayeh@186
|
1729 # Cooklist is a special case where we need to modify a little
|
gokhlayeh@186
|
1730 # scan behavior
|
gokhlayeh@186
|
1731 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1732 gen_wan_db
|
gokhlayeh@204
|
1733 look_for=all && with_args=yes && with_dev= && with_wanted=
|
gokhlayeh@204
|
1734 filter=use_wanted
|
gokhlayeh@241
|
1735 if [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@241
|
1736 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1737 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@241
|
1738 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@241
|
1739 check_for_missing
|
gokhlayeh@241
|
1740 done
|
gokhlayeh@241
|
1741 append_to_dep()
|
gokhlayeh@241
|
1742 {
|
gokhlayeh@241
|
1743 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@241
|
1744 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1745 else
|
gokhlayeh@241
|
1746 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1747 fi
|
gokhlayeh@241
|
1748 }
|
gokhlayeh@241
|
1749 else
|
gokhlayeh@241
|
1750 append_to_dep()
|
gokhlayeh@241
|
1751 {
|
gokhlayeh@241
|
1752 check_for_commit && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1753 }
|
gokhlayeh@241
|
1754 fi
|
gokhlayeh@204
|
1755 else
|
gokhlayeh@204
|
1756 append_to_dep()
|
gokhlayeh@204
|
1757 {
|
gokhlayeh@204
|
1758 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@204
|
1759 }
|
gokhlayeh@240
|
1760 # If requested packages are not in dep_db, partial generation of this db is needed.
|
gokhlayeh@241
|
1761 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1762 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@240
|
1763 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@240
|
1764 plan_check_for_missing=yes
|
gokhlayeh@240
|
1765 check_for_missing
|
gokhlayeh@240
|
1766 done
|
gokhlayeh@240
|
1767 if [ "$plan_check_for_missing" ]; then
|
gokhlayeh@240
|
1768 append_to_dep()
|
gokhlayeh@240
|
1769 {
|
gokhlayeh@240
|
1770 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@240
|
1771 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1772 else
|
gokhlayeh@240
|
1773 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1774 fi
|
gokhlayeh@240
|
1775 }
|
gokhlayeh@240
|
1776 unset plan_check_for_missing
|
gokhlayeh@240
|
1777 fi
|
gokhlayeh@186
|
1778 fi
|
gokhlayeh@215
|
1779
|
gokhlayeh@204
|
1780 [ "$with_dev" ] && filter=with_dev
|
gokhlayeh@204
|
1781 [ "$with_wanted" ] && filter=with_wanted
|
gokhlayeh@204
|
1782 if [ "$filter" ]; then
|
gokhlayeh@291
|
1783 pkg_list=$(echo $pkg_list | $filter | sort -u)
|
gokhlayeh@204
|
1784 scan_pkg()
|
gokhlayeh@204
|
1785 {
|
gokhlayeh@204
|
1786 look_for_$look_for | $filter
|
gokhlayeh@204
|
1787 }
|
gokhlayeh@204
|
1788 else
|
gokhlayeh@204
|
1789 scan_pkg()
|
gokhlayeh@204
|
1790 {
|
gokhlayeh@204
|
1791 look_for_$look_for
|
gokhlayeh@204
|
1792 }
|
gokhlayeh@204
|
1793 fi
|
gokhlayeh@215
|
1794 touch $tmp/dep
|
gokhlayeh@204
|
1795 for PACKAGE in $pkg_list; do
|
gokhlayeh@204
|
1796 [ "$with_args" ] && append_to_dep
|
gokhlayeh@204
|
1797 scan_pkg
|
gokhlayeh@186
|
1798 done | tr ' ' '\n' | sort -u > $tmp/list
|
gokhlayeh@186
|
1799 [ "$look_for" = bdep ] && look_for=dep
|
gokhlayeh@186
|
1800 while [ -s $tmp/list ]; do
|
gokhlayeh@186
|
1801 PACKAGE=$(sed 1!d $tmp/list)
|
gokhlayeh@186
|
1802 sed 1d -i $tmp/list
|
gokhlayeh@204
|
1803 append_to_dep
|
gokhlayeh@204
|
1804 for pkg in $(scan_pkg); do
|
gokhlayeh@204
|
1805 if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then
|
gokhlayeh@204
|
1806 echo $pkg >> $tmp/list
|
gokhlayeh@186
|
1807 fi
|
gokhlayeh@186
|
1808 done
|
gokhlayeh@186
|
1809 done
|
gokhlayeh@204
|
1810 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1811 mv $tmp/dep $tmp/cooklist
|
gokhlayeh@215
|
1812 else
|
gokhlayeh@204
|
1813 cat $tmp/dep | sort -u
|
gokhlayeh@186
|
1814 fi
|
gokhlayeh@204
|
1815 rm -f $tmp/dep $tmp/list
|
gokhlayeh@475
|
1816 sort -o $dep_db $dep_db
|
gokhlayeh@475
|
1817 sort -o $wan_db $wan_db
|
gokhlayeh@470
|
1818 if [ "$db_md5" != "$(md5sum $dep_db $wan_db)" ]; then
|
gokhlayeh@470
|
1819 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt ||
|
gokhlayeh@470
|
1820 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@240
|
1821 fi
|
gokhlayeh@186
|
1822 }
|
gokhlayeh@186
|
1823
|
gokhlayeh@186
|
1824 ########################################################################
|
paul@430
|
1825 # This section contains functions to check the package repository and
|
gokhlayeh@186
|
1826 # find which packages to cook.
|
gokhlayeh@186
|
1827 ########################
|
gokhlayeh@186
|
1828
|
gokhlayeh@240
|
1829 check_for_missing()
|
gokhlayeh@240
|
1830 {
|
slaxemulator@326
|
1831 local PACKAGE=$PACKAGE
|
gokhlayeh@240
|
1832 if ! check_for_pkg_in_wok; then
|
gokhlayeh@240
|
1833 [ "$?" = 2 ] && return 1
|
gokhlayeh@240
|
1834 return
|
gokhlayeh@240
|
1835 fi
|
gokhlayeh@241
|
1836 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1837 source_receipt
|
gokhlayeh@240
|
1838 PACKAGE=${WANTED:-$PACKAGE}
|
gokhlayeh@240
|
1839 update_wan_db
|
gokhlayeh@240
|
1840 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@240
|
1841 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1842 source_receipt
|
gokhlayeh@240
|
1843 update_dep_db
|
gokhlayeh@240
|
1844 done
|
gokhlayeh@240
|
1845 }
|
gokhlayeh@240
|
1846
|
gokhlayeh@186
|
1847 check_for_commit()
|
gokhlayeh@186
|
1848 {
|
gokhlayeh@204
|
1849 if ! check_for_pkg_in_wok; then
|
gokhlayeh@204
|
1850 [ "$?" = 2 ] && return 1
|
gokhlayeh@204
|
1851 return
|
gokhlayeh@204
|
1852 fi
|
gokhlayeh@204
|
1853 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@204
|
1854 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1855 source_receipt
|
gokhlayeh@204
|
1856
|
gokhlayeh@186
|
1857 # We use md5 of cooking stuff in the packaged receipt to check
|
gokhlayeh@186
|
1858 # commit. We look consecutively in 3 different locations :
|
gokhlayeh@204
|
1859 # - in the wok/PACKAGE/taz/* folder
|
gokhlayeh@186
|
1860 # - in the receipt in the package in incoming repository
|
gokhlayeh@186
|
1861 # - in the receipt in the package in packages repository
|
paul@430
|
1862 # If md5sums match, there's no commit.
|
gokhlayeh@186
|
1863 check_for_commit_using_md5sum()
|
gokhlayeh@186
|
1864 {
|
gokhlayeh@186
|
1865 if [ ! -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1866 sed -n '/# md5sum of cooking stuff :/,$p' receipt | \
|
gokhlayeh@186
|
1867 sed -e 1d -e 's/^# //' > $WOK/$PACKAGE/md5
|
gokhlayeh@186
|
1868 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1869 fi
|
gokhlayeh@204
|
1870
|
gokhlayeh@186
|
1871 if [ -s md5 ]; then
|
gokhlayeh@186
|
1872 if md5sum -cs md5; then
|
gokhlayeh@204
|
1873
|
gokhlayeh@204
|
1874 # If md5sum check if ok, check for new/missing files in
|
gokhlayeh@204
|
1875 # cooking stuff.
|
gokhlayeh@204
|
1876 for file in $([ -f receipt ] && echo receipt; \
|
gokhlayeh@204
|
1877 [ -f description.txt ] && echo description.txt; \
|
gokhlayeh@204
|
1878 [ -d stuff ] && find stuff); do
|
gokhlayeh@204
|
1879 if ! fgrep -q " $file" md5; then
|
gokhlayeh@186
|
1880 set_commited
|
gokhlayeh@186
|
1881 fi
|
gokhlayeh@186
|
1882 done
|
gokhlayeh@186
|
1883 else
|
gokhlayeh@186
|
1884 set_commited
|
gokhlayeh@186
|
1885 fi
|
gokhlayeh@186
|
1886 else
|
gokhlayeh@204
|
1887 set_commited
|
gokhlayeh@186
|
1888 fi
|
gokhlayeh@186
|
1889 }
|
gokhlayeh@186
|
1890 set_commited()
|
gokhlayeh@186
|
1891 {
|
gokhlayeh@204
|
1892 ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/commit &&
|
gokhlayeh@204
|
1893 echo $PACKAGE >> $PACKAGES_REPOSITORY/commit
|
gokhlayeh@186
|
1894 gen_cookmd5
|
gokhlayeh@204
|
1895 update_dep_db
|
gokhlayeh@186
|
1896 }
|
gokhlayeh@195
|
1897 taz_dir=$(echo $WOK/$PACKAGE/taz/$PACKAGE-* | fgrep -v '*')
|
gokhlayeh@186
|
1898 if [ -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1899 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1900 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1901 elif [ "$taz_dir" ]; then
|
gokhlayeh@186
|
1902 cd $taz_dir
|
gokhlayeh@186
|
1903 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1904 else
|
gokhlayeh@195
|
1905 pkg=$(echo $INCOMING_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@195
|
1906 [ "$pkg" ] || pkg=$(echo $PACKAGES_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@186
|
1907 if [ "$pkg" ]; then
|
gokhlayeh@186
|
1908 get_pkg_files $pkg
|
gokhlayeh@186
|
1909 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1910 rm -r $pkg_files_dir
|
gokhlayeh@204
|
1911 else
|
gokhlayeh@204
|
1912 set_commited
|
gokhlayeh@186
|
1913 fi
|
gokhlayeh@186
|
1914 fi
|
gokhlayeh@204
|
1915 [ "$forced" ] || echo $PACKAGE >> $tmp/checked
|
gokhlayeh@186
|
1916 done
|
gokhlayeh@204
|
1917 return
|
gokhlayeh@186
|
1918 }
|
gokhlayeh@186
|
1919
|
gokhlayeh@186
|
1920 gen_cook_list()
|
gokhlayeh@186
|
1921 {
|
gokhlayeh@204
|
1922 report step "Scanning wok"
|
gokhlayeh@204
|
1923 if [ "$pkg" ]; then
|
gokhlayeh@204
|
1924 scan $pkg --cooklist
|
gokhlayeh@204
|
1925 else
|
gokhlayeh@204
|
1926 scan `cat $cooklist` --cooklist
|
gokhlayeh@204
|
1927 fi
|
gokhlayeh@204
|
1928 report end-step
|
gokhlayeh@209
|
1929
|
gokhlayeh@209
|
1930 [ -s $tmp/checked ] || [ -s $tmp/cooklist ] || return
|
gokhlayeh@209
|
1931
|
gokhlayeh@209
|
1932 # Core toolchain should not be cooked unless cook-toolchain is used.
|
gokhlayeh@209
|
1933 if ! [ -f /etc/config.site.tmptoolchain ] ; then
|
gokhlayeh@209
|
1934 for PACKAGE in $(scan gcc --look_for=all --with_args --with_wanted); do
|
gokhlayeh@209
|
1935 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/blocked || \
|
gokhlayeh@209
|
1936 echo $PACKAGE >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@209
|
1937 done
|
gokhlayeh@209
|
1938 fi
|
gokhlayeh@313
|
1939
|
gokhlayeh@241
|
1940 if [ -s $PACKAGES_REPOSITORY/commit ] && [ "$COMMAND" != gen-cooklist ]; then
|
gokhlayeh@186
|
1941 cd $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1942 for PACKAGE in $(cat commit); do
|
gokhlayeh@186
|
1943 WANTED="$(look_for_wanted)"
|
gokhlayeh@186
|
1944 if [ "$WANTED" ]; then
|
gokhlayeh@204
|
1945 grep -q ^$WANTED$ broken cooklist blocked commit && continue
|
gokhlayeh@186
|
1946 fi
|
gokhlayeh@204
|
1947 grep -q ^$PACKAGE$ blocked cooklist && continue
|
gokhlayeh@204
|
1948 echo $PACKAGE >> cooklist
|
gokhlayeh@186
|
1949 done
|
gokhlayeh@186
|
1950 fi
|
gokhlayeh@186
|
1951 sort_cooklist
|
gokhlayeh@186
|
1952 }
|
gokhlayeh@186
|
1953
|
gokhlayeh@186
|
1954 sort_cooklist()
|
gokhlayeh@186
|
1955 {
|
gokhlayeh@266
|
1956 if [ "$(sed 1!d $PACKAGES_REPOSITORY/cookorder.txt)" = "#PlanSort" ]; then
|
gokhlayeh@266
|
1957 sed 1d -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@470
|
1958 sort_db
|
gokhlayeh@266
|
1959 fi
|
gokhlayeh@313
|
1960 report step "Generating cooklist"
|
gokhlayeh@204
|
1961 if [ -f "$tmp/checked" ]; then
|
gokhlayeh@204
|
1962 rm -f $tmp/cooklist
|
gokhlayeh@204
|
1963 cat $tmp/checked | while read PACKAGE; do
|
gokhlayeh@204
|
1964 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/cooklist && \
|
gokhlayeh@204
|
1965 echo $PACKAGE >> $tmp/cooklist
|
gokhlayeh@204
|
1966 done
|
gokhlayeh@209
|
1967 elif ! [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@209
|
1968 cat $PACKAGES_REPOSITORY/blocked | while read PACKAGE; do
|
gokhlayeh@209
|
1969 sed "/^$PACKAGE/d" -i $tmp/cooklist
|
gokhlayeh@209
|
1970 done
|
gokhlayeh@204
|
1971 fi
|
gokhlayeh@313
|
1972 report end-step
|
gokhlayeh@313
|
1973 [ -s $tmp/cooklist ] || return
|
gokhlayeh@215
|
1974
|
gokhlayeh@313
|
1975 report step "Sorting cooklist"
|
gokhlayeh@204
|
1976 for PACKAGE in $(cat $tmp/cooklist); do
|
gokhlayeh@204
|
1977 WANTED="$(look_for_wanted)"
|
gokhlayeh@204
|
1978 [ "$WANTED" ] || continue
|
gokhlayeh@297
|
1979 if grep -q ^$WANTED$ $PACKAGES_REPOSITORY/broken $tmp/cooklist; then
|
gokhlayeh@186
|
1980 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1981 elif [ ! -d $WOK/$WANTED/install ]; then
|
gokhlayeh@204
|
1982 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1983 echo $WANTED >> $tmp/cooklist
|
gokhlayeh@186
|
1984 fi
|
gokhlayeh@186
|
1985 done
|
gokhlayeh@186
|
1986
|
gokhlayeh@204
|
1987 # Use cookorder.txt to sort cooklist.
|
gokhlayeh@204
|
1988 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
1989 cat $PACKAGES_REPOSITORY/cookorder.txt | while read PACKAGE; do
|
gokhlayeh@204
|
1990 if grep -q ^$PACKAGE$ $tmp/cooklist; then
|
gokhlayeh@204
|
1991 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1992 echo $PACKAGE >> $tmp/cooklist.tmp
|
gokhlayeh@204
|
1993 fi
|
gokhlayeh@204
|
1994 done
|
gokhlayeh@204
|
1995
|
paul@430
|
1996 # Remaining packages in cooklist are those without compile_rules.
|
gokhlayeh@204
|
1997 # They can be cooked first in any order.
|
gokhlayeh@204
|
1998 if [ -f $tmp/cooklist.tmp ]; then
|
gokhlayeh@204
|
1999 cat $tmp/cooklist.tmp >> $tmp/cooklist
|
gokhlayeh@204
|
2000 rm $tmp/cooklist.tmp
|
gokhlayeh@204
|
2001 fi
|
gokhlayeh@204
|
2002
|
gokhlayeh@204
|
2003 cat $tmp/cooklist
|
gokhlayeh@204
|
2004 [ "$cooklist" = "$PACKAGES_REPOSITORY/cooklist" ] && \
|
gokhlayeh@204
|
2005 cat $tmp/cooklist > $cooklist
|
gokhlayeh@204
|
2006 fi
|
gokhlayeh@204
|
2007
|
gokhlayeh@186
|
2008 report end-step
|
gokhlayeh@186
|
2009 }
|
gokhlayeh@186
|
2010
|
gokhlayeh@284
|
2011 look_for_missing_pkg()
|
gokhlayeh@284
|
2012 {
|
gokhlayeh@284
|
2013 for pkg in $(cat $PACKAGES_REPOSITORY/$1); do
|
gokhlayeh@284
|
2014 grep -q ^$pkg$ $INCOMING_REPOSITORY/packages.txt \
|
gokhlayeh@284
|
2015 $PACKAGES_REPOSITORY/packages.txt || \
|
gokhlayeh@284
|
2016 continue
|
gokhlayeh@284
|
2017 echo $pkg
|
gokhlayeh@284
|
2018 done
|
gokhlayeh@284
|
2019 }
|
gokhlayeh@284
|
2020
|
gokhlayeh@186
|
2021 check_for_incoming()
|
gokhlayeh@186
|
2022 {
|
paul@430
|
2023 report step "Checking that all packages were cooked OK"
|
gokhlayeh@204
|
2024 [ -s $INCOMING_REPOSITORY/packages.desc ] || {
|
gokhlayeh@204
|
2025 echo "No packages in $INCOMING_REPOSITORY."
|
gokhlayeh@307
|
2026 report end-step; return; }
|
gokhlayeh@204
|
2027 if [ -s $PACKAGES_REPOSITORY/broken ]; then
|
gokhlayeh@290
|
2028 missingpkg=$(look_for_missing_pkg broken)
|
gokhlayeh@290
|
2029 if [ "$missingpkg" ]; then
|
paul@430
|
2030 echo "Don't move incoming packages to main repository because these ones are broken:" >&2
|
gokhlayeh@290
|
2031 echo "$missingpkg"
|
gokhlayeh@307
|
2032 report end-step
|
gokhlayeh@307
|
2033 return 1
|
gokhlayeh@290
|
2034 fi
|
gokhlayeh@186
|
2035 fi
|
gokhlayeh@204
|
2036 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
2037 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
2038 if [ "$missingpkg" ]; then
|
paul@430
|
2039 echo "Don't move incoming packages to main repository because these ones need to be cooked:" >&2
|
gokhlayeh@290
|
2040 echo "$missingpkg"
|
gokhlayeh@307
|
2041 report end-step
|
gokhlayeh@307
|
2042 return 1
|
gokhlayeh@290
|
2043 fi
|
gokhlayeh@204
|
2044 fi
|
gokhlayeh@306
|
2045 incoming_pkgs="$(cut -f 1 -d '|' $INCOMING_REPOSITORY/packages.desc)"
|
gokhlayeh@214
|
2046 if ! [ "$forced" ]; then
|
gokhlayeh@214
|
2047 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@313
|
2048 pkg="$incoming_pkgs"
|
gokhlayeh@214
|
2049 gen_cook_list
|
gokhlayeh@214
|
2050 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
2051 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
2052 if [ "$missingpkg" ]; then
|
paul@430
|
2053 echo "Don't move incoming packages to main repository because these ones need to be cooked:" >&2
|
gokhlayeh@290
|
2054 echo "$missingpkg"
|
gokhlayeh@307
|
2055 report end-step
|
gokhlayeh@307
|
2056 return 1
|
gokhlayeh@290
|
2057 fi
|
gokhlayeh@214
|
2058 fi
|
gokhlayeh@204
|
2059 fi
|
gokhlayeh@313
|
2060
|
gokhlayeh@204
|
2061 report step "Moving incoming packages to main repository"
|
gokhlayeh@204
|
2062 unset EXTRAVERSION
|
gokhlayeh@306
|
2063 for PACKAGE in $incoming_pkgs; do
|
gokhlayeh@186
|
2064 prev_VERSION=$(get_pkg_version $PACKAGES_REPOSITORY)
|
gokhlayeh@204
|
2065 VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
2066 remove_previous_package $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
2067 echo "Moving $PACKAGE..."
|
gokhlayeh@204
|
2068 mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
2069 touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg
|
gokhlayeh@266
|
2070 previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
2071 sed -e "/^$PACKAGE:main/d" \
|
slaxemulator@275
|
2072 -e "s/^$PACKAGE:incoming/$PACKAGE:main/" \
|
gokhlayeh@266
|
2073 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
2074 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
2075 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2076 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
2077 fi
|
gokhlayeh@204
|
2078 done
|
gokhlayeh@204
|
2079 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
2080 packages.txt; do
|
gokhlayeh@204
|
2081 echo -n "" > $INCOMING_REPOSITORY/$file
|
gokhlayeh@204
|
2082 done
|
gokhlayeh@204
|
2083 rm -r $INCOMING_REPOSITORY/files.list.lzma
|
gokhlayeh@186
|
2084 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@313
|
2085
|
gokhlayeh@313
|
2086 report step "Updating flavors"
|
gokhlayeh@313
|
2087 if [ -x /usr/bin/tazlito ] || [ -x /usr/bin/clean-chroot ]; then
|
gokhlayeh@313
|
2088 if ! [ -x /usr/bin/tazlito ]; then
|
gokhlayeh@313
|
2089 tazpkg get-install tazlito
|
gokhlayeh@313
|
2090 fi
|
gokhlayeh@313
|
2091
|
gokhlayeh@313
|
2092 # Handle cases where tazwok is used into main system;
|
gokhlayeh@313
|
2093 # Handle cases where SLITAZ_DIR is not /home/slitaz.
|
gokhlayeh@313
|
2094 [ -L /home/slitaz/flavors ] && rm /home/slitaz/flavors
|
gokhlayeh@313
|
2095 mkdir -p /home/slitaz
|
gokhlayeh@313
|
2096 ln -s $LOCAL_REPOSITORY/flavors /home/slitaz/flavors
|
pascal@495
|
2097 cd /home/slitaz/flavors
|
pascal@495
|
2098 [ -d .hg ] && hg pull -u
|
gokhlayeh@313
|
2099
|
gokhlayeh@313
|
2100 cd $LOCAL_REPOSITORY/packages
|
gokhlayeh@313
|
2101 for i in $LOCAL_REPOSITORY/flavors/*; do
|
gokhlayeh@331
|
2102 [ -d "$i" ] || continue
|
gokhlayeh@313
|
2103 tazlito pack-flavor ${i##*/}
|
gokhlayeh@313
|
2104 done
|
gokhlayeh@313
|
2105
|
gokhlayeh@313
|
2106 noheader=""
|
gokhlayeh@313
|
2107 for i in *.flavor; do
|
gokhlayeh@313
|
2108 tazlito show-flavor $i --brief $noheader
|
gokhlayeh@313
|
2109 noheader="--noheader"
|
gokhlayeh@313
|
2110 done > flavors.list
|
gokhlayeh@313
|
2111 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@313
|
2112 else
|
paul@430
|
2113 echo "Can't create up-to-date flavors because the tazlito package is missing." >&2
|
gokhlayeh@313
|
2114 fi
|
gokhlayeh@313
|
2115 report end-step
|
gokhlayeh@186
|
2116 }
|
gokhlayeh@186
|
2117
|
gokhlayeh@186
|
2118 ########################################################################
|
gokhlayeh@186
|
2119 # TAZWOK MAIN FUNCTIONS
|
gokhlayeh@186
|
2120 ########################
|
gokhlayeh@186
|
2121
|
gokhlayeh@186
|
2122 clean()
|
gokhlayeh@186
|
2123 {
|
gokhlayeh@186
|
2124 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
2125 ls -A $WOK/$PACKAGE | grep -q -v -e ^receipt$ -e ^description.txt$ \
|
gokhlayeh@186
|
2126 -e ^stuff$ || return
|
gokhlayeh@186
|
2127
|
gokhlayeh@249
|
2128 [ "$COMMAND" = clean-wok ] || report step "Cleaning $PACKAGE"
|
gokhlayeh@186
|
2129 # Check for clean_wok function.
|
gokhlayeh@186
|
2130 if grep -q ^clean_wok $RECEIPT; then
|
gokhlayeh@186
|
2131 clean_wok
|
gokhlayeh@186
|
2132 fi
|
gokhlayeh@186
|
2133 # Clean should only have a receipt, stuff and optional desc.
|
gokhlayeh@186
|
2134 for f in `ls .`
|
gokhlayeh@186
|
2135 do
|
gokhlayeh@186
|
2136 case $f in
|
gokhlayeh@250
|
2137 receipt|stuff|description.txt|md5)
|
gokhlayeh@186
|
2138 continue ;;
|
gokhlayeh@186
|
2139 *)
|
gokhlayeh@263
|
2140 rm -rf $f ;;
|
gokhlayeh@186
|
2141 esac
|
gokhlayeh@186
|
2142 done
|
gokhlayeh@262
|
2143 [ "$COMMAND" != clean-wok ] && report end-step
|
gokhlayeh@186
|
2144 }
|
gokhlayeh@186
|
2145
|
gokhlayeh@186
|
2146 # Configure and make a package with the receipt.
|
gokhlayeh@186
|
2147 compile_package()
|
gokhlayeh@186
|
2148 {
|
gokhlayeh@186
|
2149 check_for_package_on_cmdline
|
gokhlayeh@186
|
2150
|
gokhlayeh@186
|
2151 # Include the receipt to get all needed variables and functions
|
gokhlayeh@186
|
2152 # and cd into the work directory to start the work.
|
gokhlayeh@186
|
2153 check_for_receipt
|
gokhlayeh@186
|
2154 source_receipt
|
gokhlayeh@186
|
2155
|
gokhlayeh@186
|
2156 # Log the package name and date.
|
gokhlayeh@186
|
2157 echo "date `date +%Y%m%d\ \%H:%M:%S`" >> $LOG
|
gokhlayeh@186
|
2158 echo "package $PACKAGE (compile)" >> $LOG
|
gokhlayeh@186
|
2159
|
gokhlayeh@186
|
2160 # Set wanted $src variable to help compiling.
|
gokhlayeh@186
|
2161 [ ! "$src" ] && set_src_path
|
gokhlayeh@186
|
2162 check_for_build_depends || return 1
|
gokhlayeh@186
|
2163 check_for_wanted
|
gokhlayeh@186
|
2164 unset target
|
gokhlayeh@186
|
2165 check_for_tarball && check_for_compile_rules
|
gokhlayeh@186
|
2166 }
|
gokhlayeh@186
|
2167
|
gokhlayeh@186
|
2168 # Cook command also include all features to manage lists which keep
|
gokhlayeh@186
|
2169 # track of wok/packages state.
|
gokhlayeh@186
|
2170 cook()
|
gokhlayeh@186
|
2171 {
|
gokhlayeh@186
|
2172 cook_code=
|
gokhlayeh@186
|
2173 set_common_path
|
gokhlayeh@186
|
2174 check_for_receipt
|
gokhlayeh@186
|
2175 source_receipt
|
gokhlayeh@186
|
2176
|
gokhlayeh@186
|
2177 # Define log path and start report.
|
gokhlayeh@186
|
2178 [ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
2179 report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html
|
pascal@349
|
2180 echo "$PACKAGE" > $LOCAL_REPOSITORY/log/package
|
gokhlayeh@186
|
2181 report step "Cooking $PACKAGE"
|
gokhlayeh@186
|
2182 report open-bloc
|
gokhlayeh@186
|
2183
|
gokhlayeh@186
|
2184 clean $PACKAGE
|
gokhlayeh@186
|
2185 [ -s $tmp/cooklist ] && sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@381
|
2186
|
gokhlayeh@186
|
2187 if compile_package; then
|
gokhlayeh@215
|
2188 remove_src
|
gokhlayeh@186
|
2189 refresh_packages_from_compile
|
gokhlayeh@186
|
2190 gen_package
|
gokhlayeh@186
|
2191
|
gokhlayeh@186
|
2192 # Update packages-incoming repository.
|
gokhlayeh@186
|
2193 store_pkgname=$PACKAGE
|
gokhlayeh@186
|
2194 pkg_repository=$INCOMING_REPOSITORY
|
gokhlayeh@186
|
2195 update_packages_db
|
gokhlayeh@186
|
2196
|
gokhlayeh@186
|
2197 PACKAGE=$store_pkgname
|
gokhlayeh@186
|
2198 unset store_pkgname
|
gokhlayeh@186
|
2199
|
gokhlayeh@186
|
2200 # Upgrade to cooked packages if it was previously installed.
|
paul@430
|
2201 report step "Looking for package(s) to upgrade"
|
gokhlayeh@186
|
2202 for pkg in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@186
|
2203 if [ -d $INSTALLED/$pkg ]; then
|
gokhlayeh@186
|
2204 tazpkg get-install $pkg --forced
|
gokhlayeh@186
|
2205 fi
|
gokhlayeh@186
|
2206 done
|
gokhlayeh@186
|
2207 report end-step
|
gokhlayeh@186
|
2208 else
|
gokhlayeh@490
|
2209 for PACKAGE in $(look_for_wanted) $PACKAGE; do
|
gokhlayeh@490
|
2210 set_pkg_broken
|
gokhlayeh@490
|
2211 done
|
gokhlayeh@186
|
2212 cook_code=1
|
gokhlayeh@186
|
2213 fi
|
gokhlayeh@186
|
2214
|
gokhlayeh@186
|
2215 # Remove build_depends in cook mode (if in cooklist, it's done when
|
gokhlayeh@186
|
2216 # checking build_depends of next package and we remove only unneeded
|
gokhlayeh@186
|
2217 # packages to keep chroot minimal and gain some time).
|
gokhlayeh@210
|
2218 if [ "$COMMAND" = cook ]; then
|
gokhlayeh@210
|
2219 remove_build_depends $MISSING_PACKAGE
|
gokhlayeh@210
|
2220 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@210
|
2221 fi
|
gokhlayeh@210
|
2222
|
gokhlayeh@186
|
2223 # Regen the cooklist if it was planned and command is not cook.
|
gokhlayeh@186
|
2224 [ "$regen_cooklist" ] && unset regen_cooklist && \
|
gokhlayeh@186
|
2225 [ "$COMMAND" != cook ] && sort_cooklist
|
gokhlayeh@186
|
2226
|
paul@430
|
2227 # Some hacks to set the bloc & function status as failed if cook has
|
gokhlayeh@186
|
2228 # failed.
|
gokhlayeh@186
|
2229 report_return_code=$cook_code
|
gokhlayeh@186
|
2230 report close-bloc
|
gokhlayeh@186
|
2231 report end-sublog
|
pascal@351
|
2232 rm -f $LOCAL_REPOSITORY/log/package
|
gokhlayeh@186
|
2233 return $cook_code
|
gokhlayeh@186
|
2234 }
|
gokhlayeh@186
|
2235
|
gokhlayeh@186
|
2236 cook_list()
|
gokhlayeh@186
|
2237 {
|
gokhlayeh@204
|
2238 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
2239 if [ -f /usr/bin/tazchroot ]; then
|
paul@430
|
2240 # Note : options -main variables- are automatically kept by
|
gokhlayeh@204
|
2241 # the sub-applications tazchroot/tazwok; as well as report data.
|
gokhlayeh@204
|
2242 cd $LOCAL_REPOSITORY
|
gokhlayeh@204
|
2243 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@204
|
2244 tazchroot tazwok cook-list --SLITAZ_DIR=$SLITAZ_DIR --SLITAZ_VERSION=$SLITAZ_VERSION ${undigest:+ --undigest=$undigest}
|
gokhlayeh@204
|
2245 return
|
gokhlayeh@204
|
2246 fi
|
gokhlayeh@204
|
2247 while [ -s $tmp/cooklist ]; do
|
gokhlayeh@204
|
2248 PACKAGE=$(sed 1!d $tmp/cooklist)
|
gokhlayeh@204
|
2249 cook
|
gokhlayeh@204
|
2250 done
|
gokhlayeh@204
|
2251 remove_build_depends $MISSING_PACKAGE $remove_later
|
gokhlayeh@210
|
2252 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@204
|
2253 else
|
gokhlayeh@186
|
2254 echo "Nothing to cook."
|
gokhlayeh@186
|
2255 return
|
gokhlayeh@186
|
2256 fi
|
gokhlayeh@186
|
2257 }
|
gokhlayeh@186
|
2258
|
gokhlayeh@186
|
2259 configure_tazchroot()
|
gokhlayeh@186
|
2260 {
|
gokhlayeh@190
|
2261 cat > $LOCAL_REPOSITORY/tazchroot.conf << EOF
|
gokhlayeh@186
|
2262 # Tazchroot configuration file - created by tazwok.
|
gokhlayeh@186
|
2263
|
paul@430
|
2264 # Default chroot path.
|
gokhlayeh@186
|
2265 SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@186
|
2266 SLITAZ_VERSION=$SLITAZ_VERSION
|
gokhlayeh@186
|
2267 $( [ "$undigest" ] && echo "undigest=$undigest" )
|
gokhlayeh@186
|
2268 LOCAL_REPOSITORY=$SLITAZ_DIR/$(if [ "$undigest" ]; then echo '$undigest'; else echo '$SLITAZ_VERSION'; fi)
|
gokhlayeh@186
|
2269 chroot_dir=\$LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
2270
|
paul@430
|
2271 # Default scripts path (these scripts are added to the
|
paul@430
|
2272 # $chroot_dir/usr/bin and can be called with tazchroot script).
|
gokhlayeh@314
|
2273 script_dir=/usr/lib/slitaz/chroot-scripts/tazwok
|
gokhlayeh@186
|
2274
|
gokhlayeh@186
|
2275 # List of directories to mount.
|
gokhlayeh@318
|
2276 list_dir="$(for dir in packages wok src packages-incoming log flavors iso clean-wok; do echo $LOCAL_REPOSITORY/$dir; done)
|
gokhlayeh@186
|
2277 $SLITAZ_LOG$( [ "$undigest" ] && echo -e "\n$SLITAZ_DIR/$SLITAZ_VERSION/packages" )"
|
gokhlayeh@186
|
2278
|
gokhlayeh@186
|
2279 create_chroot()
|
gokhlayeh@186
|
2280 {
|
gokhlayeh@186
|
2281 mkdir -p \$chroot_dir
|
gokhlayeh@186
|
2282 for pkg in \$(tazwok build-depends toolchain --SLITAZ_DIR=\$SLITAZ_DIR --SLITAZ_VERSION=\$SLITAZ_VERSION${undigest:+ --undigest=\$undigest}); do
|
gokhlayeh@186
|
2283 tazpkg get-install \$pkg --root="\$chroot_dir"
|
gokhlayeh@186
|
2284 done
|
gokhlayeh@186
|
2285
|
gokhlayeh@186
|
2286 # Store list of installed packages needed by cleanchroot.
|
gokhlayeh@194
|
2287 ls -1 \$chroot_dir/\$INSTALLED > \$chroot_dir/\$LOCALSTATE/chroot-pkgs
|
gokhlayeh@186
|
2288
|
gokhlayeh@186
|
2289 sed -e "s~^SLITAZ_DIR=.*~SLITAZ_DIR=\$SLITAZ_DIR~" \\
|
gokhlayeh@186
|
2290 -e "s/^SLITAZ_VERSION=.*/SLITAZ_VERSION=\$SLITAZ_VERSION/" \\
|
gokhlayeh@186
|
2291 -i \$chroot_dir/etc/slitaz/slitaz.conf
|
gokhlayeh@443
|
2292 echo \$SLITAZ_VERSION > \$chroot_dir/etc/slitaz-release
|
gokhlayeh@186
|
2293 $( [ "$undigest" ] && echo ' echo "undigest='"$undigest"'" >> $chroot_dir/etc/slitaz/tazwok.conf')
|
gokhlayeh@186
|
2294 sed 's/LC_ALL/LC_ALL=POSIX/' -i \$chroot_dir/etc/profile
|
paul@430
|
2295 # The build bot may run in a sandbox: link sandbox lockfile.
|
slaxemulator@514
|
2296 [ -d \$LOCAL_REPOSITORY/sandbox ] && ln -s \$LOCAL_REPOSITORY/sandbox/proc/1 \$chroot_dir/proc/1
|
gokhlayeh@186
|
2297 }
|
gokhlayeh@186
|
2298
|
gokhlayeh@186
|
2299 mount_chroot()
|
gokhlayeh@186
|
2300 {
|
gokhlayeh@186
|
2301 cp -a /etc/resolv.conf \$chroot_dir/etc/resolv.conf
|
gokhlayeh@194
|
2302 echo "\$LOCAL_REPOSITORY/packages" > \$chroot_dir\$LOCALSTATE/mirror
|
gokhlayeh@194
|
2303 mkdir -p \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming
|
gokhlayeh@194
|
2304 echo "\$LOCAL_REPOSITORY/packages-incoming" > \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming/mirror
|
gokhlayeh@194
|
2305 $( [ "$undigest" ] && echo ' mkdir -p $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION
|
gokhlayeh@194
|
2306 echo "$SLITAZ_DIR/$SLITAZ_VERSION/packages" > $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION/mirror' )
|
gokhlayeh@194
|
2307 echo -e "\${LOCAL_REPOSITORY##*/}-incoming\nmain" > \$chroot_dir\$LOCALSTATE/priority
|
gokhlayeh@440
|
2308 mount -o bind /proc \$chroot_dir/proc
|
gokhlayeh@440
|
2309 mount -o bind /sys \$chroot_dir/sys
|
gokhlayeh@433
|
2310 mount -o bind /dev/pts \$chroot_dir/dev/pts
|
gokhlayeh@433
|
2311 mount -o bind /dev/shm \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2312 for dir in \$list_dir; do
|
gokhlayeh@186
|
2313 mkdir -p \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2314 mount \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2315 done
|
gokhlayeh@186
|
2316 }
|
gokhlayeh@186
|
2317
|
gokhlayeh@186
|
2318 umount_chroot()
|
gokhlayeh@186
|
2319 {
|
gokhlayeh@186
|
2320 for dir in \$list_dir; do
|
gokhlayeh@186
|
2321 umount \$chroot_dir\$dir
|
gokhlayeh@186
|
2322 done
|
gokhlayeh@186
|
2323 umount \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2324 umount \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2325 umount \$chroot_dir/sys
|
gokhlayeh@186
|
2326 umount \$chroot_dir/proc
|
gokhlayeh@186
|
2327 }
|
gokhlayeh@186
|
2328 EOF
|
gokhlayeh@186
|
2329 }
|
gokhlayeh@186
|
2330
|
gokhlayeh@186
|
2331 ########################################################################
|
gokhlayeh@186
|
2332 ######################### END OF NEW FUNCTIONS #########################
|
gokhlayeh@186
|
2333 ########################################################################
|
gokhlayeh@186
|
2334
|
paul@430
|
2335 # List packages providing a virtual package.
|
pascal@111
|
2336 whoprovide()
|
pascal@111
|
2337 {
|
pascal@111
|
2338 local i;
|
gokhlayeh@195
|
2339 for i in $(fgrep -l PROVIDE $WOK/*/receipt); do
|
pascal@111
|
2340 . $i
|
pascal@111
|
2341 case " $PROVIDE " in
|
pascal@111
|
2342 *\ $1\ *|*\ $1:*) echo $(basename $(dirname $i));;
|
pascal@111
|
2343 esac
|
pascal@111
|
2344 done
|
pascal@111
|
2345 }
|
pascal@111
|
2346
|
gokhlayeh@186
|
2347 ########################################################################
|
gokhlayeh@186
|
2348 # TAZWOK COMMANDS
|
gokhlayeh@186
|
2349 ########################
|
pankso@7
|
2350
|
pankso@7
|
2351 case "$COMMAND" in
|
pankso@7
|
2352 stats)
|
paul@166
|
2353 # Tazwok general statistics from the wok config file.
|
pankso@7
|
2354 #
|
gokhlayeh@186
|
2355 get_tazwok_config
|
gokhlayeh@186
|
2356 echo -e "\n\033[1mTazwok configuration statistics\033[0m
|
pankso@7
|
2357 ================================================================================
|
pankso@7
|
2358 Wok directory : $WOK
|
pankso@7
|
2359 Packages repository : $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
2360 Incoming repository : $INCOMING_REPOSITORY
|
pankso@7
|
2361 Sources repository : $SOURCES_REPOSITORY
|
gokhlayeh@186
|
2362 Log directory : $LOCAL_REPOSITORY/log
|
pankso@7
|
2363 Packages in the wok : `ls -1 $WOK | wc -l`
|
pankso@16
|
2364 Cooked packages : `ls -1 $PACKAGES_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2365 Incoming packages : `ls -1 $INCOMING_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2366 ================================================================================\n"
|
gokhlayeh@186
|
2367 ;;
|
pankso@133
|
2368 edit)
|
gokhlayeh@186
|
2369 get_tazwok_config
|
pankso@133
|
2370 check_for_package_on_cmdline
|
pankso@133
|
2371 check_for_receipt
|
gokhlayeh@186
|
2372 $EDITOR $WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
2373 ;;
|
pascal@98
|
2374 build-depends)
|
paul@430
|
2375 # List dependencies to rebuild wok, or only a package.
|
gokhlayeh@186
|
2376 get_tazwok_config
|
gokhlayeh@215
|
2377 report(){ : ; }
|
gokhlayeh@242
|
2378 if [ ! "$PACKAGE" ] || [ "$PACKAGE" = toolchain ]; then
|
gokhlayeh@186
|
2379 scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
2380 --look_for=dep --with_dev --with_args
|
gokhlayeh@186
|
2381 else
|
gokhlayeh@186
|
2382 check_for_package_on_cmdline
|
gokhlayeh@186
|
2383 scan $PACKAGE --look_for=bdep --with_dev
|
gokhlayeh@186
|
2384 fi
|
gokhlayeh@186
|
2385 ;;
|
gokhlayeh@186
|
2386 gen-cooklist)
|
gokhlayeh@215
|
2387 check_root
|
gokhlayeh@204
|
2388 get_options_list="pkg"
|
gokhlayeh@186
|
2389 get_tazwok_config
|
gokhlayeh@215
|
2390 report(){ : ; }
|
gokhlayeh@204
|
2391 if ! [ "$pkg" ]; then
|
gokhlayeh@242
|
2392 if [ ! "$LIST" ] || [ "$LIST" = toolchain ]; then
|
gokhlayeh@242
|
2393 pkg="$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA"
|
gokhlayeh@242
|
2394 else
|
gokhlayeh@242
|
2395 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@242
|
2396 fi
|
gokhlayeh@186
|
2397 fi
|
gokhlayeh@204
|
2398 gen_cook_list
|
gokhlayeh@186
|
2399 ;;
|
pascal@119
|
2400 check-depends)
|
paul@430
|
2401 # Check package depends /!\.
|
gokhlayeh@186
|
2402 get_tazwok_config
|
pascal@119
|
2403 echo ""
|
paul@121
|
2404 echo -e "\033[1mCheck every receipt for DEPENDS - doesn't scan ELF files\033[0m
|
pascal@119
|
2405 ================================================================================"
|
pascal@119
|
2406 TMPDIR=/tmp/tazwok$$
|
pascal@119
|
2407 DEFAULT_DEPENDS="glibc-base gcc-lib-base"
|
pascal@119
|
2408
|
paul@430
|
2409 # Build ALL_DEPENDS variable.
|
pascal@119
|
2410 scan_dep()
|
pascal@119
|
2411 {
|
pascal@119
|
2412 local i
|
pascal@119
|
2413 ALL_DEPENDS="$ALL_DEPENDS$PACKAGE "
|
pascal@128
|
2414 for i in $DEPENDS $SUGGESTED ; do
|
pascal@119
|
2415 case " $ALL_DEPENDS " in
|
pascal@119
|
2416 *\ $i\ *) continue;;
|
pascal@119
|
2417 esac
|
pascal@120
|
2418 [ -d $WOK/$i ] || {
|
pascal@120
|
2419 ALL_DEPENDS="$ALL_DEPENDS$i "
|
pascal@120
|
2420 continue
|
pascal@120
|
2421 }
|
pascal@128
|
2422 DEPENDS=""
|
pascal@128
|
2423 SUGGESTED=""
|
pascal@119
|
2424 . $WOK/$i/receipt
|
pascal@119
|
2425 scan_dep
|
pascal@119
|
2426 done
|
pascal@119
|
2427 }
|
pankso@133
|
2428
|
paul@430
|
2429 # Check for ELF file.
|
pascal@119
|
2430 is_elf()
|
pascal@119
|
2431 {
|
slaxemulator@323
|
2432 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" = "ELF" ]
|
pascal@119
|
2433 }
|
pascal@119
|
2434
|
paul@430
|
2435 # Print shared library dependencies.
|
pascal@119
|
2436 ldd()
|
pascal@119
|
2437 {
|
pascal@130
|
2438 LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
|
pascal@119
|
2439 }
|
pascal@119
|
2440
|
pascal@119
|
2441 mkdir $TMPDIR
|
pascal@119
|
2442 cd $TMPDIR
|
pascal@140
|
2443 for i in $LOCALSTATE/files.list.lzma \
|
pascal@140
|
2444 $LOCALSTATE/undigest/*/files.list.lzma ; do
|
pascal@119
|
2445 [ -f $i ] && lzma d $i -so >> files.list
|
pascal@119
|
2446 done
|
pascal@119
|
2447 for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
|
pascal@119
|
2448 tazpkg extract $pkg > /dev/null 2>&1
|
pascal@119
|
2449 . */receipt
|
pascal@119
|
2450 ALL_DEPENDS="$DEFAULT_DEPENDS "
|
pascal@119
|
2451 scan_dep
|
pascal@119
|
2452 find */fs -type f | while read file ; do
|
pascal@119
|
2453 is_elf $file || continue
|
pascal@119
|
2454 case "$file" in
|
pascal@119
|
2455 *.o|*.ko|*.ko.gz) continue;;
|
pascal@119
|
2456 esac
|
pascal@119
|
2457 ldd $file | while read lib rem; do
|
pascal@119
|
2458 case "$lib" in
|
pascal@128
|
2459 statically|linux-gate.so*|ld-*.so|*/ld-*.so)
|
pascal@119
|
2460 continue;;
|
pascal@119
|
2461 esac
|
gokhlayeh@195
|
2462 for dep in $(fgrep $lib files.list | cut -d: -f1); do
|
pascal@119
|
2463 case " $ALL_DEPENDS " in
|
pascal@119
|
2464 *\ $dep\ *) continue 2;;
|
pascal@119
|
2465 esac
|
gokhlayeh@195
|
2466 for vdep in $(fgrep $dep $LOCALSTATE/packages.equiv | cut -d= -f1); do
|
pascal@128
|
2467 case " $ALL_DEPENDS " in
|
pascal@129
|
2468 *\ $vdep\ *) continue 3;;
|
pascal@128
|
2469 esac
|
pascal@128
|
2470 done
|
pascal@119
|
2471 done
|
pascal@128
|
2472 [ -n "$dep" ] || dep="UNKNOWN"
|
pascal@119
|
2473 echo "$(basename $pkg): ${file#*fs} depends on package $dep for the shared library $lib"
|
pascal@119
|
2474 done
|
pascal@119
|
2475 done
|
pascal@119
|
2476 rm -rf */
|
pascal@119
|
2477 done
|
pascal@119
|
2478 cd /tmp
|
pascal@119
|
2479 rm -rf $TMPDIR
|
gokhlayeh@186
|
2480 ;;
|
pascal@76
|
2481 check)
|
paul@430
|
2482 # Check wok consistency.
|
gokhlayeh@186
|
2483 get_tazwok_config
|
pascal@76
|
2484 echo ""
|
pascal@76
|
2485 echo -e "\033[1mWok and packages checking\033[0m
|
pascal@76
|
2486 ================================================================================"
|
pascal@77
|
2487 cd $WOK
|
pascal@77
|
2488 for pkg in $(ls)
|
pascal@76
|
2489 do
|
pascal@76
|
2490 [ -f $pkg/receipt ] || continue
|
gokhlayeh@186
|
2491 RECEIPT= $pkg/receipt
|
gokhlayeh@186
|
2492 source_receipt
|
gokhlayeh@186
|
2493 [ "$PACKAGE" = "$pkg" ] || echo "Package $PACKAGE should be $pkg" >&2
|
gokhlayeh@186
|
2494 [ -n "$VERSION" ] || echo "Package $PACKAGE has no VERSION" >&2
|
gokhlayeh@186
|
2495 [ -n "$PACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded PACKED_SIZE" >&2
|
gokhlayeh@186
|
2496 [ -n "$UNPACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded UNPACKED_SIZE" >&2
|
gokhlayeh@186
|
2497 [ -n "$EXTRAVERSION" ] && echo "Package $PACKAGE has hardcoded EXTRAVERSION" >&2
|
pascal@97
|
2498 if [ -n "$WANTED" ]; then
|
pascal@97
|
2499 if [ ! -f $WANTED/receipt ]; then
|
gokhlayeh@186
|
2500 echo "Package $PACKAGE wants unknown $WANTED package" >&2
|
pascal@97
|
2501 else
|
pascal@97
|
2502 BASEVERSION=$(. $WANTED/receipt ; echo $VERSION)
|
pascal@103
|
2503 if [ "$VERSION" = "$WANTED" ]; then
|
pascal@103
|
2504 # BASEVERSION is computed in receipt
|
gokhlayeh@195
|
2505 fgrep -q '_pkg=' $pkg/receipt &&
|
pascal@103
|
2506 BASEVERSION=$VERSION
|
pascal@103
|
2507 fi
|
pascal@97
|
2508 if [ "$VERSION" != "$BASEVERSION" ]; then
|
gokhlayeh@186
|
2509 echo "Package $PACKAGE ($VERSION) wants $WANTED ($BASEVERSION)" >&2
|
pascal@97
|
2510 fi
|
pascal@97
|
2511 fi
|
pascal@97
|
2512 fi
|
pascal@97
|
2513
|
pascal@94
|
2514 if [ -n "$CATEGORY" ]; then
|
pascal@94
|
2515 case " $(echo $CATEGORIES) " in
|
pascal@94
|
2516 *\ $CATEGORY\ *);;
|
gokhlayeh@186
|
2517 *) echo "Package $PACKAGE has an invalid CATEGORY" >&2;;
|
pascal@94
|
2518 esac
|
pascal@94
|
2519 else
|
gokhlayeh@186
|
2520 echo"Package $PACKAGE has no CATEGORY" >&2
|
pascal@94
|
2521 fi
|
gokhlayeh@186
|
2522 [ -n "$SHORT_DESC" ] || echo "Package $PACKAGE has no SHORT_DESC" >&2
|
gokhlayeh@186
|
2523 [ -n "$MAINTAINER" ] || echo "Package $PACKAGE has no MAINTAINER" >&2
|
pascal@122
|
2524 case "$WGET_URL" in
|
pascal@178
|
2525 ftp*|http*) busybox wget -s $WGET_URL 2> /dev/null ||
|
gokhlayeh@186
|
2526 echo "Package $PACKAGE has a wrong WGET_URL" >&2;;
|
pascal@122
|
2527 '') ;;
|
gokhlayeh@186
|
2528 *) echo "Package $PACKAGE has an invalid WGET_URL" >&2;;
|
pascal@122
|
2529 esac
|
pascal@112
|
2530 case "$WEB_SITE" in
|
pascal@125
|
2531 ftp*|http*);;
|
gokhlayeh@186
|
2532 '') echo "Package $PACKAGE has no WEB_SITE" >&2;;
|
gokhlayeh@186
|
2533 *) echo "Package $PACKAGE has an invalid WEB_SITE" >&2;;
|
pascal@112
|
2534 esac
|
pascal@78
|
2535 case "$MAINTAINER" in
|
gokhlayeh@186
|
2536 *\<*|*\>*) echo "Package $PACKAGE has an invalid MAINTAINER: $MAINTAINER" >&2;;
|
pascal@78
|
2537 esac
|
pascal@78
|
2538 case "$MAINTAINER" in
|
pascal@78
|
2539 *@*);;
|
gokhlayeh@186
|
2540 *) echo "Package $PACKAGE MAINTAINER is not an email address" >&2;;
|
pascal@78
|
2541 esac
|
gokhlayeh@186
|
2542 MSG="Missing dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@76
|
2543 for i in $DEPENDS; do
|
pascal@76
|
2544 [ -d $i ] && continue
|
pascal@111
|
2545 [ -n "$(whoprovide $i)" ] && continue
|
pascal@76
|
2546 echo -e "$MSG $i"
|
pascal@76
|
2547 MSG=""
|
pascal@76
|
2548 done
|
gokhlayeh@186
|
2549 MSG="Missing build dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@92
|
2550 for i in $BUILD_DEPENDS; do
|
pascal@92
|
2551 [ -d $i ] && continue
|
pascal@111
|
2552 [ -n "$(whoprovide $i)" ] && continue
|
pascal@92
|
2553 echo -e "$MSG $i"
|
pascal@92
|
2554 MSG=""
|
pascal@92
|
2555 done
|
paul@430
|
2556 MSG="Dependency loop between $PACKAGE and :\n"
|
pascal@76
|
2557 ALL_DEPS=""
|
pascal@76
|
2558 check_for_deps_loop $PACKAGE $DEPENDS
|
pascal@140
|
2559 [ -d $WOK/$pkg/taz ] && for i in $BUILD_DEPENDS; do
|
pascal@141
|
2560 [ $WOK/$pkg/taz -nt $INSTALLED/$i/files.list ] && continue
|
paul@154
|
2561 echo "$pkg should be rebuilt after $i installation"
|
pascal@140
|
2562 done
|
pascal@76
|
2563 done
|
gokhlayeh@186
|
2564 ;;
|
pankso@7
|
2565 list)
|
paul@166
|
2566 # List packages in wok directory. User can specify a category.
|
pankso@7
|
2567 #
|
gokhlayeh@186
|
2568 get_tazwok_config
|
pankso@7
|
2569 if [ "$2" = "category" ]; then
|
pankso@7
|
2570 echo -e "\033[1m\nPackages categories :\033[0m $CATEGORIES\n"
|
pankso@7
|
2571 exit 0
|
pankso@7
|
2572 fi
|
pankso@7
|
2573 # Check for an asked category.
|
pankso@7
|
2574 if [ -n "$2" ]; then
|
pankso@7
|
2575 ASKED_CATEGORY=$2
|
pankso@7
|
2576 echo ""
|
pankso@7
|
2577 echo -e "\033[1mPackages in category :\033[0m $ASKED_CATEGORY"
|
slaxemulator@507
|
2578 horizontal_line
|
pankso@7
|
2579 for pkg in $WOK/*
|
pankso@7
|
2580 do
|
erjo@168
|
2581 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2582 . $pkg/receipt
|
pankso@7
|
2583 if [ "$CATEGORY" == "$ASKED_CATEGORY" ]; then
|
pankso@7
|
2584 echo -n "$PACKAGE"
|
pankso@28
|
2585 echo -e "\033[28G $VERSION"
|
pankso@7
|
2586 packages=$(($packages+1))
|
pankso@7
|
2587 fi
|
pankso@7
|
2588 done
|
slaxemulator@507
|
2589 horizontal_line
|
pankso@7
|
2590 echo -e "$packages packages in category $ASKED_CATEGORY.\n"
|
pankso@7
|
2591 else
|
pankso@7
|
2592 # By default list all packages and version.
|
pankso@7
|
2593 echo ""
|
pankso@7
|
2594 echo -e "\033[1mList of packages in the wok\033[0m"
|
slaxemulator@507
|
2595 horizontal_line
|
pankso@7
|
2596 for pkg in $WOK/*
|
pankso@7
|
2597 do
|
erjo@168
|
2598 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2599 . $pkg/receipt
|
pankso@7
|
2600 echo -n "$PACKAGE"
|
pankso@28
|
2601 echo -en "\033[28G $VERSION"
|
pankso@7
|
2602 echo -e "\033[42G $CATEGORY"
|
pankso@7
|
2603 packages=$(($packages+1))
|
pankso@7
|
2604 done
|
slaxemulator@507
|
2605 horizontal_line
|
MikeDSmith25@82
|
2606 echo -e "$packages packages available in the wok.\n"
|
pankso@7
|
2607 fi
|
pankso@7
|
2608 ;;
|
pankso@7
|
2609 info)
|
MikeDSmith25@82
|
2610 # Information about a package.
|
pankso@7
|
2611 #
|
gokhlayeh@186
|
2612 get_tazwok_config
|
pankso@7
|
2613 check_for_package_on_cmdline
|
pankso@7
|
2614 check_for_receipt
|
pankso@7
|
2615 . $WOK/$PACKAGE/receipt
|
pankso@7
|
2616 echo ""
|
MikeDSmith25@82
|
2617 echo -e "\033[1mTazwok package information\033[0m
|
pankso@7
|
2618 ================================================================================
|
pankso@7
|
2619 Package : $PACKAGE
|
pankso@7
|
2620 Version : $VERSION
|
pankso@7
|
2621 Category : $CATEGORY
|
pankso@7
|
2622 Short desc : $SHORT_DESC
|
pankso@7
|
2623 Maintainer : $MAINTAINER"
|
pankso@7
|
2624 if [ ! "$WEB_SITE" = "" ]; then
|
pankso@7
|
2625 echo "Web site : $WEB_SITE"
|
pankso@7
|
2626 fi
|
pankso@7
|
2627 if [ ! "$DEPENDS" = "" ]; then
|
pankso@7
|
2628 echo "Depends : $DEPENDS"
|
pankso@7
|
2629 fi
|
pankso@7
|
2630 if [ ! "$WANTED" = "" ]; then
|
pankso@7
|
2631 echo "Wanted src : $WANTED"
|
pankso@7
|
2632 fi
|
slaxemulator@507
|
2633 horizontal_line
|
pankso@7
|
2634 echo ""
|
gokhlayeh@186
|
2635 ;;
|
pankso@7
|
2636 check-log)
|
pankso@7
|
2637 # We just cat the file log to view process info.
|
pankso@7
|
2638 #
|
gokhlayeh@186
|
2639 get_tazwok_config
|
pankso@7
|
2640 if [ ! -f "$LOG" ]; then
|
gokhlayeh@186
|
2641 echo -e "\nNo process log found. The package is probably not cooked.\n" >&2
|
gokhlayeh@186
|
2642 exit 1
|
pankso@7
|
2643 else
|
pankso@7
|
2644 echo ""
|
pankso@7
|
2645 echo -e "\033[1mPackage process log for :\033[0m $PACKAGE"
|
slaxemulator@507
|
2646 horizontal_line
|
pankso@7
|
2647 cat $LOG
|
slaxemulator@507
|
2648 horizontal_line
|
pankso@7
|
2649 echo ""
|
gokhlayeh@237
|
2650 if [ -s "$WOK/$PACKAGE/warning.txt" ]; then
|
gokhlayeh@237
|
2651 echo -e "\033[1mCook warning(s) for :\033[0m $PACKAGE"
|
slaxemulator@507
|
2652 horizontal_line
|
gokhlayeh@237
|
2653 cat "$WOK/$PACKAGE/warning.txt"
|
slaxemulator@507
|
2654 horizontal_line
|
gokhlayeh@237
|
2655 echo ""
|
gokhlayeh@237
|
2656 fi
|
pankso@7
|
2657 fi
|
gokhlayeh@186
|
2658 ;;
|
pankso@7
|
2659 search)
|
pankso@7
|
2660 # Search for a package by pattern or name.
|
pankso@7
|
2661 #
|
gokhlayeh@186
|
2662 get_tazwok_config
|
pankso@7
|
2663 if [ -z "$2" ]; then
|
gokhlayeh@186
|
2664 echo -e "\nPlease specify a pattern or a package name to search." >&2
|
gokhlayeh@186
|
2665 echo -e "Example : 'tazwok search gcc'.\n" >&2
|
gokhlayeh@186
|
2666 exit 1
|
pankso@7
|
2667 fi
|
pankso@7
|
2668 echo ""
|
pankso@7
|
2669 echo -e "\033[1mSearch result for :\033[0m $2"
|
slaxemulator@507
|
2670 horizontal_line
|
gokhlayeh@195
|
2671 list=`ls -1 $WOK | fgrep $2`
|
pankso@7
|
2672 for pkg in $list
|
pankso@7
|
2673 do
|
pankso@7
|
2674 . $WOK/$pkg/receipt
|
pankso@7
|
2675 echo -n "$PACKAGE "
|
pankso@7
|
2676 echo -en "\033[24G $VERSION"
|
pankso@7
|
2677 echo -e "\033[42G $CATEGORY"
|
gokhlayeh@186
|
2678 packages=$(($PACKAGEs+1))
|
pankso@7
|
2679 done
|
slaxemulator@507
|
2680 horizontal_line
|
pankso@7
|
2681 echo "$packages packages found for : $2"
|
pankso@7
|
2682 echo ""
|
gokhlayeh@186
|
2683 ;;
|
pankso@7
|
2684 compile)
|
pankso@7
|
2685 # Configure and make a package with the receipt.
|
pankso@7
|
2686 #
|
gokhlayeh@186
|
2687 get_tazwok_config
|
gokhlayeh@186
|
2688 source_lib report
|
gokhlayeh@186
|
2689 report start
|
pankso@7
|
2690 compile_package
|
gokhlayeh@186
|
2691 ;;
|
pankso@7
|
2692 genpkg)
|
paul@121
|
2693 # Generate a package.
|
pankso@7
|
2694 #
|
gokhlayeh@186
|
2695 get_tazwok_config
|
gokhlayeh@186
|
2696 source_lib report
|
gokhlayeh@186
|
2697 report start
|
pankso@7
|
2698 gen_package
|
gokhlayeh@186
|
2699 ;;
|
pankso@7
|
2700 cook)
|
pankso@7
|
2701 # Compile and generate a package. Just execute tazwok with
|
pankso@7
|
2702 # the good commands.
|
pankso@7
|
2703 #
|
pankso@7
|
2704 check_root
|
gokhlayeh@186
|
2705 get_tazwok_config
|
gokhlayeh@186
|
2706 source_lib report
|
gokhlayeh@186
|
2707 report start
|
gokhlayeh@470
|
2708 db_md5=$(md5sum $dep_db $wan_db)
|
gokhlayeh@215
|
2709 update_wan_db
|
gokhlayeh@215
|
2710 check_for_commit
|
gokhlayeh@475
|
2711 sort -o $dep_db $dep_db
|
gokhlayeh@475
|
2712 sort -o $wan_db $wan_db
|
gokhlayeh@470
|
2713 if [ "$db_md5" != "$(md5sum $dep_db $wan_db)" ]; then
|
gokhlayeh@470
|
2714 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt ||
|
gokhlayeh@215
|
2715 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@215
|
2716 fi
|
gokhlayeh@186
|
2717 cook
|
gokhlayeh@186
|
2718 ;;
|
gokhlayeh@186
|
2719 sort-cooklist)
|
gokhlayeh@297
|
2720 if [ ! -f "$LIST" ]; then
|
gokhlayeh@297
|
2721 echo "Usage : tazwok sort-cooklist cooklist" >&2
|
gokhlayeh@186
|
2722 exit 1
|
gokhlayeh@186
|
2723 fi
|
gokhlayeh@297
|
2724 check_root
|
gokhlayeh@186
|
2725 get_tazwok_config
|
gokhlayeh@297
|
2726 report(){ : ; }
|
gokhlayeh@297
|
2727 # When using sort-cooklist, the script should behave as for gen-cooklist
|
paul@430
|
2728 # The only difference between these two is where the output is sent.
|
gokhlayeh@297
|
2729 COMMAND=gen-cooklist
|
gokhlayeh@186
|
2730 cooklist=$LIST
|
gokhlayeh@297
|
2731 gen_cook_list
|
gokhlayeh@300
|
2732 cp -af $tmp/cooklist $cooklist
|
gokhlayeh@186
|
2733 ;;
|
pankso@7
|
2734 cook-list)
|
gokhlayeh@204
|
2735 # Cook all packages listed in a file or in default cooklist.
|
gokhlayeh@186
|
2736 check_root
|
gokhlayeh@204
|
2737 get_options_list="pkg forced"
|
gokhlayeh@186
|
2738 get_tazwok_config
|
gokhlayeh@186
|
2739 source_lib report
|
gokhlayeh@186
|
2740 report start
|
gokhlayeh@204
|
2741 if ! [ "$pkg" ]; then
|
gokhlayeh@204
|
2742 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@186
|
2743 fi
|
gokhlayeh@204
|
2744 gen_cook_list
|
gokhlayeh@186
|
2745 cook_list
|
gokhlayeh@186
|
2746 ;;
|
gokhlayeh@186
|
2747 clean)
|
paul@430
|
2748 # Clean up a package work directory + those which want it.
|
pankso@7
|
2749 #
|
gokhlayeh@186
|
2750 get_tazwok_config
|
pankso@7
|
2751 check_for_package_on_cmdline
|
pankso@7
|
2752 check_for_receipt
|
gokhlayeh@186
|
2753 source_lib report
|
gokhlayeh@186
|
2754 report start
|
pankso@7
|
2755 . $RECEIPT
|
gokhlayeh@186
|
2756 clean
|
gokhlayeh@186
|
2757 ;;
|
pankso@7
|
2758 gen-clean-wok)
|
paul@121
|
2759 # Generate a clean wok from the current wok by copying all receipts
|
pankso@7
|
2760 # and stuff directory.
|
pankso@7
|
2761 #
|
gokhlayeh@186
|
2762 get_tazwok_config
|
gokhlayeh@186
|
2763 source_lib report
|
gokhlayeh@186
|
2764 report start
|
gokhlayeh@186
|
2765 if [ -z "$ARG" ]; then
|
gokhlayeh@186
|
2766 echo -e "\nPlease specify the destination for the new clean wok.\n" >&2
|
gokhlayeh@186
|
2767 exit 1
|
pankso@7
|
2768 else
|
gokhlayeh@186
|
2769 dest=$ARG
|
pankso@7
|
2770 mkdir -p $dest
|
pankso@7
|
2771 fi
|
gokhlayeh@186
|
2772 report step "Creating clean wok in : $dest"
|
pankso@7
|
2773 for pkg in `ls -1 $WOK`
|
pankso@7
|
2774 do
|
pankso@7
|
2775 mkdir -p $dest/$pkg
|
pankso@7
|
2776 cp -a $WOK/$pkg/receipt $dest/$pkg
|
gokhlayeh@186
|
2777 [ -f $WOK/$pkg/description.txt ] && \
|
gokhlayeh@186
|
2778 cp -a $WOK/$pkg/description.txt $dest/$pkg
|
pankso@7
|
2779 if [ -d "$WOK/$pkg/stuff" ]; then
|
pankso@7
|
2780 cp -a $WOK/$pkg/stuff $dest/$pkg
|
pankso@7
|
2781 fi
|
pankso@7
|
2782 done
|
gokhlayeh@186
|
2783 [ -d $WOK/.hg ] && cp -a $WOK/.hg $dest
|
gokhlayeh@186
|
2784 report end-step
|
pankso@7
|
2785 echo "Packages cleaned : `ls -1 $dest | wc -l`"
|
pankso@7
|
2786 echo ""
|
gokhlayeh@186
|
2787 ;;
|
pankso@7
|
2788 clean-wok)
|
paul@430
|
2789 # Clean all packages in the work directory.
|
pankso@7
|
2790 #
|
gokhlayeh@186
|
2791 get_tazwok_config
|
gokhlayeh@186
|
2792 source_lib report
|
gokhlayeh@186
|
2793 report start
|
gokhlayeh@186
|
2794 report step "Cleaning wok"
|
gokhlayeh@186
|
2795 for PACKAGE in `ls -1 $WOK`
|
pankso@7
|
2796 do
|
gokhlayeh@186
|
2797 set_common_path
|
gokhlayeh@186
|
2798 source_receipt
|
gokhlayeh@186
|
2799 clean
|
pankso@7
|
2800 done
|
pankso@7
|
2801 echo "`ls -1 $WOK | wc -l` packages cleaned."
|
gokhlayeh@186
|
2802 ;;
|
gokhlayeh@266
|
2803 clean-src)
|
gokhlayeh@266
|
2804 # Remove tarball unrelated to wok receipts from src repo.
|
gokhlayeh@266
|
2805 check_root
|
gokhlayeh@266
|
2806 get_options_list="forced"
|
gokhlayeh@266
|
2807 get_tazwok_config
|
gokhlayeh@266
|
2808 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
2809 echo -n "Checking $SOURCES_REPOSITORY..."
|
gokhlayeh@266
|
2810 for TARBALL in *; do
|
gokhlayeh@266
|
2811 [ "$TARBALL" = sources.list ] && continue
|
gokhlayeh@266
|
2812 grep -q $'\t'$TARBALL$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2813 echo $TARBALL >> $tmp/obsolete
|
gokhlayeh@266
|
2814 done
|
gokhlayeh@266
|
2815 status
|
slaxemulator@273
|
2816 if ! [ -f $tmp/obsolete ]; then
|
slaxemulator@273
|
2817 echo "No sources need to be removed."
|
slaxemulator@273
|
2818 exit 1
|
slaxemulator@273
|
2819 fi
|
gokhlayeh@266
|
2820 echo ""
|
paul@430
|
2821 echo -e "\033[1mObsolete/unrelated-to-wok sources :\033[0m"
|
gokhlayeh@266
|
2822 horizontal_line
|
gokhlayeh@266
|
2823 cat $tmp/obsolete
|
gokhlayeh@266
|
2824 horizontal_line
|
gokhlayeh@266
|
2825 echo "$(wc -l $tmp/obsolete | cut -f1 -d' ') tarballs to remove."
|
pankso@7
|
2826 echo ""
|
paul@430
|
2827 echo -n "Please confirm before removing (type uppercase YES): "
|
gokhlayeh@266
|
2828 read answer
|
gokhlayeh@266
|
2829 if [ "$answer" = YES ]; then
|
gokhlayeh@266
|
2830 echo -n "Removing old sources..."
|
gokhlayeh@266
|
2831 cat $tmp/obsolete | while read i; do
|
gokhlayeh@266
|
2832 rm -f $SOURCES_REPOSITORY/$i
|
gokhlayeh@266
|
2833 done
|
gokhlayeh@266
|
2834 status
|
gokhlayeh@266
|
2835 fi
|
gokhlayeh@266
|
2836 ;;
|
pankso@7
|
2837 gen-list)
|
gokhlayeh@186
|
2838 get_tazwok_config
|
gokhlayeh@204
|
2839 if [ "$2" ]; then
|
pankso@7
|
2840 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2841 pkg_repository=$2
|
pankso@7
|
2842 else
|
gokhlayeh@204
|
2843 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@204
|
2844 exit 1
|
pankso@7
|
2845 fi
|
pankso@7
|
2846 fi
|
gokhlayeh@204
|
2847
|
gokhlayeh@186
|
2848 source_lib report
|
gokhlayeh@186
|
2849 report start
|
gokhlayeh@204
|
2850 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2851 gen_packages_db
|
gokhlayeh@204
|
2852 else
|
gokhlayeh@204
|
2853 pkg_repository=$PACKAGES_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2854 pkg_repository=$INCOMING_REPOSITORY && gen_packages_db
|
pankso@28
|
2855 fi
|
gokhlayeh@186
|
2856 ;;
|
gokhlayeh@186
|
2857 check-list)
|
gokhlayeh@186
|
2858 # The directory to move into by default is the repository,
|
gokhlayeh@186
|
2859 # if $2 is not empty cd into $2.
|
pascal@178
|
2860 #
|
gokhlayeh@186
|
2861 get_tazwok_config
|
gokhlayeh@204
|
2862 if [ "$2" ]; then
|
pascal@178
|
2863 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2864 pkg_repository=$2
|
pascal@178
|
2865 else
|
gokhlayeh@186
|
2866 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@186
|
2867 exit 1
|
pascal@178
|
2868 fi
|
pascal@178
|
2869 fi
|
gokhlayeh@186
|
2870
|
gokhlayeh@186
|
2871 source_lib report
|
gokhlayeh@204
|
2872 report start
|
gokhlayeh@204
|
2873 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2874 update_packages_db
|
gokhlayeh@204
|
2875 else
|
gokhlayeh@204
|
2876 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2877 pkg_repository=$INCOMING_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2878 fi
|
gokhlayeh@186
|
2879 ;;
|
pankso@7
|
2880 new-tree)
|
MikeDSmith25@82
|
2881 # Just create a few directories and generate an empty receipt to prepare
|
pankso@7
|
2882 # the creation of a new package.
|
pankso@7
|
2883 #
|
gokhlayeh@186
|
2884 get_tazwok_config
|
pankso@7
|
2885 check_for_package_on_cmdline
|
slaxemulator@362
|
2886 clean_wok=$LOCAL_REPOSITORY/clean-wok
|
slaxemulator@362
|
2887 if [ -d $clean_wok/$PACKAGE ]; then
|
gokhlayeh@186
|
2888 echo -e "\n$PACKAGE package tree already exists.\n" >&2
|
gokhlayeh@186
|
2889 exit 1
|
pankso@7
|
2890 fi
|
gokhlayeh@442
|
2891 echo "Creating : $clean_wok/$PACKAGE"
|
slaxemulator@362
|
2892 mkdir $clean_wok/$PACKAGE
|
slaxemulator@362
|
2893 cd $clean_wok/$PACKAGE
|
pankso@7
|
2894 echo -n "Preparing the receipt..."
|
pankso@7
|
2895 #
|
pankso@7
|
2896 # Default receipt begin.
|
pankso@7
|
2897 #
|
pankso@7
|
2898 echo "# SliTaz package receipt." > receipt
|
pankso@7
|
2899 echo "" >> receipt
|
pankso@7
|
2900 echo "PACKAGE=\"$PACKAGE\"" >> receipt
|
pankso@7
|
2901 # Finish the empty receipt.
|
pankso@7
|
2902 cat >> receipt << "EOF"
|
pankso@7
|
2903 VERSION=""
|
pankso@7
|
2904 CATEGORY=""
|
pankso@7
|
2905 SHORT_DESC=""
|
pankso@7
|
2906 MAINTAINER=""
|
pankso@7
|
2907 DEPENDS=""
|
pankso@7
|
2908 TARBALL="$PACKAGE-$VERSION.tar.gz"
|
pankso@7
|
2909 WEB_SITE=""
|
pankso@7
|
2910 WGET_URL=""
|
pankso@7
|
2911
|
pankso@7
|
2912 # Rules to configure and make the package.
|
pankso@7
|
2913 compile_rules()
|
pankso@7
|
2914 {
|
pankso@7
|
2915 cd $src
|
gokhlayeh@204
|
2916 ./configure && make && make install
|
pankso@7
|
2917 }
|
pankso@7
|
2918
|
pankso@7
|
2919 # Rules to gen a SliTaz package suitable for Tazpkg.
|
pankso@7
|
2920 genpkg_rules()
|
pankso@7
|
2921 {
|
pankso@7
|
2922 mkdir -p $fs/usr
|
pankso@7
|
2923 cp -a $_pkg/usr/bin $fs/usr
|
pankso@7
|
2924 }
|
pankso@7
|
2925
|
pankso@7
|
2926 EOF
|
pankso@7
|
2927 #
|
pankso@7
|
2928 # Default receipt end.
|
pankso@7
|
2929 #
|
pankso@7
|
2930 status
|
pankso@7
|
2931 # Interactive mode, asking and seding.
|
pankso@7
|
2932 if [ "$3" = "--interactive" ]; then
|
paul@430
|
2933 echo "Entering interactive mode..."
|
slaxemulator@507
|
2934 horizontal_line
|
pankso@7
|
2935 echo "Package : $PACKAGE"
|
pankso@7
|
2936 # Version.
|
pankso@7
|
2937 echo -n "Version : " ; read anser
|
pankso@7
|
2938 sed -i s/'VERSION=\"\"'/"VERSION=\"$anser\""/ receipt
|
pankso@7
|
2939 # Category.
|
pankso@7
|
2940 echo -n "Category : " ; read anser
|
pankso@7
|
2941 sed -i s/'CATEGORY=\"\"'/"CATEGORY=\"$anser\""/ receipt
|
pankso@7
|
2942 # Short description.
|
pankso@7
|
2943 echo -n "Short desc : " ; read anser
|
pankso@7
|
2944 sed -i s/'SHORT_DESC=\"\"'/"SHORT_DESC=\"$anser\""/ receipt
|
pankso@7
|
2945 # Maintainer.
|
pankso@7
|
2946 echo -n "Maintainer : " ; read anser
|
pankso@7
|
2947 sed -i s/'MAINTAINER=\"\"'/"MAINTAINER=\"$anser\""/ receipt
|
pankso@7
|
2948 # Web site.
|
pankso@7
|
2949 echo -n "Web site : " ; read anser
|
pankso@133
|
2950 sed -i s#'WEB_SITE=\"\"'#"WEB_SITE=\"$anser\""# receipt
|
pankso@7
|
2951 echo ""
|
pankso@7
|
2952 # Wget URL.
|
pankso@7
|
2953 echo "Wget URL to download source tarball."
|
pankso@7
|
2954 echo "Example : \$GNU_MIRROR/\$PACKAGE/\$TARBALL"
|
pankso@7
|
2955 echo -n "Wget url : " ; read anser
|
pankso@7
|
2956 sed -i s#'WGET_URL=\"\"'#"WGET_URL=\"$anser\""# receipt
|
pankso@7
|
2957 # Ask for a stuff dir.
|
pankso@7
|
2958 echo -n "Do you need a stuff directory ? (y/N) : " ; read anser
|
pankso@7
|
2959 if [ "$anser" = "y" ]; then
|
pankso@7
|
2960 echo -n "Creating the stuff directory..."
|
pankso@7
|
2961 mkdir stuff && status
|
pankso@7
|
2962 fi
|
pankso@7
|
2963 # Ask for a description file.
|
pankso@7
|
2964 echo -n "Are you going to write a description ? (y/N) : " ; read anser
|
pankso@7
|
2965 if [ "$anser" = "y" ]; then
|
pankso@7
|
2966 echo -n "Creating the description.txt file..."
|
pankso@7
|
2967 echo "" > description.txt && status
|
pankso@7
|
2968 fi
|
slaxemulator@507
|
2969 horizontal_line
|
pankso@7
|
2970 echo ""
|
pankso@7
|
2971 fi
|
gokhlayeh@186
|
2972 ;;
|
pankso@7
|
2973 remove)
|
pankso@7
|
2974 # Remove a package from the wok.
|
pankso@7
|
2975 #
|
gokhlayeh@186
|
2976 get_tazwok_config
|
pankso@7
|
2977 check_for_package_on_cmdline
|
pankso@7
|
2978 echo ""
|
pascal@83
|
2979 echo -n "Please confirm deletion (y/N) : "; read anser
|
pascal@83
|
2980 if [ "$anser" = "y" ]; then
|
pascal@83
|
2981 echo -n "Removing $PACKAGE..."
|
pascal@83
|
2982 rm -rf $WOK/$PACKAGE && status
|
pascal@83
|
2983 echo ""
|
pascal@83
|
2984 fi
|
gokhlayeh@186
|
2985 ;;
|
gokhlayeh@304
|
2986 update-wok)
|
paul@166
|
2987 # Pull and update a Hg wok.
|
gokhlayeh@304
|
2988 get_options_list="local"
|
gokhlayeh@186
|
2989 get_tazwok_config
|
gokhlayeh@309
|
2990 source_lib report
|
gokhlayeh@310
|
2991 report start
|
gokhlayeh@304
|
2992 clean_wok=$LOCAL_REPOSITORY/clean-wok
|
gokhlayeh@304
|
2993 cd $clean_wok
|
gokhlayeh@304
|
2994 if ! [ "$local" ]; then
|
gokhlayeh@304
|
2995 if [ "$WOK_UPDATE_METHOD" = hg ]; then
|
gokhlayeh@304
|
2996 if ! [ -f "$INSTALLED/mercurial/receipt" ]; then
|
gokhlayeh@304
|
2997
|
gokhlayeh@304
|
2998 # Auto-install only if we are in a cook chroot.
|
gokhlayeh@304
|
2999 if [ -x /usr/bin/clean-chroot ]; then
|
gokhlayeh@392
|
3000 tazpkg get-install mercurial
|
gokhlayeh@392
|
3001 else
|
gokhlayeh@304
|
3002 echo "" >&2
|
paul@430
|
3003 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
|
3004 echo "">&2
|
gokhlayeh@330
|
3005 exit 1
|
gokhlayeh@304
|
3006 fi
|
gokhlayeh@330
|
3007 fi
|
gokhlayeh@304
|
3008
|
gokhlayeh@330
|
3009 report step "Getting wok changes using hg"
|
gokhlayeh@330
|
3010 if [ -d .hg ]; then
|
gokhlayeh@330
|
3011 hg pull -u || exit 1
|
gokhlayeh@304
|
3012 else
|
gokhlayeh@330
|
3013 hg clone $HG_WOK . || exit 1
|
gokhlayeh@304
|
3014 fi
|
gokhlayeh@309
|
3015 report end-step
|
gokhlayeh@304
|
3016 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@304
|
3017 else
|
gokhlayeh@309
|
3018 report step "Getting wok changes using tarball"
|
gokhlayeh@304
|
3019 { mkdir .tmp && cd .tmp
|
gokhlayeh@304
|
3020 wget "$TARBALL_WOK" &&
|
gokhlayeh@304
|
3021 case $TARBALL_WOK in
|
gokhlayeh@304
|
3022 *bz2) tar xjf *.bz2 -C wok; rm *.bz2;;
|
gokhlayeh@304
|
3023 *lzma) unlzma -c *.lzma | tar xf - -C wok; rm *.lzma ;;
|
gokhlayeh@304
|
3024 *gz) tar xzf *.gz -C wok; rm*.gz ;;
|
gokhlayeh@304
|
3025 esac &&
|
gokhlayeh@304
|
3026 rm -r $(ls -d $clean_wok/*) &&
|
gokhlayeh@304
|
3027 cp -a wok/* $clean_wok &&
|
gokhlayeh@304
|
3028 cd .. &&
|
gokhlayeh@304
|
3029 rm -r .tmp
|
gokhlayeh@304
|
3030 } || { echo "That's not cool: it fails!" >&2
|
gokhlayeh@309
|
3031 report end-step
|
gokhlayeh@304
|
3032 exit 1; }
|
gokhlayeh@309
|
3033 report end-step
|
gokhlayeh@304
|
3034 fi
|
pankso@106
|
3035 fi
|
gokhlayeh@309
|
3036 report step "Appending changes to wok"
|
gokhlayeh@304
|
3037
|
gokhlayeh@308
|
3038 # Handle removed files/dir.
|
gokhlayeh@308
|
3039 cd $WOK
|
gokhlayeh@313
|
3040 for dir in *; do
|
slaxemulator@329
|
3041 [ -d "$clean_wok/$dir" ] || rm -rf $dir
|
gokhlayeh@308
|
3042 done
|
gokhlayeh@308
|
3043 for file in */receipt */description.txt; do
|
slaxemulator@329
|
3044 [ -f "$clean_wok/$file" ] || rm -rf $file
|
gokhlayeh@308
|
3045 done
|
gokhlayeh@330
|
3046 for i in $(find */stuff 2>/dev/null); do
|
slaxemulator@329
|
3047 [ -e "$clean_wok/$i" ] || rm -rf $i
|
gokhlayeh@304
|
3048 done
|
gokhlayeh@304
|
3049
|
gokhlayeh@308
|
3050 cp -a $clean_wok/* $WOK
|
gokhlayeh@309
|
3051 report end-step
|
gokhlayeh@186
|
3052 ;;
|
pankso@108
|
3053 maintainers)
|
gokhlayeh@186
|
3054 get_tazwok_config
|
pankso@108
|
3055 echo ""
|
pankso@108
|
3056 echo "List of maintainers for: $WOK"
|
slaxemulator@507
|
3057 horizontal_line
|
pankso@108
|
3058 touch /tmp/slitaz-maintainers
|
pankso@108
|
3059 for pkg in $WOK/*
|
pankso@108
|
3060 do
|
pankso@108
|
3061 . $pkg/receipt
|
gokhlayeh@195
|
3062 if ! fgrep -q "$MAINTAINER" /tmp/slitaz-maintainers; then
|
pankso@108
|
3063 echo "$MAINTAINER" >> /tmp/slitaz-maintainers
|
pankso@108
|
3064 echo "$MAINTAINER"
|
pankso@108
|
3065 fi
|
pankso@108
|
3066 done
|
slaxemulator@507
|
3067 horizontal_line
|
pankso@108
|
3068 echo "Maintainers: `cat /tmp/slitaz-maintainers | wc -l`"
|
pankso@108
|
3069 echo ""
|
pankso@108
|
3070 # Remove tmp files
|
gokhlayeh@186
|
3071 rm -f /tmp/slitaz-maintainers
|
gokhlayeh@186
|
3072 ;;
|
pankso@107
|
3073 maintained-by)
|
paul@166
|
3074 # Search for packages maintained by a contributor.
|
gokhlayeh@186
|
3075 get_tazwok_config
|
pankso@107
|
3076 if [ ! -n "$2" ]; then
|
gokhlayeh@186
|
3077 echo "Specify a name or email of a maintainer." >&2
|
gokhlayeh@186
|
3078 exit 1
|
pankso@107
|
3079 fi
|
pankso@107
|
3080 echo "Maintainer packages"
|
slaxemulator@507
|
3081 horizontal_line
|
pankso@107
|
3082 for pkg in $WOK/*
|
pankso@107
|
3083 do
|
pankso@107
|
3084 . $pkg/receipt
|
gokhlayeh@195
|
3085 if echo "$MAINTAINER" | fgrep -q "$2"; then
|
pankso@107
|
3086 echo "$PACKAGE"
|
gokhlayeh@186
|
3087 packages=$(($PACKAGEs+1))
|
pankso@107
|
3088 fi
|
pankso@107
|
3089 done
|
slaxemulator@507
|
3090 horizontal_line
|
gokhlayeh@186
|
3091 echo "Packages maintained by $2: $PACKAGEs"
|
gokhlayeh@186
|
3092 echo ""
|
gokhlayeh@186
|
3093 ;;
|
gokhlayeh@268
|
3094 tags)
|
gokhlayeh@268
|
3095 get_tazwok_config
|
gokhlayeh@268
|
3096 echo -e "\n\033[1mTags list :\033[0m"
|
gokhlayeh@268
|
3097 horizontal_line
|
gokhlayeh@268
|
3098 cd $WOK
|
gokhlayeh@268
|
3099 for i in */receipt; do
|
gokhlayeh@268
|
3100 unset TAGS
|
gokhlayeh@268
|
3101 source $i
|
gokhlayeh@268
|
3102 for t in $TAGS; do
|
gokhlayeh@268
|
3103 grep -q ^$t$ $tmp/tags && continue
|
gokhlayeh@268
|
3104 echo $t | tee -a $tmp/tags
|
gokhlayeh@268
|
3105 done
|
gokhlayeh@268
|
3106 done
|
gokhlayeh@268
|
3107 horizontal_line
|
gokhlayeh@268
|
3108 echo "$(wc -l $tmp/tags | cut -f1 -d ' ') tags listed."
|
gokhlayeh@268
|
3109 ;;
|
erjo@159
|
3110 check-src)
|
paul@430
|
3111 # Verify if upstream package is still available.
|
erjo@159
|
3112 #
|
gokhlayeh@186
|
3113 get_tazwok_config
|
erjo@159
|
3114 check_for_package_on_cmdline
|
erjo@159
|
3115 check_for_receipt
|
gokhlayeh@186
|
3116 source_receipt
|
erjo@159
|
3117 check_src()
|
erjo@159
|
3118 {
|
erjo@159
|
3119 for url in $@; do
|
pascal@178
|
3120 busybox wget -s $url 2>/dev/null && break
|
erjo@159
|
3121 done
|
erjo@159
|
3122 }
|
gokhlayeh@186
|
3123 if [ "$WGET_URL" ];then
|
erjo@159
|
3124 echo -n "$PACKAGE : "
|
erjo@159
|
3125 check_src $WGET_URL
|
erjo@159
|
3126 status
|
erjo@159
|
3127 else
|
erjo@159
|
3128 echo "No tarball to check for $PACKAGE"
|
erjo@159
|
3129 fi
|
gokhlayeh@186
|
3130 ;;
|
slaxemulator@456
|
3131 gen-src)
|
slaxemulator@456
|
3132 get_tazwok_config
|
slaxemulator@456
|
3133 if [ "$2" ]; then
|
slaxemulator@456
|
3134 if [ -d "$2" ]; then
|
slaxemulator@456
|
3135 src_repository=$2
|
slaxemulator@456
|
3136 else
|
slaxemulator@456
|
3137 echo -e "\nUnable to find directory : $2\n" >&2
|
slaxemulator@456
|
3138 exit 1
|
slaxemulator@456
|
3139 fi
|
slaxemulator@456
|
3140 fi
|
slaxemulator@456
|
3141 echo -n "Rebuilding sources.list file"
|
slaxemulator@456
|
3142 [ $src_repository ] || src_repository="$SOURCES_REPOSITORY"
|
slaxemulator@456
|
3143 gen_sources_list $src_repository
|
slaxemulator@456
|
3144 status
|
slaxemulator@456
|
3145 ;;
|
gokhlayeh@186
|
3146 get-src)
|
gokhlayeh@186
|
3147 check_root
|
gokhlayeh@225
|
3148 get_options_list="target nounpack"
|
gokhlayeh@186
|
3149 get_tazwok_config
|
gokhlayeh@186
|
3150 check_for_package_on_cmdline
|
gokhlayeh@186
|
3151 check_for_receipt
|
gokhlayeh@186
|
3152 source_receipt
|
gokhlayeh@186
|
3153 if [ "$WGET_URL" ];then
|
gokhlayeh@186
|
3154 source_lib report
|
gokhlayeh@186
|
3155 report start
|
gokhlayeh@225
|
3156 check_for_tarball
|
gokhlayeh@186
|
3157 else
|
gokhlayeh@186
|
3158 echo "No tarball to download for $PACKAGE"
|
gokhlayeh@186
|
3159 fi
|
gokhlayeh@186
|
3160 ;;
|
gokhlayeh@204
|
3161 check-commit)
|
gokhlayeh@186
|
3162 check_root
|
gokhlayeh@204
|
3163 get_options_list="missing forced"
|
gokhlayeh@186
|
3164 get_tazwok_config
|
gokhlayeh@186
|
3165 source_lib report
|
gokhlayeh@186
|
3166 report start
|
gokhlayeh@204
|
3167 if [ "$forced" ]; then
|
gokhlayeh@204
|
3168 rm -f $WOK/*/md5
|
gokhlayeh@204
|
3169 unset forced
|
gokhlayeh@204
|
3170 fi
|
gokhlayeh@204
|
3171 if [ "$missing" ]; then
|
gokhlayeh@204
|
3172 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3173 else
|
gokhlayeh@204
|
3174 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3175 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3176 } | sort -u)"
|
gokhlayeh@204
|
3177 fi
|
gokhlayeh@204
|
3178 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
3179 gen_cook_list
|
gokhlayeh@186
|
3180 ;;
|
gokhlayeh@186
|
3181 cook-commit)
|
gokhlayeh@186
|
3182 check_root
|
gokhlayeh@204
|
3183 get_options_list="missing forced"
|
gokhlayeh@186
|
3184 get_tazwok_config
|
gokhlayeh@186
|
3185 source_lib report
|
gokhlayeh@186
|
3186 report start
|
gokhlayeh@204
|
3187 if [ "$forced" ]; then
|
gokhlayeh@204
|
3188 rm -f $WOK/*/md5
|
gokhlayeh@204
|
3189 unset forced
|
gokhlayeh@204
|
3190 fi
|
gokhlayeh@204
|
3191 if [ "$missing" ]; then
|
gokhlayeh@204
|
3192 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3193 else
|
gokhlayeh@204
|
3194 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3195 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3196 } | sort -u)"
|
gokhlayeh@204
|
3197 fi
|
gokhlayeh@204
|
3198 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
3199 gen_cook_list
|
gokhlayeh@186
|
3200 cook_list
|
gokhlayeh@186
|
3201 ;;
|
gokhlayeh@186
|
3202 cook-all)
|
gokhlayeh@186
|
3203 check_root
|
gokhlayeh@204
|
3204 get_options_list="forced missing"
|
gokhlayeh@186
|
3205 get_tazwok_config
|
gokhlayeh@186
|
3206 source_lib report
|
gokhlayeh@186
|
3207 report start
|
gokhlayeh@204
|
3208 if [ "$missing" ]; then
|
gokhlayeh@204
|
3209 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
3210 else
|
gokhlayeh@204
|
3211 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3212 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
3213 } | sort -u)"
|
gokhlayeh@204
|
3214 fi
|
gokhlayeh@204
|
3215 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@204
|
3216 gen_cook_list
|
gokhlayeh@186
|
3217 cook_list
|
gokhlayeh@186
|
3218 ;;
|
gokhlayeh@186
|
3219 gen-wok-db)
|
gokhlayeh@186
|
3220 check_root
|
gokhlayeh@186
|
3221 get_tazwok_config
|
gokhlayeh@186
|
3222 source_lib report
|
gokhlayeh@186
|
3223 report start
|
gokhlayeh@204
|
3224 gen_wok_db
|
gokhlayeh@186
|
3225 ;;
|
gokhlayeh@186
|
3226 report)
|
gokhlayeh@186
|
3227 get_tazwok_config
|
gokhlayeh@186
|
3228 cd $PACKAGES_REPOSITORY
|
gokhlayeh@239
|
3229 if [ "$2" ]; then
|
gokhlayeh@239
|
3230 case $2 in
|
gokhlayeh@239
|
3231 commit|cooklist|incoming|broken|blocked)
|
gokhlayeh@239
|
3232 show="$2"
|
gokhlayeh@239
|
3233 ;;
|
gokhlayeh@239
|
3234 *)
|
gokhlayeh@239
|
3235 echo "usage : tazwok report [commit|cooklist|incoming|broken|blocked]" >&2
|
gokhlayeh@239
|
3236 exit 1
|
gokhlayeh@239
|
3237 ;;
|
gokhlayeh@239
|
3238 esac
|
gokhlayeh@239
|
3239 else
|
gokhlayeh@239
|
3240 show="commit cooklist incoming broken blocked"
|
gokhlayeh@239
|
3241 fi
|
gokhlayeh@239
|
3242 for i in $show; do
|
gokhlayeh@186
|
3243 if [ -s $i ]; then
|
gokhlayeh@239
|
3244 echo ""
|
gokhlayeh@239
|
3245 echo -e "\033[1m$i\033[0m"
|
slaxemulator@507
|
3246 horizontal_line
|
gokhlayeh@239
|
3247 cat $i
|
slaxemulator@507
|
3248 horizontal_line
|
gokhlayeh@239
|
3249 echo ""
|
gokhlayeh@186
|
3250 fi
|
gokhlayeh@186
|
3251 done
|
gokhlayeh@186
|
3252 ;;
|
gokhlayeh@186
|
3253 check-incoming)
|
gokhlayeh@186
|
3254 check_root
|
gokhlayeh@214
|
3255 get_options_list="forced"
|
gokhlayeh@186
|
3256 get_tazwok_config
|
gokhlayeh@186
|
3257 source_lib report
|
gokhlayeh@186
|
3258 report start
|
gokhlayeh@307
|
3259 [ -f $LOCAL_RESOSITORY/incoming ] && rm [ -f $LOCAL_REPOSITORY/incoming ]
|
gokhlayeh@307
|
3260 report step "Checking $INCOMING_REPOSITORY"
|
gokhlayeh@307
|
3261 report open-bloc
|
gokhlayeh@313
|
3262 [ -f $LOCAL_REPOSITORY/log/incoming.html ] && rm $LOCAL_REPOSITORY/log/incoming.html
|
gokhlayeh@307
|
3263 report sublog $LOCAL_REPOSITORY/log/incoming.html
|
gokhlayeh@352
|
3264 echo "incoming" > $LOCAL_REPOSITORY/log/package
|
gokhlayeh@186
|
3265 check_for_incoming
|
gokhlayeh@307
|
3266 report end-sublog
|
gokhlayeh@307
|
3267 report close-bloc
|
gokhlayeh@186
|
3268 ;;
|
gokhlayeh@190
|
3269 configure-chroot)
|
gokhlayeh@190
|
3270 check_root
|
gokhlayeh@190
|
3271 get_tazwok_config
|
gokhlayeh@190
|
3272 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@190
|
3273 cd $LOCAL_REPOSITORY
|
gokhlayeh@190
|
3274 configure_tazchroot
|
gokhlayeh@190
|
3275 else
|
paul@430
|
3276 echo "The package tazchroot needs to be installed" >&2
|
gokhlayeh@190
|
3277 exit 1
|
gokhlayeh@190
|
3278 fi
|
gokhlayeh@190
|
3279 ;;
|
gokhlayeh@186
|
3280 chroot)
|
gokhlayeh@186
|
3281 check_root
|
gokhlayeh@186
|
3282 get_tazwok_config
|
gokhlayeh@186
|
3283 # Merge this and the other chroot function ?.
|
gokhlayeh@186
|
3284 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3285 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3286 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3287 tazchroot
|
gokhlayeh@186
|
3288 else
|
paul@430
|
3289 echo "The package tazchroot needs to be installed" >&2
|
gokhlayeh@186
|
3290 exit 1
|
gokhlayeh@186
|
3291 fi
|
gokhlayeh@186
|
3292 ;;
|
gokhlayeh@186
|
3293 cook-toolchain)
|
gokhlayeh@186
|
3294 check_root
|
gokhlayeh@186
|
3295 get_tazwok_config
|
gokhlayeh@186
|
3296 echo -n "" > $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
3297 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3298 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3299 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3300 tazchroot cook-toolchain
|
gokhlayeh@186
|
3301 # Buggy : chroot can be elsewhere.
|
gokhlayeh@186
|
3302 rm -r $LOCAL_REPOSITORY/chroot
|
paul@430
|
3303 # /!\ to be written :
|
gokhlayeh@186
|
3304 # next rm chroot and plan cook-all by pushing all packages
|
gokhlayeh@186
|
3305 # in cooklist.
|
gokhlayeh@186
|
3306 else
|
paul@430
|
3307 echo "The package tazchroot needs to be installed" >&2
|
gokhlayeh@186
|
3308 exit 1
|
gokhlayeh@186
|
3309 fi
|
gokhlayeh@186
|
3310 ;;
|
gokhlayeh@235
|
3311 webserver)
|
gokhlayeh@235
|
3312 check_root
|
gokhlayeh@235
|
3313 get_tazwok_config
|
gokhlayeh@235
|
3314 if [ "$ARG" = on ]; then
|
gokhlayeh@235
|
3315 if [ "$WEBSERVER" ] && [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3316 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3317 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3318 exit 1
|
gokhlayeh@235
|
3319 fi
|
gokhlayeh@235
|
3320 if ! [ -f $LOCAL_REPOSITORY/tazchroot.conf ]; then
|
gokhlayeh@235
|
3321 tazwok configure-chroot ${undigest:+--undigest=$undigest} --SLITAZ_VERSION=$SLITAZ_VERSION --SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@235
|
3322 fi
|
gokhlayeh@235
|
3323 for pkg in php lighttpd; do
|
gokhlayeh@235
|
3324 [ -d $INSTALLED/$pkg ] || missing="$missing $pkg"
|
gokhlayeh@235
|
3325 done
|
gokhlayeh@235
|
3326 if [ "$missing" ]; then
|
paul@430
|
3327 echo "You need to install these packages to start webserver: $missing." >&2
|
gokhlayeh@235
|
3328 exit 1
|
gokhlayeh@235
|
3329 fi
|
gokhlayeh@235
|
3330 if [ ! -f "$LOCAL_REPOSITORY/tazwok.conf" ]; then
|
gokhlayeh@235
|
3331 echo "Copying /etc/slitaz/tazwok.conf to $LOCAL_REPOSITORY/tazwok.conf: webserver is configured repository-by-repository."
|
gokhlayeh@235
|
3332 cp /etc/slitaz/tazwok.conf $LOCAL_REPOSITORY
|
gokhlayeh@235
|
3333 fi
|
gokhlayeh@235
|
3334 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3335 echo -n "Where to store php pages (default: /var/www/vhosts/bb)? "
|
gokhlayeh@235
|
3336 read WEBSERVER
|
gokhlayeh@235
|
3337 [ "$WEBSERVER" ] || WEBSERVER="/var/www/vhosts/bb"
|
gokhlayeh@235
|
3338 fi
|
gokhlayeh@235
|
3339 if [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3340 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3341 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3342 exit 1
|
gokhlayeh@235
|
3343 fi
|
gokhlayeh@235
|
3344 mkdir -p $WEBSERVER
|
gokhlayeh@235
|
3345 echo "${undigest:-$SLITAZ_VERSION}" >> $WEBSERVER/repositories.list
|
gokhlayeh@267
|
3346 for file in index.php log.php download.php; do
|
gokhlayeh@235
|
3347 [ -f "$WEBSERVER/$file" ] || ln -s /usr/share/slitaz/web-bb/$file $WEBSERVER
|
gokhlayeh@235
|
3348 done
|
gokhlayeh@267
|
3349 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3350 ln -s $dir $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3351 done
|
gokhlayeh@235
|
3352 source $LOCAL_REPOSITORY/tazchroot.conf
|
gokhlayeh@235
|
3353 echo "<?php
|
gokhlayeh@235
|
3354
|
gokhlayeh@235
|
3355 // Web interface configuration
|
gokhlayeh@235
|
3356
|
gokhlayeh@235
|
3357 \$version=\"${undigest:-$SLITAZ_VERSION}\";
|
gokhlayeh@235
|
3358 \$chroot=\"$chroot_dir\";
|
pascal@360
|
3359 \$lockfile=\"\$chroot/proc/1/status\";
|
gokhlayeh@235
|
3360 \$db_dir=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3361 \$log_dir=\"$LOCAL_REPOSITORY/log\";
|
gokhlayeh@235
|
3362 \$packages=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3363 \$incoming=\"$INCOMING_REPOSITORY\";
|
gokhlayeh@251
|
3364 \$wok=\"$WOK\";
|
gokhlayeh@235
|
3365
|
gokhlayeh@235
|
3366 ?>" > $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@235
|
3367 [ -L "$WEBSERVER/web" ] || ln -s /usr/share/slitaz/web $WEBSERVER
|
gokhlayeh@235
|
3368 echo "WEBSERVER=\"$WEBSERVER\"" >> $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3369 if [ -L "$WEBSERVER/conf.php" ]; then
|
paul@430
|
3370 echo "Do you want to make ${undigest:-$SLITAZ_VERSION} the default page (y/N) ? "
|
gokhlayeh@235
|
3371 read answer
|
gokhlayeh@235
|
3372 if [ "$answer" = y ]; then
|
gokhlayeh@235
|
3373 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3374 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3375 fi
|
gokhlayeh@235
|
3376 else
|
gokhlayeh@235
|
3377 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3378 fi
|
gokhlayeh@235
|
3379 elif [ "$ARG" = off ]; then
|
gokhlayeh@235
|
3380 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3381 echo "No webserver running for ${undigest:-$SLITAZ_VERSION}" >&2
|
gokhlayeh@235
|
3382 exit 1
|
gokhlayeh@235
|
3383 fi
|
gokhlayeh@235
|
3384 sed '/^WEBSERVER/d' -i $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3385 sed "/^${undigest:-$SLITAZ_VERSION}$/d" -i $WEBSERVER/repositories.list
|
gokhlayeh@235
|
3386 rm $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@267
|
3387 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3388 rm $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3389 done
|
gokhlayeh@235
|
3390 if ! [ -s "$WEBSERVER/repositories.list" ]; then
|
paul@430
|
3391 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
|
3392 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3393 elif [ "$(readlink $WEBSERVER/conf.php)" = "$WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php" ]; then
|
gokhlayeh@235
|
3394 echo "${undigest:-$SLITAZ_VERSION} was the default version to use; switched to : $(sed 1!d $WEBSERVER/repositories.list)"
|
gokhlayeh@235
|
3395 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3396 ln -s $WEBSERVER/conf-$(sed 1!d $WEBSERVER/repositories.list).php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3397 fi
|
gokhlayeh@235
|
3398 else
|
gokhlayeh@235
|
3399 echo "Usage: tazwok webserver on/off" >&2
|
gokhlayeh@235
|
3400 exit 1
|
gokhlayeh@235
|
3401 fi
|
gokhlayeh@235
|
3402 ;;
|
pankso@354
|
3403 block)
|
pankso@354
|
3404 # Add a pkg name to the list of blocked packages.
|
gokhlayeh@367
|
3405 get_tazwok_config
|
gokhlayeh@367
|
3406 check_root
|
gokhlayeh@367
|
3407 check_for_package_on_cmdline
|
gokhlayeh@367
|
3408 if ! [ -f $WOK/$PACKAGE/receipt ]; then
|
paul@430
|
3409 echo "Can't find $PACKAGE in wok." >&2
|
gokhlayeh@367
|
3410 echo ""
|
gokhlayeh@367
|
3411 exit 1
|
gokhlayeh@367
|
3412 fi
|
pankso@354
|
3413 echo ""
|
gokhlayeh@367
|
3414 if grep -qs "^$PACKAGE$" $PACKAGES_REPOSITORY/blocked; then
|
gokhlayeh@367
|
3415 echo "$PACKAGE is already in the blocked packages list." >&2
|
gokhlayeh@367
|
3416 echo ""
|
gokhlayeh@367
|
3417 exit 1
|
pankso@354
|
3418 else
|
gokhlayeh@367
|
3419 echo -n "Adding $PACKAGE to : $PACKAGES_REPOSITORY/blocked... "
|
gokhlayeh@367
|
3420 echo "$PACKAGE" >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@367
|
3421 status
|
gokhlayeh@367
|
3422 if grep -q "^$PACKAGE$" $PACKAGES_REPOSITORY/cooklist; then
|
gokhlayeh@367
|
3423 echo -n "Removing $PACKAGE from : $PACKAGES_REPOSITORY/cooklist... "
|
gokhlayeh@367
|
3424 sed -i /"^$PACKAGE$"/d $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@367
|
3425 status
|
pankso@354
|
3426 fi
|
pankso@354
|
3427 fi
|
pankso@354
|
3428 echo "" ;;
|
pankso@354
|
3429 unblock)
|
pankso@354
|
3430 # Remove a pkg name from the list of blocked packages.
|
gokhlayeh@367
|
3431 get_tazwok_config
|
gokhlayeh@367
|
3432 check_root
|
gokhlayeh@367
|
3433 check_for_package_on_cmdline
|
gokhlayeh@367
|
3434 if ! [ -f $WOK/$PACKAGE/receipt ]; then
|
paul@430
|
3435 echo "Can't find $PACKAGE in wok." >&2
|
gokhlayeh@367
|
3436 echo ""
|
gokhlayeh@367
|
3437 exit 1
|
gokhlayeh@367
|
3438 fi
|
pankso@354
|
3439 echo ""
|
gokhlayeh@367
|
3440 if grep -qs "^$PACKAGE$" $PACKAGES_REPOSITORY/blocked; then
|
gokhlayeh@367
|
3441 echo -n "Removing $PACKAGE from : $PACKAGES_REPOSITORY/blocked... "
|
gokhlayeh@367
|
3442 sed -i /"^$PACKAGE$"/d $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@367
|
3443 sed -i '/^$/d' $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@367
|
3444 status
|
pankso@354
|
3445 else
|
gokhlayeh@367
|
3446 echo "$PACKAGE is not in the blocked packages list." >&2
|
gokhlayeh@367
|
3447 echo ""
|
gokhlayeh@367
|
3448 exit 1
|
pankso@354
|
3449 fi
|
pankso@354
|
3450 echo "" ;;
|
pankso@7
|
3451 usage|*)
|
MikeDSmith25@82
|
3452 # Print usage also for all unknown commands.
|
pankso@7
|
3453 #
|
pankso@7
|
3454 usage
|
gokhlayeh@186
|
3455 ;;
|
pankso@7
|
3456 esac
|
pankso@7
|
3457
|
gokhlayeh@313
|
3458 report stop 2>/dev/null
|
pankso@7
|
3459 exit 0
|