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