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