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