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@266
|
1169 if [ "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then
|
gokhlayeh@266
|
1170 sed "/^$PACKAGE\t/d" -i $wan_db $dep_db
|
gokhlayeh@266
|
1171 for i in cookorder.txt cooklist commit blocked broken; do
|
gokhlayeh@266
|
1172 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/$i
|
gokhlayeh@266
|
1173 done
|
gokhlayeh@266
|
1174 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@266
|
1175 regen_cooklist=yes
|
gokhlayeh@266
|
1176 else
|
gokhlayeh@266
|
1177 echo "$PACKAGE" >> $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1178 sed -n '1,10p' -i $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1179 fi
|
gokhlayeh@186
|
1180 fi
|
gokhlayeh@170
|
1181 fi
|
gokhlayeh@170
|
1182 done
|
gokhlayeh@215
|
1183 echo "$updated_pkg" | sed 1d | while read PACKAGE pkg; do
|
gokhlayeh@202
|
1184 erase_package_info
|
gokhlayeh@202
|
1185 get_packages_info
|
gokhlayeh@202
|
1186 done
|
gokhlayeh@204
|
1187 unset updated_pkg
|
gokhlayeh@202
|
1188
|
gokhlayeh@186
|
1189 # Look for new packages.
|
gokhlayeh@195
|
1190 for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
|
gokhlayeh@199
|
1191 if ! fgrep -q " ${pkg##*/}" $pkg_repository/packages.md5; then
|
gokhlayeh@186
|
1192 get_packages_info
|
gokhlayeh@186
|
1193 fi
|
gokhlayeh@186
|
1194 done
|
gokhlayeh@186
|
1195 report end-step
|
gokhlayeh@186
|
1196 packages_db_end
|
gokhlayeh@186
|
1197 }
|
gokhlayeh@186
|
1198
|
gokhlayeh@186
|
1199 packages_db_start()
|
gokhlayeh@186
|
1200 {
|
gokhlayeh@186
|
1201 if [ ! -s packages.txt ]; then
|
gokhlayeh@186
|
1202 echo "# SliTaz GNU/Linux - Packages list
|
gokhlayeh@186
|
1203 #
|
gokhlayeh@186
|
1204 # Packages : unknow
|
gokhlayeh@186
|
1205 # Date : $(date +%Y-%m-%d\ \%H:%M:%S)
|
gokhlayeh@215
|
1206 #
|
gokhlayeh@215
|
1207 " > packages.txt
|
pascal@62
|
1208 else
|
gokhlayeh@186
|
1209 sed -e 's/^# Packages :.*/# Packages : unknow/' \
|
gokhlayeh@186
|
1210 -e "s/# Date :.*/# Date : $(date +%Y-%m-%d\ \%H:%M:%S)/" \
|
gokhlayeh@186
|
1211 -i packages.txt
|
pascal@60
|
1212 fi
|
gokhlayeh@186
|
1213
|
gokhlayeh@186
|
1214 # Needed in some case as tazwok define RECEIPT at configuration time
|
gokhlayeh@186
|
1215 # in this particular case it can broke the script.
|
gokhlayeh@186
|
1216 unset RECEIPT
|
gokhlayeh@186
|
1217 }
|
gokhlayeh@186
|
1218
|
gokhlayeh@186
|
1219 erase_package_info()
|
gokhlayeh@186
|
1220 {
|
gokhlayeh@186
|
1221 cd $pkg_repository
|
gokhlayeh@186
|
1222 sed "/^$PACKAGE$/,/^$/d" -i packages.txt
|
gokhlayeh@186
|
1223 sed "/^$PACKAGE /d" -i packages.desc
|
gokhlayeh@186
|
1224 sed -e "s/=$PACKAGE /= /" -e "s/ $PACKAGE / /" -e "s/ $PACKAGE$//" \
|
gokhlayeh@186
|
1225 -e "/=$PACKAGE$/d" -e "s/=[0-9,a-z,A-Z]:$PACKAGE /= /" \
|
gokhlayeh@186
|
1226 -e "s/ [0-9,a-z,A-Z]:$PACKAGE / /" -e "s/ [0-9,a-z,A-Z]:$PACKAGE$/ /" \
|
gokhlayeh@186
|
1227 -e "/=[0-9,a-z,A-Z]:$PACKAGE$/d" \
|
gokhlayeh@186
|
1228 -i packages.equiv
|
gokhlayeh@186
|
1229 sed "/^$PACKAGE:/d" -i files.list
|
gokhlayeh@186
|
1230 sed "/^$(basename ${pkg%.tazpkg})$/d" -i packages.list
|
gokhlayeh@186
|
1231 sed "/ $(basename $pkg)$/d" -i packages.md5
|
gokhlayeh@186
|
1232 }
|
gokhlayeh@186
|
1233
|
gokhlayeh@186
|
1234 get_packages_info()
|
gokhlayeh@186
|
1235 {
|
gokhlayeh@186
|
1236 # If there's no taz folder in the wok, extract infos from the
|
gokhlayeh@186
|
1237 # package.
|
gokhlayeh@186
|
1238 get_pkg_files $pkg
|
gokhlayeh@186
|
1239 source_receipt
|
gokhlayeh@186
|
1240 echo "Getting datas from $PACKAGE"
|
gokhlayeh@186
|
1241
|
gokhlayeh@186
|
1242 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@28
|
1243 $PACKAGE
|
gokhlayeh@186
|
1244 $VERSION$EXTRAVERSION
|
pankso@28
|
1245 $SHORT_DESC
|
pankso@28
|
1246 _EOT_
|
gokhlayeh@215
|
1247 if [ "$PACKED_SIZE" ]; then
|
gokhlayeh@215
|
1248 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@133
|
1249 $PACKED_SIZE ($UNPACKED_SIZE installed)
|
gokhlayeh@215
|
1250
|
pascal@60
|
1251 _EOT_
|
gokhlayeh@215
|
1252 else
|
gokhlayeh@215
|
1253 echo "" >> $pkg_repository/packages.txt
|
gokhlayeh@215
|
1254 fi
|
gokhlayeh@186
|
1255
|
paul@121
|
1256 # Packages.desc is used by Tazpkgbox <tree>.
|
gokhlayeh@186
|
1257 echo "$PACKAGE | $VERSION$EXTRAVERSION | $SHORT_DESC | $CATEGORY | $WEB_SITE" >> $pkg_repository/packages.desc
|
gokhlayeh@186
|
1258
|
paul@121
|
1259 # Packages.equiv is used by tazpkg install to check depends
|
pascal@99
|
1260 for i in $PROVIDE; do
|
pascal@99
|
1261 DEST=""
|
gokhlayeh@195
|
1262 echo $i | fgrep -q : && DEST="${i#*:}:"
|
gokhlayeh@186
|
1263 if grep -qs ^${i%:*}= $pkg_repository/packages.equiv; then
|
gokhlayeh@186
|
1264 sed -i "s/^${i%:*}=/${i%:*}=$DEST$PACKAGE /" $pkg_repository/packages.equiv
|
pascal@99
|
1265 else
|
gokhlayeh@186
|
1266 echo "${i%:*}=$DEST$PACKAGE" >> $pkg_repository/packages.equiv
|
gokhlayeh@186
|
1267 fi
|
gokhlayeh@186
|
1268 done
|
gokhlayeh@186
|
1269
|
gokhlayeh@186
|
1270 if [ -f files.list ]; then
|
gokhlayeh@186
|
1271 { echo "$PACKAGE"; cat files.list; } | awk '
|
gokhlayeh@186
|
1272 BEGIN { name="" } { if (name == "") name=$0; else printf("%s: %s\n",name,$0); }' >> $pkg_repository/files.list
|
gokhlayeh@186
|
1273 fi
|
gokhlayeh@186
|
1274
|
gokhlayeh@186
|
1275 cd .. && rm -r "$pkg_files_dir"
|
gokhlayeh@186
|
1276
|
gokhlayeh@186
|
1277 cd $pkg_repository
|
gokhlayeh@186
|
1278 echo $(basename ${pkg%.tazpkg}) >> packages.list
|
gokhlayeh@186
|
1279 [ ! "$package_md5" ] && package_md5=$(md5sum $(basename $pkg))
|
gokhlayeh@186
|
1280 echo "$package_md5" >> packages.md5
|
gokhlayeh@186
|
1281 unset package_md5
|
gokhlayeh@186
|
1282 }
|
gokhlayeh@186
|
1283
|
gokhlayeh@186
|
1284 source_receipt()
|
gokhlayeh@186
|
1285 {
|
gokhlayeh@186
|
1286 unset PACKAGE SOURCE VERSION EXTRAVERSION CATEGORY SHORT_DESC \
|
gokhlayeh@186
|
1287 MAINTAINER WEB_SITE WGET_URL DEPENDS BUILD_DEPENDS WANTED \
|
gokhlayeh@186
|
1288 PACKED_SIZE UNPACKED_SIZE COOK_OPT PROVIDE CONFIG_FILES TAGS \
|
gokhlayeh@266
|
1289 src _pkg DESTDIR CONFIG_SITE BRANCH TARBALL
|
gokhlayeh@186
|
1290 . ${RECEIPT:-$PWD/receipt}
|
gokhlayeh@186
|
1291 }
|
gokhlayeh@186
|
1292
|
gokhlayeh@186
|
1293 packages_db_end()
|
gokhlayeh@186
|
1294 {
|
gokhlayeh@186
|
1295 cd $pkg_repository
|
gokhlayeh@186
|
1296 pkgs=$(wc -l packages.list | sed 's/ .*//')
|
gokhlayeh@186
|
1297 sed "s/# Packages : .*/# Packages : $pkgs/" -i packages.txt
|
gokhlayeh@186
|
1298
|
gokhlayeh@186
|
1299 # If lists was updated it's generally needed to sort them well.
|
gokhlayeh@186
|
1300 if ! sort -c packages.list 2> /dev/null; then
|
gokhlayeh@186
|
1301 report step "Sorting packages lists"
|
gokhlayeh@186
|
1302 for file in packages.list packages.desc packages.equiv; do
|
gokhlayeh@186
|
1303 [ -f $file ] || continue
|
gokhlayeh@186
|
1304 sort -o $file $file
|
gokhlayeh@186
|
1305 done
|
gokhlayeh@186
|
1306 report end-step
|
gokhlayeh@186
|
1307 fi
|
gokhlayeh@186
|
1308
|
gokhlayeh@186
|
1309 # Dont log this because lzma always output error.
|
gokhlayeh@186
|
1310 lzma e files.list files.list.lzma
|
gokhlayeh@204
|
1311 rm -f files.list
|
gokhlayeh@204
|
1312 [ -f packages.equiv ] || touch packages.equiv
|
gokhlayeh@186
|
1313 }
|
gokhlayeh@186
|
1314
|
gokhlayeh@186
|
1315 ########################################################################
|
gokhlayeh@186
|
1316 # This section contains functions to generate wok database.
|
gokhlayeh@186
|
1317 ########################
|
gokhlayeh@186
|
1318
|
gokhlayeh@186
|
1319 gen_wok_db()
|
gokhlayeh@186
|
1320 {
|
gokhlayeh@204
|
1321 report step "Generating wok database"
|
gokhlayeh@186
|
1322 report open-bloc
|
gokhlayeh@204
|
1323 report step "Removing old files"
|
gokhlayeh@204
|
1324 for file in $wan_db $dep_db $PACKAGES_REPOSITORY/cookorder.txt; do
|
gokhlayeh@204
|
1325 [ -f $file ] && rm $file
|
gokhlayeh@204
|
1326 done
|
gokhlayeh@186
|
1327 report step "Generating wok-wanted.txt"
|
gokhlayeh@204
|
1328 gen_wan_db
|
gokhlayeh@186
|
1329 report step "Generating wok-depends.txt"
|
gokhlayeh@204
|
1330 for PACKAGE in $(cut -f1 -d '|' $PACKAGES_REPOSITORY/packages.desc \
|
gokhlayeh@204
|
1331 $INCOMING_REPOSITORY/packages.desc | sort -u); do
|
gokhlayeh@186
|
1332 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1333 if [ -s $RECEIPT ]; then
|
gokhlayeh@186
|
1334 source_receipt
|
gokhlayeh@186
|
1335 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pankso@133
|
1336 fi
|
pascal@99
|
1337 done
|
gokhlayeh@215
|
1338 sort_db
|
gokhlayeh@204
|
1339 report close-bloc
|
gokhlayeh@204
|
1340 }
|
gokhlayeh@204
|
1341
|
gokhlayeh@204
|
1342 gen_wan_db()
|
gokhlayeh@204
|
1343 {
|
gokhlayeh@204
|
1344 for RECEIPT in $(fgrep -l WANTED $WOK/*/receipt); do
|
gokhlayeh@204
|
1345 WANTED=
|
gokhlayeh@204
|
1346 source $RECEIPT
|
gokhlayeh@204
|
1347 [ "$WANTED" ] || continue
|
gokhlayeh@204
|
1348 echo -e $PACKAGE"\t"$WANTED >> $tmp/wan_db
|
gokhlayeh@204
|
1349 done
|
gokhlayeh@215
|
1350 if ! [ -f $wan_db ] || [ "$(diff -q $tmp/wan_db $wan_db)" ]; then
|
gokhlayeh@204
|
1351 mv -f $tmp/wan_db $wan_db
|
gokhlayeh@204
|
1352 plan_regen_cookorder=yes
|
gokhlayeh@204
|
1353 else
|
gokhlayeh@204
|
1354 rm $tmp/wan_db
|
gokhlayeh@204
|
1355 fi
|
gokhlayeh@204
|
1356 }
|
gokhlayeh@204
|
1357
|
gokhlayeh@215
|
1358 update_wan_db()
|
gokhlayeh@215
|
1359 {
|
gokhlayeh@215
|
1360 local PACKAGE
|
gokhlayeh@215
|
1361 for RECEIPT in $(fgrep WANTED $WOK/*/receipt | \
|
gokhlayeh@215
|
1362 fgrep $PACKAGE | cut -f1 -d ':'); do
|
gokhlayeh@215
|
1363 WANTED=
|
gokhlayeh@215
|
1364 source $RECEIPT
|
gokhlayeh@215
|
1365 [ "$WANTED" ] || continue
|
gokhlayeh@219
|
1366 wan_info=$(echo -e $PACKAGE"\t"$WANTED)
|
gokhlayeh@215
|
1367 [ "$wan_info" = "$(grep -m1 ^$PACKAGE$'\t' $wan_db 2>/dev/null)" ] && return
|
gokhlayeh@215
|
1368 sed "/^$PACKAGE\t/d" -i $wan_db
|
gokhlayeh@220
|
1369 echo "$wan_info" >> $wan_db
|
gokhlayeh@215
|
1370 plan_regen_cookorder=yes
|
gokhlayeh@215
|
1371 plan_sort_wandb=yes
|
gokhlayeh@215
|
1372 done
|
gokhlayeh@215
|
1373 }
|
gokhlayeh@215
|
1374
|
gokhlayeh@204
|
1375 update_dep_db()
|
gokhlayeh@204
|
1376 {
|
gokhlayeh@204
|
1377 dep_info=$(echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ')
|
gokhlayeh@215
|
1378 [ "$dep_info" = "$(grep -m1 ^$PACKAGE$'\t' $dep_db 2>/dev/null)" ] && return
|
gokhlayeh@204
|
1379 sed "/^$PACKAGE\t/d" -i $dep_db
|
gokhlayeh@204
|
1380 echo "$dep_info" >> $dep_db
|
gokhlayeh@204
|
1381 plan_regen_cookorder=yes
|
gokhlayeh@204
|
1382 plan_sort_depdb=yes
|
pankso@28
|
1383 }
|
pankso@28
|
1384
|
gokhlayeh@186
|
1385 sort_db()
|
pascal@91
|
1386 {
|
gokhlayeh@186
|
1387 report step "Generating cookorder.txt"
|
gokhlayeh@186
|
1388 cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do
|
gokhlayeh@186
|
1389 grep -q ^$PACKAGE$'\t' $wan_db && continue
|
gokhlayeh@186
|
1390
|
gokhlayeh@186
|
1391 # Replace each BUILD_DEPENDS with a WANTED package by it's
|
gokhlayeh@186
|
1392 # WANTED package.
|
gokhlayeh@186
|
1393 replace_by_wanted()
|
gokhlayeh@186
|
1394 {
|
gokhlayeh@186
|
1395 for p in $BUILD_DEPENDS; do
|
gokhlayeh@186
|
1396 if grep -q ^$p$'\t' $wan_db; then
|
gokhlayeh@186
|
1397 echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' '
|
gokhlayeh@186
|
1398 else
|
gokhlayeh@186
|
1399 echo -n $p' '
|
gokhlayeh@186
|
1400 fi
|
gokhlayeh@186
|
1401 done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' '
|
gokhlayeh@186
|
1402 }
|
gokhlayeh@186
|
1403 echo -e $PACKAGE"\t $(replace_by_wanted) "
|
gokhlayeh@186
|
1404 done > $tmp/db
|
gokhlayeh@186
|
1405 while [ -s "$tmp/db" ]; do
|
gokhlayeh@186
|
1406 status=start
|
gokhlayeh@186
|
1407 for pkg in $(cut -f 1 $tmp/db); do
|
gokhlayeh@195
|
1408 if ! fgrep -q ' '$pkg' ' $tmp/db; then
|
gokhlayeh@186
|
1409 echo $pkg >> $tmp/cookorder
|
gokhlayeh@186
|
1410 sed -e "/^$pkg\t/d" -e "s/ $pkg / /g" -i $tmp/db
|
gokhlayeh@186
|
1411 status=proceed
|
gokhlayeh@186
|
1412 fi
|
gokhlayeh@186
|
1413 done
|
gokhlayeh@186
|
1414 if [ "$status" = start ]; then
|
gokhlayeh@186
|
1415 cp -f $tmp/db /tmp/remain-depends.txt
|
gokhlayeh@186
|
1416 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
|
1417 for blocked in $(cut -f 1 $tmp/db); do
|
gokhlayeh@186
|
1418 echo "$blocked" >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@186
|
1419 done
|
gokhlayeh@186
|
1420 break
|
gokhlayeh@186
|
1421 fi
|
gokhlayeh@186
|
1422 done
|
gokhlayeh@186
|
1423 [ -s $tmp/cookorder ] || touch $tmp/cookorder
|
gokhlayeh@186
|
1424
|
gokhlayeh@186
|
1425 # The toolchain packages are moved in first position.
|
gokhlayeh@186
|
1426 grep $(for pkg in `scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
1427 --look_for=all --with_args`; do echo " -e ^$pkg$"; done) \
|
gokhlayeh@186
|
1428 $tmp/cookorder | tac > $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1429 for pkg in $(cat $PACKAGES_REPOSITORY/cookorder.txt); do
|
gokhlayeh@186
|
1430 sed "/^$pkg$/d" -i $tmp/cookorder
|
gokhlayeh@186
|
1431 done
|
gokhlayeh@186
|
1432
|
gokhlayeh@186
|
1433 tac $tmp/cookorder >> $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@204
|
1434 unset plan_regen_cookorder
|
gokhlayeh@186
|
1435 report end-step
|
pascal@91
|
1436 }
|
pascal@91
|
1437
|
gokhlayeh@186
|
1438 ########################################################################
|
gokhlayeh@186
|
1439 # SCAN CORE
|
gokhlayeh@186
|
1440 ########################
|
gokhlayeh@186
|
1441 # Include various scan core-functions. It's not intended to be used
|
gokhlayeh@186
|
1442 # directly : prefer scan wrappers in next section.
|
gokhlayeh@186
|
1443
|
gokhlayeh@186
|
1444 look_for_dep()
|
gokhlayeh@186
|
1445 {
|
gokhlayeh@186
|
1446 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1447 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1448 | cut -f 2
|
gokhlayeh@186
|
1449 else
|
gokhlayeh@280
|
1450 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1451 cut -f 2
|
gokhlayeh@186
|
1452 fi
|
gokhlayeh@186
|
1453 }
|
gokhlayeh@186
|
1454
|
gokhlayeh@186
|
1455 look_for_bdep()
|
gokhlayeh@186
|
1456 {
|
gokhlayeh@186
|
1457 look_for_all
|
gokhlayeh@186
|
1458 }
|
gokhlayeh@186
|
1459
|
gokhlayeh@186
|
1460 look_for_all()
|
gokhlayeh@186
|
1461 {
|
gokhlayeh@186
|
1462 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1463 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1464 | cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1465 else
|
gokhlayeh@280
|
1466 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1467 cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1468 fi
|
gokhlayeh@186
|
1469 }
|
gokhlayeh@186
|
1470
|
gokhlayeh@186
|
1471 look_for_rdep()
|
gokhlayeh@186
|
1472 {
|
gokhlayeh@195
|
1473 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | cut -f 1
|
gokhlayeh@186
|
1474 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1475 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt | cut -f 1); do
|
gokhlayeh@186
|
1476 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1477 echo "$rdep"
|
gokhlayeh@186
|
1478 fi
|
gokhlayeh@186
|
1479 done
|
gokhlayeh@186
|
1480 fi
|
gokhlayeh@186
|
1481 }
|
gokhlayeh@186
|
1482
|
gokhlayeh@186
|
1483 look_for_rbdep()
|
gokhlayeh@186
|
1484 {
|
gokhlayeh@195
|
1485 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@195
|
1486 cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1
|
gokhlayeh@186
|
1487 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1488 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@195
|
1489 | cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1); do
|
gokhlayeh@186
|
1490 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1491 echo "$rdep"
|
gokhlayeh@186
|
1492 fi
|
gokhlayeh@186
|
1493 done
|
gokhlayeh@186
|
1494 fi
|
gokhlayeh@186
|
1495 }
|
gokhlayeh@186
|
1496
|
gokhlayeh@186
|
1497 # Return WANTED if it exists.
|
gokhlayeh@186
|
1498 look_for_wanted()
|
gokhlayeh@186
|
1499 {
|
gokhlayeh@186
|
1500 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1501 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1502 else
|
gokhlayeh@280
|
1503 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1504 fi
|
gokhlayeh@186
|
1505 }
|
gokhlayeh@186
|
1506
|
gokhlayeh@186
|
1507 # Return packages which wants PACKAGE.
|
gokhlayeh@186
|
1508 look_for_rwanted()
|
gokhlayeh@186
|
1509 {
|
gokhlayeh@186
|
1510 grep $'\t'$PACKAGE$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1
|
gokhlayeh@186
|
1511 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1512 for rwanted in $(grep $'\t'$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 1); do
|
gokhlayeh@186
|
1513 if [ ! -f "$WOK/$rwanted/receipt" ]; then
|
gokhlayeh@186
|
1514 echo "$rwanted"
|
gokhlayeh@186
|
1515 fi
|
gokhlayeh@186
|
1516 done
|
gokhlayeh@186
|
1517 fi
|
gokhlayeh@186
|
1518 }
|
gokhlayeh@186
|
1519
|
gokhlayeh@186
|
1520 look_for_dev()
|
gokhlayeh@186
|
1521 {
|
gokhlayeh@223
|
1522 WANTED=$(look_for_wanted)
|
gokhlayeh@223
|
1523 if [ "$WANTED" ]; then
|
gokhlayeh@223
|
1524 if [ "$undigest" ] && [ ! -f "$WOK/$WANTED/receipt" ]; then
|
gokhlayeh@223
|
1525 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1526 else
|
gokhlayeh@223
|
1527 [ -f "$WOK/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1528 fi
|
gokhlayeh@223
|
1529 fi
|
gokhlayeh@223
|
1530 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@223
|
1531 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1532 else
|
gokhlayeh@223
|
1533 [ -f "$WOK/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1534 fi
|
gokhlayeh@186
|
1535 }
|
gokhlayeh@186
|
1536
|
gokhlayeh@215
|
1537 with_dev()
|
gokhlayeh@215
|
1538 {
|
gokhlayeh@215
|
1539 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1540 echo $PACKAGE
|
gokhlayeh@215
|
1541 look_for_dev
|
gokhlayeh@215
|
1542 done
|
gokhlayeh@215
|
1543 }
|
gokhlayeh@215
|
1544
|
gokhlayeh@215
|
1545 with_wanted()
|
gokhlayeh@215
|
1546 {
|
gokhlayeh@215
|
1547 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1548 echo $PACKAGE
|
gokhlayeh@215
|
1549 look_for_wanted
|
gokhlayeh@215
|
1550 done
|
gokhlayeh@215
|
1551 }
|
gokhlayeh@215
|
1552
|
gokhlayeh@215
|
1553 use_wanted()
|
gokhlayeh@215
|
1554 {
|
gokhlayeh@215
|
1555 for input in $(cat); do
|
gokhlayeh@215
|
1556 { grep ^$input$'\t' $wan_db || echo $input
|
gokhlayeh@215
|
1557 } | sed 's/.*\t//'
|
gokhlayeh@215
|
1558 done
|
gokhlayeh@215
|
1559 }
|
gokhlayeh@215
|
1560
|
gokhlayeh@186
|
1561 ########################################################################
|
gokhlayeh@186
|
1562 # SCAN
|
gokhlayeh@186
|
1563 ########################
|
gokhlayeh@186
|
1564 # Use wok-wanted.txt and wok-depeds.txt to scan depends.
|
gokhlayeh@186
|
1565 # Option in command line (must be first arg) :
|
gokhlayeh@186
|
1566 # --look_for=bdep/rbdep - Look for depends or reverse depends.
|
gokhlayeh@186
|
1567 # --with_dev - Add development packages (*-dev) in the result.
|
gokhlayeh@186
|
1568 # --with_wanted - Add package+reverse wanted in the result.
|
gokhlayeh@186
|
1569 # --with_args - Include packages in argument in the result.
|
gokhlayeh@186
|
1570
|
gokhlayeh@186
|
1571 scan()
|
gokhlayeh@186
|
1572 {
|
gokhlayeh@186
|
1573 # Get packages in argument.
|
gokhlayeh@223
|
1574 local PACKAGE WANTED pkg_list=
|
gokhlayeh@186
|
1575 for arg in $@; do
|
gokhlayeh@186
|
1576 [ "$arg" = "${arg#--}" ] || continue
|
gokhlayeh@186
|
1577 pkg_list="$pkg_list $arg"
|
gokhlayeh@186
|
1578 done
|
gokhlayeh@204
|
1579
|
gokhlayeh@186
|
1580 # Get options.
|
gokhlayeh@186
|
1581 [ "$pkg_list" ] || return
|
gokhlayeh@186
|
1582 local cooklist= look_for= with_dev= with_wanted= with_args= log_command="$0 $@" \
|
gokhlayeh@215
|
1583 get_options_list="look_for with_dev with_wanted with_args cooklist use_wanted"
|
gokhlayeh@186
|
1584 get_options
|
gokhlayeh@186
|
1585
|
gokhlayeh@186
|
1586 # Cooklist is a special case where we need to modify a little
|
gokhlayeh@186
|
1587 # scan behavior
|
gokhlayeh@186
|
1588 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1589 gen_wan_db
|
gokhlayeh@204
|
1590 look_for=all && with_args=yes && with_dev= && with_wanted=
|
gokhlayeh@204
|
1591 filter=use_wanted
|
gokhlayeh@241
|
1592 if [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@241
|
1593 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1594 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@241
|
1595 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@241
|
1596 check_for_missing
|
gokhlayeh@241
|
1597 done
|
gokhlayeh@241
|
1598 append_to_dep()
|
gokhlayeh@241
|
1599 {
|
gokhlayeh@241
|
1600 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@241
|
1601 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1602 else
|
gokhlayeh@241
|
1603 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1604 fi
|
gokhlayeh@241
|
1605 }
|
gokhlayeh@241
|
1606 else
|
gokhlayeh@241
|
1607 append_to_dep()
|
gokhlayeh@241
|
1608 {
|
gokhlayeh@241
|
1609 check_for_commit && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1610 }
|
gokhlayeh@241
|
1611 fi
|
gokhlayeh@204
|
1612 else
|
gokhlayeh@204
|
1613 append_to_dep()
|
gokhlayeh@204
|
1614 {
|
gokhlayeh@204
|
1615 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@204
|
1616 }
|
gokhlayeh@240
|
1617 # If requested packages are not in dep_db, partial generation of this db is needed.
|
gokhlayeh@241
|
1618 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1619 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@240
|
1620 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@240
|
1621 plan_check_for_missing=yes
|
gokhlayeh@240
|
1622 check_for_missing
|
gokhlayeh@240
|
1623 done
|
gokhlayeh@240
|
1624 if [ "$plan_check_for_missing" ]; then
|
gokhlayeh@240
|
1625 append_to_dep()
|
gokhlayeh@240
|
1626 {
|
gokhlayeh@240
|
1627 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@240
|
1628 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1629 else
|
gokhlayeh@240
|
1630 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1631 fi
|
gokhlayeh@240
|
1632 }
|
gokhlayeh@240
|
1633 check_db_status=yes
|
gokhlayeh@240
|
1634 unset plan_check_for_missing
|
gokhlayeh@240
|
1635 fi
|
gokhlayeh@186
|
1636 fi
|
gokhlayeh@215
|
1637
|
gokhlayeh@204
|
1638 [ "$with_dev" ] && filter=with_dev
|
gokhlayeh@204
|
1639 [ "$with_wanted" ] && filter=with_wanted
|
gokhlayeh@204
|
1640 if [ "$filter" ]; then
|
gokhlayeh@204
|
1641 pkg_list=$(echo $pkg_list | $filter)
|
gokhlayeh@204
|
1642 scan_pkg()
|
gokhlayeh@204
|
1643 {
|
gokhlayeh@204
|
1644 look_for_$look_for | $filter
|
gokhlayeh@204
|
1645 }
|
gokhlayeh@204
|
1646 else
|
gokhlayeh@204
|
1647 scan_pkg()
|
gokhlayeh@204
|
1648 {
|
gokhlayeh@204
|
1649 look_for_$look_for
|
gokhlayeh@204
|
1650 }
|
gokhlayeh@204
|
1651 fi
|
gokhlayeh@215
|
1652 touch $tmp/dep
|
gokhlayeh@204
|
1653 for PACKAGE in $pkg_list; do
|
gokhlayeh@204
|
1654 [ "$with_args" ] && append_to_dep
|
gokhlayeh@204
|
1655 scan_pkg
|
gokhlayeh@186
|
1656 done | tr ' ' '\n' | sort -u > $tmp/list
|
gokhlayeh@186
|
1657 [ "$look_for" = bdep ] && look_for=dep
|
gokhlayeh@186
|
1658 while [ -s $tmp/list ]; do
|
gokhlayeh@186
|
1659 PACKAGE=$(sed 1!d $tmp/list)
|
gokhlayeh@186
|
1660 sed 1d -i $tmp/list
|
gokhlayeh@204
|
1661 append_to_dep
|
gokhlayeh@204
|
1662 for pkg in $(scan_pkg); do
|
gokhlayeh@204
|
1663 if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then
|
gokhlayeh@204
|
1664 echo $pkg >> $tmp/list
|
gokhlayeh@186
|
1665 fi
|
gokhlayeh@186
|
1666 done
|
gokhlayeh@186
|
1667 done
|
gokhlayeh@204
|
1668 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1669 mv $tmp/dep $tmp/cooklist
|
gokhlayeh@215
|
1670 else
|
gokhlayeh@204
|
1671 cat $tmp/dep | sort -u
|
gokhlayeh@186
|
1672 fi
|
gokhlayeh@204
|
1673 rm -f $tmp/dep $tmp/list
|
gokhlayeh@240
|
1674 if [ "$check_db_status" ]; then
|
gokhlayeh@240
|
1675 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@240
|
1676 [ "$plan_sort_wandb" ] && sort -o $wan_db $wan_db && unset plan_sort_wandb
|
gokhlayeh@240
|
1677 if [ "$plan_regen_cookorder" ]; then
|
gokhlayeh@240
|
1678 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt || \
|
gokhlayeh@240
|
1679 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@240
|
1680 fi
|
gokhlayeh@240
|
1681 fi
|
gokhlayeh@186
|
1682 }
|
gokhlayeh@186
|
1683
|
gokhlayeh@186
|
1684 ########################################################################
|
gokhlayeh@186
|
1685 # This section contains functions to check package repository and
|
gokhlayeh@186
|
1686 # find which packages to cook.
|
gokhlayeh@186
|
1687 ########################
|
gokhlayeh@186
|
1688
|
gokhlayeh@240
|
1689 check_for_missing()
|
gokhlayeh@240
|
1690 {
|
gokhlayeh@240
|
1691 local PACKAGE
|
gokhlayeh@240
|
1692 if ! check_for_pkg_in_wok; then
|
gokhlayeh@240
|
1693 [ "$?" = 2 ] && return 1
|
gokhlayeh@240
|
1694 return
|
gokhlayeh@240
|
1695 fi
|
gokhlayeh@241
|
1696 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1697 source_receipt
|
gokhlayeh@240
|
1698 PACKAGE=${WANTED:-$PACKAGE}
|
gokhlayeh@240
|
1699 update_wan_db
|
gokhlayeh@240
|
1700 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@240
|
1701 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1702 source_receipt
|
gokhlayeh@240
|
1703 update_dep_db
|
gokhlayeh@240
|
1704 done
|
gokhlayeh@240
|
1705 }
|
gokhlayeh@240
|
1706
|
gokhlayeh@186
|
1707 check_for_commit()
|
gokhlayeh@186
|
1708 {
|
gokhlayeh@204
|
1709 if ! check_for_pkg_in_wok; then
|
gokhlayeh@204
|
1710 [ "$?" = 2 ] && return 1
|
gokhlayeh@204
|
1711 return
|
gokhlayeh@204
|
1712 fi
|
gokhlayeh@204
|
1713 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@204
|
1714 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1715 source_receipt
|
gokhlayeh@204
|
1716
|
gokhlayeh@186
|
1717 # We use md5 of cooking stuff in the packaged receipt to check
|
gokhlayeh@186
|
1718 # commit. We look consecutively in 3 different locations :
|
gokhlayeh@204
|
1719 # - in the wok/PACKAGE/taz/* folder
|
gokhlayeh@186
|
1720 # - in the receipt in the package in incoming repository
|
gokhlayeh@186
|
1721 # - in the receipt in the package in packages repository
|
gokhlayeh@186
|
1722 # If md5sum match, there's no commit.
|
gokhlayeh@186
|
1723 check_for_commit_using_md5sum()
|
gokhlayeh@186
|
1724 {
|
gokhlayeh@186
|
1725 if [ ! -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1726 sed -n '/# md5sum of cooking stuff :/,$p' receipt | \
|
gokhlayeh@186
|
1727 sed -e 1d -e 's/^# //' > $WOK/$PACKAGE/md5
|
gokhlayeh@186
|
1728 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1729 fi
|
gokhlayeh@204
|
1730
|
gokhlayeh@186
|
1731 if [ -s md5 ]; then
|
gokhlayeh@186
|
1732 if md5sum -cs md5; then
|
gokhlayeh@204
|
1733
|
gokhlayeh@204
|
1734 # If md5sum check if ok, check for new/missing files in
|
gokhlayeh@204
|
1735 # cooking stuff.
|
gokhlayeh@204
|
1736 for file in $([ -f receipt ] && echo receipt; \
|
gokhlayeh@204
|
1737 [ -f description.txt ] && echo description.txt; \
|
gokhlayeh@204
|
1738 [ -d stuff ] && find stuff); do
|
gokhlayeh@204
|
1739 if ! fgrep -q " $file" md5; then
|
gokhlayeh@186
|
1740 set_commited
|
gokhlayeh@186
|
1741 fi
|
gokhlayeh@186
|
1742 done
|
gokhlayeh@186
|
1743 else
|
gokhlayeh@186
|
1744 set_commited
|
gokhlayeh@186
|
1745 fi
|
gokhlayeh@186
|
1746 else
|
gokhlayeh@204
|
1747 set_commited
|
gokhlayeh@186
|
1748 fi
|
gokhlayeh@186
|
1749 }
|
gokhlayeh@186
|
1750 set_commited()
|
gokhlayeh@186
|
1751 {
|
gokhlayeh@204
|
1752 ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/commit &&
|
gokhlayeh@204
|
1753 echo $PACKAGE >> $PACKAGES_REPOSITORY/commit
|
gokhlayeh@186
|
1754 gen_cookmd5
|
gokhlayeh@204
|
1755 update_dep_db
|
gokhlayeh@186
|
1756 }
|
gokhlayeh@195
|
1757 taz_dir=$(echo $WOK/$PACKAGE/taz/$PACKAGE-* | fgrep -v '*')
|
gokhlayeh@186
|
1758 if [ -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1759 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1760 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1761 elif [ "$taz_dir" ]; then
|
gokhlayeh@186
|
1762 cd $taz_dir
|
gokhlayeh@186
|
1763 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1764 else
|
gokhlayeh@195
|
1765 pkg=$(echo $INCOMING_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@195
|
1766 [ "$pkg" ] || pkg=$(echo $PACKAGES_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@186
|
1767 if [ "$pkg" ]; then
|
gokhlayeh@186
|
1768 get_pkg_files $pkg
|
gokhlayeh@186
|
1769 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1770 rm -r $pkg_files_dir
|
gokhlayeh@204
|
1771 else
|
gokhlayeh@204
|
1772 set_commited
|
gokhlayeh@186
|
1773 fi
|
gokhlayeh@186
|
1774 fi
|
gokhlayeh@204
|
1775 [ "$forced" ] || echo $PACKAGE >> $tmp/checked
|
gokhlayeh@186
|
1776 done
|
gokhlayeh@204
|
1777 return
|
gokhlayeh@186
|
1778 }
|
gokhlayeh@186
|
1779
|
gokhlayeh@186
|
1780 gen_cook_list()
|
gokhlayeh@186
|
1781 {
|
gokhlayeh@204
|
1782 report step "Scanning wok"
|
gokhlayeh@204
|
1783 if [ "$pkg" ]; then
|
gokhlayeh@204
|
1784 scan $pkg --cooklist
|
gokhlayeh@204
|
1785 else
|
gokhlayeh@204
|
1786 scan `cat $cooklist` --cooklist
|
gokhlayeh@204
|
1787 fi
|
gokhlayeh@204
|
1788 report end-step
|
gokhlayeh@209
|
1789
|
gokhlayeh@209
|
1790 [ -s $tmp/checked ] || [ -s $tmp/cooklist ] || return
|
gokhlayeh@209
|
1791
|
gokhlayeh@209
|
1792 # Core toolchain should not be cooked unless cook-toolchain is used.
|
gokhlayeh@209
|
1793 if ! [ -f /etc/config.site.tmptoolchain ] ; then
|
gokhlayeh@209
|
1794 for PACKAGE in $(scan gcc --look_for=all --with_args --with_wanted); do
|
gokhlayeh@209
|
1795 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/blocked || \
|
gokhlayeh@209
|
1796 echo $PACKAGE >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@209
|
1797 done
|
gokhlayeh@209
|
1798 fi
|
gokhlayeh@209
|
1799
|
gokhlayeh@241
|
1800 if [ -s $PACKAGES_REPOSITORY/commit ] && [ "$COMMAND" != gen-cooklist ]; then
|
gokhlayeh@186
|
1801 cd $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1802 for PACKAGE in $(cat commit); do
|
gokhlayeh@186
|
1803 WANTED="$(look_for_wanted)"
|
gokhlayeh@186
|
1804 if [ "$WANTED" ]; then
|
gokhlayeh@204
|
1805 grep -q ^$WANTED$ broken cooklist blocked commit && continue
|
gokhlayeh@186
|
1806 fi
|
gokhlayeh@204
|
1807 grep -q ^$PACKAGE$ blocked cooklist && continue
|
gokhlayeh@204
|
1808 echo $PACKAGE >> cooklist
|
gokhlayeh@186
|
1809 done
|
gokhlayeh@186
|
1810 fi
|
gokhlayeh@186
|
1811 sort_cooklist
|
gokhlayeh@186
|
1812 }
|
gokhlayeh@186
|
1813
|
gokhlayeh@186
|
1814 sort_cooklist()
|
gokhlayeh@186
|
1815 {
|
gokhlayeh@266
|
1816 if [ "$(sed 1!d $PACKAGES_REPOSITORY/cookorder.txt)" = "#PlanSort" ]; then
|
gokhlayeh@266
|
1817 sed 1d -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@266
|
1818 plan_regen_cookorder=yes
|
gokhlayeh@266
|
1819 fi
|
gokhlayeh@266
|
1820 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@266
|
1821 [ "$plan_regen_cookorder" ] && sort_db
|
gokhlayeh@215
|
1822 report step "Sorting cooklist"
|
gokhlayeh@204
|
1823 if [ -f "$tmp/checked" ]; then
|
gokhlayeh@204
|
1824 rm -f $tmp/cooklist
|
gokhlayeh@204
|
1825 cat $tmp/checked | while read PACKAGE; do
|
gokhlayeh@204
|
1826 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/cooklist && \
|
gokhlayeh@204
|
1827 echo $PACKAGE >> $tmp/cooklist
|
gokhlayeh@204
|
1828 done
|
gokhlayeh@209
|
1829 elif ! [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@209
|
1830 cat $PACKAGES_REPOSITORY/blocked | while read PACKAGE; do
|
gokhlayeh@209
|
1831 sed "/^$PACKAGE/d" -i $tmp/cooklist
|
gokhlayeh@209
|
1832 done
|
gokhlayeh@204
|
1833 fi
|
gokhlayeh@215
|
1834
|
gokhlayeh@204
|
1835 for PACKAGE in $(cat $tmp/cooklist); do
|
gokhlayeh@204
|
1836 WANTED="$(look_for_wanted)"
|
gokhlayeh@204
|
1837 [ "$WANTED" ] || continue
|
gokhlayeh@215
|
1838 if grep -q ^$WANTED$ $PACKAGES_REPOSITORY/broken $tmp/cooklist; then
|
gokhlayeh@186
|
1839 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1840 elif [ ! -d $WOK/$WANTED/install ]; then
|
gokhlayeh@204
|
1841 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1842 echo $WANTED >> $tmp/cooklist
|
gokhlayeh@186
|
1843 fi
|
gokhlayeh@186
|
1844 done
|
gokhlayeh@186
|
1845
|
gokhlayeh@204
|
1846 # Use cookorder.txt to sort cooklist.
|
gokhlayeh@204
|
1847 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
1848 cat $PACKAGES_REPOSITORY/cookorder.txt | while read PACKAGE; do
|
gokhlayeh@204
|
1849 if grep -q ^$PACKAGE$ $tmp/cooklist; then
|
gokhlayeh@204
|
1850 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1851 echo $PACKAGE >> $tmp/cooklist.tmp
|
gokhlayeh@204
|
1852 fi
|
gokhlayeh@204
|
1853 done
|
gokhlayeh@204
|
1854
|
gokhlayeh@204
|
1855 # Remaining packages in cooklist are thoses without compile_rules.
|
gokhlayeh@204
|
1856 # They can be cooked first in any order.
|
gokhlayeh@204
|
1857 if [ -f $tmp/cooklist.tmp ]; then
|
gokhlayeh@204
|
1858 cat $tmp/cooklist.tmp >> $tmp/cooklist
|
gokhlayeh@204
|
1859 rm $tmp/cooklist.tmp
|
gokhlayeh@204
|
1860 fi
|
gokhlayeh@204
|
1861
|
gokhlayeh@204
|
1862 cat $tmp/cooklist
|
gokhlayeh@204
|
1863 [ "$cooklist" = "$PACKAGES_REPOSITORY/cooklist" ] && \
|
gokhlayeh@204
|
1864 cat $tmp/cooklist > $cooklist
|
gokhlayeh@204
|
1865 fi
|
gokhlayeh@204
|
1866
|
gokhlayeh@186
|
1867 report end-step
|
gokhlayeh@186
|
1868 }
|
gokhlayeh@186
|
1869
|
gokhlayeh@186
|
1870 check_for_incoming()
|
gokhlayeh@186
|
1871 {
|
gokhlayeh@204
|
1872 [ -s $INCOMING_REPOSITORY/packages.desc ] || {
|
gokhlayeh@204
|
1873 echo "No packages in $INCOMING_REPOSITORY."
|
gokhlayeh@204
|
1874 return; }
|
gokhlayeh@204
|
1875 if [ -s $PACKAGES_REPOSITORY/broken ]; then
|
gokhlayeh@204
|
1876 echo "Don't move incoming packages to main repository because theses ones are broken:
|
gokhlayeh@204
|
1877 $(cat $PACKAGES_REPOSITORY/broken)" >&2
|
gokhlayeh@204
|
1878 return
|
gokhlayeh@186
|
1879 fi
|
gokhlayeh@204
|
1880 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@204
|
1881 echo "Don't move incoming packages to main repository because some of them need to be cooked:
|
gokhlayeh@204
|
1882 $(cat $PACKAGES_REPOSITORY/cooklist)" >&2
|
gokhlayeh@204
|
1883 return
|
gokhlayeh@204
|
1884 fi
|
gokhlayeh@215
|
1885 pkg="$(cut -f 1 -d '|' $INCOMING_REPOSITORY/packages.desc)"
|
gokhlayeh@214
|
1886 if ! [ "$forced" ]; then
|
gokhlayeh@214
|
1887 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@214
|
1888 gen_cook_list
|
gokhlayeh@214
|
1889 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@214
|
1890 echo "Don't move incoming packages to main repository because some of them need to be cooked." >&2
|
gokhlayeh@214
|
1891 return
|
gokhlayeh@214
|
1892 fi
|
gokhlayeh@204
|
1893 fi
|
gokhlayeh@204
|
1894 report step "Moving incoming packages to main repository"
|
gokhlayeh@204
|
1895 unset EXTRAVERSION
|
gokhlayeh@215
|
1896 for PACKAGE in $pkg; do
|
gokhlayeh@186
|
1897 prev_VERSION=$(get_pkg_version $PACKAGES_REPOSITORY)
|
gokhlayeh@204
|
1898 VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
1899 remove_previous_package $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
1900 echo "Moving $PACKAGE..."
|
gokhlayeh@204
|
1901 mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
1902 touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg
|
gokhlayeh@266
|
1903 previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
1904 sed -e "/^$PACKAGE:main/d" \
|
slaxemulator@275
|
1905 -e "s/^$PACKAGE:incoming/$PACKAGE:main/" \
|
gokhlayeh@266
|
1906 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
1907 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
1908 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
1909 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
1910 fi
|
gokhlayeh@204
|
1911 done
|
gokhlayeh@204
|
1912 report end-step
|
gokhlayeh@204
|
1913 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
1914 packages.txt; do
|
gokhlayeh@204
|
1915 echo -n "" > $INCOMING_REPOSITORY/$file
|
gokhlayeh@204
|
1916 done
|
gokhlayeh@204
|
1917 rm -r $INCOMING_REPOSITORY/files.list.lzma
|
gokhlayeh@186
|
1918 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@186
|
1919 }
|
gokhlayeh@186
|
1920
|
gokhlayeh@186
|
1921 ########################################################################
|
gokhlayeh@186
|
1922 # TAZWOK MAIN FUNCTIONS
|
gokhlayeh@186
|
1923 ########################
|
gokhlayeh@186
|
1924
|
gokhlayeh@186
|
1925 clean()
|
gokhlayeh@186
|
1926 {
|
gokhlayeh@186
|
1927 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1928 ls -A $WOK/$PACKAGE | grep -q -v -e ^receipt$ -e ^description.txt$ \
|
gokhlayeh@186
|
1929 -e ^stuff$ || return
|
gokhlayeh@186
|
1930
|
gokhlayeh@249
|
1931 [ "$COMMAND" = clean-wok ] || report step "Cleaning $PACKAGE"
|
gokhlayeh@186
|
1932 # Check for clean_wok function.
|
gokhlayeh@186
|
1933 if grep -q ^clean_wok $RECEIPT; then
|
gokhlayeh@186
|
1934 clean_wok
|
gokhlayeh@186
|
1935 fi
|
gokhlayeh@186
|
1936 # Clean should only have a receipt, stuff and optional desc.
|
gokhlayeh@186
|
1937 for f in `ls .`
|
gokhlayeh@186
|
1938 do
|
gokhlayeh@186
|
1939 case $f in
|
gokhlayeh@250
|
1940 receipt|stuff|description.txt|md5)
|
gokhlayeh@186
|
1941 continue ;;
|
gokhlayeh@186
|
1942 *)
|
gokhlayeh@263
|
1943 rm -rf $f ;;
|
gokhlayeh@186
|
1944 esac
|
gokhlayeh@186
|
1945 done
|
gokhlayeh@262
|
1946 [ "$COMMAND" != clean-wok ] && report end-step
|
gokhlayeh@186
|
1947 }
|
gokhlayeh@186
|
1948
|
gokhlayeh@186
|
1949 # Configure and make a package with the receipt.
|
gokhlayeh@186
|
1950 compile_package()
|
gokhlayeh@186
|
1951 {
|
gokhlayeh@186
|
1952 check_for_package_on_cmdline
|
gokhlayeh@186
|
1953
|
gokhlayeh@186
|
1954 # Include the receipt to get all needed variables and functions
|
gokhlayeh@186
|
1955 # and cd into the work directory to start the work.
|
gokhlayeh@186
|
1956 check_for_receipt
|
gokhlayeh@186
|
1957 source_receipt
|
gokhlayeh@186
|
1958
|
gokhlayeh@186
|
1959 # Log the package name and date.
|
gokhlayeh@186
|
1960 echo "date `date +%Y%m%d\ \%H:%M:%S`" >> $LOG
|
gokhlayeh@186
|
1961 echo "package $PACKAGE (compile)" >> $LOG
|
gokhlayeh@186
|
1962
|
gokhlayeh@186
|
1963 # Set wanted $src variable to help compiling.
|
gokhlayeh@186
|
1964 [ ! "$src" ] && set_src_path
|
gokhlayeh@186
|
1965 check_for_build_depends || return 1
|
gokhlayeh@186
|
1966 check_for_wanted
|
gokhlayeh@186
|
1967 unset target
|
gokhlayeh@186
|
1968 check_for_tarball && check_for_compile_rules
|
gokhlayeh@186
|
1969 }
|
gokhlayeh@186
|
1970
|
gokhlayeh@186
|
1971 # Cook command also include all features to manage lists which keep
|
gokhlayeh@186
|
1972 # track of wok/packages state.
|
gokhlayeh@186
|
1973 cook()
|
gokhlayeh@186
|
1974 {
|
gokhlayeh@186
|
1975 cook_code=
|
gokhlayeh@186
|
1976 set_common_path
|
gokhlayeh@186
|
1977 check_for_receipt
|
gokhlayeh@186
|
1978 source_receipt
|
gokhlayeh@186
|
1979
|
gokhlayeh@186
|
1980 # Define log path and start report.
|
gokhlayeh@186
|
1981 [ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
1982 report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
1983 report step "Cooking $PACKAGE"
|
gokhlayeh@186
|
1984 report open-bloc
|
gokhlayeh@186
|
1985
|
gokhlayeh@186
|
1986 clean $PACKAGE
|
gokhlayeh@186
|
1987 [ -s $tmp/cooklist ] && sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@186
|
1988
|
gokhlayeh@186
|
1989 if compile_package; then
|
gokhlayeh@215
|
1990 remove_src
|
gokhlayeh@186
|
1991 refresh_packages_from_compile
|
gokhlayeh@186
|
1992 gen_package
|
gokhlayeh@186
|
1993
|
gokhlayeh@186
|
1994 # Update packages-incoming repository.
|
gokhlayeh@186
|
1995 store_pkgname=$PACKAGE
|
gokhlayeh@186
|
1996 pkg_repository=$INCOMING_REPOSITORY
|
gokhlayeh@186
|
1997 update_packages_db
|
gokhlayeh@186
|
1998
|
gokhlayeh@186
|
1999 PACKAGE=$store_pkgname
|
gokhlayeh@186
|
2000 unset store_pkgname
|
gokhlayeh@186
|
2001
|
gokhlayeh@186
|
2002 # Upgrade to cooked packages if it was previously installed.
|
gokhlayeh@186
|
2003 report step "Look for package(s) to upgrade"
|
gokhlayeh@186
|
2004 for pkg in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@186
|
2005 if [ -d $INSTALLED/$pkg ]; then
|
gokhlayeh@186
|
2006 tazpkg get-install $pkg --forced
|
gokhlayeh@186
|
2007 fi
|
gokhlayeh@186
|
2008 done
|
gokhlayeh@186
|
2009 report end-step
|
gokhlayeh@186
|
2010 else
|
gokhlayeh@186
|
2011
|
gokhlayeh@186
|
2012 # Set package as broken.
|
gokhlayeh@186
|
2013 if ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
2014 echo $PACKAGE >> $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
2015 fi
|
gokhlayeh@186
|
2016 gen_cookmd5
|
gokhlayeh@186
|
2017 cook_code=1
|
gokhlayeh@186
|
2018 fi
|
gokhlayeh@186
|
2019
|
gokhlayeh@186
|
2020 # Remove build_depends in cook mode (if in cooklist, it's done when
|
gokhlayeh@186
|
2021 # checking build_depends of next package and we remove only unneeded
|
gokhlayeh@186
|
2022 # packages to keep chroot minimal and gain some time).
|
gokhlayeh@210
|
2023 if [ "$COMMAND" = cook ]; then
|
gokhlayeh@210
|
2024 remove_build_depends $MISSING_PACKAGE
|
gokhlayeh@210
|
2025 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@210
|
2026 fi
|
gokhlayeh@210
|
2027
|
gokhlayeh@186
|
2028 # Regen the cooklist if it was planned and command is not cook.
|
gokhlayeh@186
|
2029 [ "$regen_cooklist" ] && unset regen_cooklist && \
|
gokhlayeh@186
|
2030 [ "$COMMAND" != cook ] && sort_cooklist
|
gokhlayeh@186
|
2031
|
gokhlayeh@186
|
2032 # Some hacks to set the bloc & function status as failed if cook was
|
gokhlayeh@186
|
2033 # failed.
|
gokhlayeh@186
|
2034 report_return_code=$cook_code
|
gokhlayeh@186
|
2035 report close-bloc
|
gokhlayeh@186
|
2036 report end-sublog
|
gokhlayeh@186
|
2037 return $cook_code
|
gokhlayeh@186
|
2038 }
|
gokhlayeh@186
|
2039
|
gokhlayeh@186
|
2040 cook_list()
|
gokhlayeh@186
|
2041 {
|
gokhlayeh@204
|
2042 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
2043 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@204
|
2044 # Note : options -main variables- are automatically keeped by
|
gokhlayeh@204
|
2045 # the sub-applications tazchroot/tazwok; as well as report data.
|
gokhlayeh@204
|
2046 cd $LOCAL_REPOSITORY
|
gokhlayeh@204
|
2047 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@204
|
2048 tazchroot tazwok cook-list --SLITAZ_DIR=$SLITAZ_DIR --SLITAZ_VERSION=$SLITAZ_VERSION ${undigest:+ --undigest=$undigest}
|
gokhlayeh@204
|
2049 return
|
gokhlayeh@204
|
2050 fi
|
gokhlayeh@204
|
2051 while [ -s $tmp/cooklist ]; do
|
gokhlayeh@204
|
2052 PACKAGE=$(sed 1!d $tmp/cooklist)
|
gokhlayeh@204
|
2053 cook
|
gokhlayeh@204
|
2054 done
|
gokhlayeh@204
|
2055 remove_build_depends $MISSING_PACKAGE $remove_later
|
gokhlayeh@210
|
2056 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@204
|
2057 else
|
gokhlayeh@186
|
2058 echo "Nothing to cook."
|
gokhlayeh@186
|
2059 return
|
gokhlayeh@186
|
2060 fi
|
gokhlayeh@186
|
2061 }
|
gokhlayeh@186
|
2062
|
gokhlayeh@186
|
2063 configure_tazchroot()
|
gokhlayeh@186
|
2064 {
|
gokhlayeh@190
|
2065 cat > $LOCAL_REPOSITORY/tazchroot.conf << EOF
|
gokhlayeh@186
|
2066 # Tazchroot configuration file - created by tazwok.
|
gokhlayeh@186
|
2067
|
gokhlayeh@186
|
2068 # Default chroot path
|
gokhlayeh@186
|
2069 SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@186
|
2070 SLITAZ_VERSION=$SLITAZ_VERSION
|
gokhlayeh@186
|
2071 $( [ "$undigest" ] && echo "undigest=$undigest" )
|
gokhlayeh@186
|
2072 LOCAL_REPOSITORY=$SLITAZ_DIR/$(if [ "$undigest" ]; then echo '$undigest'; else echo '$SLITAZ_VERSION'; fi)
|
gokhlayeh@186
|
2073 chroot_dir=\$LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
2074
|
gokhlayeh@186
|
2075 # Default scripts path (theses scripts are added in the
|
gokhlayeh@186
|
2076 # $chroot_dir/usr/bin and can be called with tazchroot script)
|
gokhlayeh@186
|
2077 script_dir=/var/lib/tazchroot
|
gokhlayeh@186
|
2078
|
gokhlayeh@186
|
2079 # List of directories to mount.
|
gokhlayeh@192
|
2080 list_dir="$(for dir in packages wok src packages-incoming log flavors iso; do echo $LOCAL_REPOSITORY/$dir; done)
|
gokhlayeh@186
|
2081 $SLITAZ_LOG$( [ "$undigest" ] && echo -e "\n$SLITAZ_DIR/$SLITAZ_VERSION/packages" )"
|
gokhlayeh@186
|
2082
|
gokhlayeh@186
|
2083 create_chroot()
|
gokhlayeh@186
|
2084 {
|
gokhlayeh@186
|
2085 mkdir -p \$chroot_dir
|
gokhlayeh@186
|
2086 for pkg in \$(tazwok build-depends toolchain --SLITAZ_DIR=\$SLITAZ_DIR --SLITAZ_VERSION=\$SLITAZ_VERSION${undigest:+ --undigest=\$undigest}); do
|
gokhlayeh@186
|
2087 tazpkg get-install \$pkg --root="\$chroot_dir"
|
gokhlayeh@186
|
2088 done
|
gokhlayeh@186
|
2089
|
gokhlayeh@186
|
2090 # Store list of installed packages needed by cleanchroot.
|
gokhlayeh@194
|
2091 ls -1 \$chroot_dir/\$INSTALLED > \$chroot_dir/\$LOCALSTATE/chroot-pkgs
|
gokhlayeh@186
|
2092
|
gokhlayeh@186
|
2093 sed -e "s~^SLITAZ_DIR=.*~SLITAZ_DIR=\$SLITAZ_DIR~" \\
|
gokhlayeh@186
|
2094 -e "s/^SLITAZ_VERSION=.*/SLITAZ_VERSION=\$SLITAZ_VERSION/" \\
|
gokhlayeh@186
|
2095 -i \$chroot_dir/etc/slitaz/slitaz.conf
|
gokhlayeh@186
|
2096 $( [ "$undigest" ] && echo ' echo "undigest='"$undigest"'" >> $chroot_dir/etc/slitaz/tazwok.conf')
|
gokhlayeh@186
|
2097 sed 's/LC_ALL/LC_ALL=POSIX/' -i \$chroot_dir/etc/profile
|
gokhlayeh@186
|
2098 }
|
gokhlayeh@186
|
2099
|
gokhlayeh@186
|
2100 mount_chroot()
|
gokhlayeh@186
|
2101 {
|
gokhlayeh@186
|
2102 cp -a /etc/resolv.conf \$chroot_dir/etc/resolv.conf
|
gokhlayeh@194
|
2103 echo "\$LOCAL_REPOSITORY/packages" > \$chroot_dir\$LOCALSTATE/mirror
|
gokhlayeh@194
|
2104 mkdir -p \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming
|
gokhlayeh@194
|
2105 echo "\$LOCAL_REPOSITORY/packages-incoming" > \$chroot_dir\$LOCALSTATE/undigest/\${LOCAL_REPOSITORY##*/}-incoming/mirror
|
gokhlayeh@194
|
2106 $( [ "$undigest" ] && echo ' mkdir -p $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION
|
gokhlayeh@194
|
2107 echo "$SLITAZ_DIR/$SLITAZ_VERSION/packages" > $chroot_dir$LOCALSTATE/undigest/$SLITAZ_VERSION/mirror' )
|
gokhlayeh@194
|
2108 echo -e "\${LOCAL_REPOSITORY##*/}-incoming\nmain" > \$chroot_dir\$LOCALSTATE/priority
|
gokhlayeh@186
|
2109 mount -t proc proc \$chroot_dir/proc
|
gokhlayeh@186
|
2110 mount -t sysfs sysfs \$chroot_dir/sys
|
gokhlayeh@186
|
2111 mount -t devpts devpts \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2112 mount -t tmpfs shm \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2113 for dir in \$list_dir; do
|
gokhlayeh@186
|
2114 mkdir -p \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2115 mount \$dir \$chroot_dir\$dir
|
gokhlayeh@186
|
2116 done
|
gokhlayeh@186
|
2117 }
|
gokhlayeh@186
|
2118
|
gokhlayeh@186
|
2119 umount_chroot()
|
gokhlayeh@186
|
2120 {
|
gokhlayeh@186
|
2121 for dir in \$list_dir; do
|
gokhlayeh@186
|
2122 umount \$chroot_dir\$dir
|
gokhlayeh@186
|
2123 done
|
gokhlayeh@186
|
2124 umount \$chroot_dir/dev/shm
|
gokhlayeh@186
|
2125 umount \$chroot_dir/dev/pts
|
gokhlayeh@186
|
2126 umount \$chroot_dir/sys
|
gokhlayeh@186
|
2127 umount \$chroot_dir/proc
|
gokhlayeh@186
|
2128 }
|
gokhlayeh@186
|
2129 EOF
|
gokhlayeh@186
|
2130 }
|
gokhlayeh@186
|
2131
|
gokhlayeh@186
|
2132 ########################################################################
|
gokhlayeh@186
|
2133 ######################### END OF NEW FUNCTIONS #########################
|
gokhlayeh@186
|
2134 ########################################################################
|
gokhlayeh@186
|
2135
|
pascal@111
|
2136 # List packages providing a virtual package
|
pascal@111
|
2137 whoprovide()
|
pascal@111
|
2138 {
|
pascal@111
|
2139 local i;
|
gokhlayeh@195
|
2140 for i in $(fgrep -l PROVIDE $WOK/*/receipt); do
|
pascal@111
|
2141 . $i
|
pascal@111
|
2142 case " $PROVIDE " in
|
pascal@111
|
2143 *\ $1\ *|*\ $1:*) echo $(basename $(dirname $i));;
|
pascal@111
|
2144 esac
|
pascal@111
|
2145 done
|
pascal@111
|
2146 }
|
pascal@111
|
2147
|
gokhlayeh@186
|
2148 ########################################################################
|
gokhlayeh@186
|
2149 # TAZWOK COMMANDS
|
gokhlayeh@186
|
2150 ########################
|
pankso@7
|
2151
|
pankso@7
|
2152 case "$COMMAND" in
|
pankso@7
|
2153 stats)
|
paul@166
|
2154 # Tazwok general statistics from the wok config file.
|
pankso@7
|
2155 #
|
gokhlayeh@186
|
2156 get_tazwok_config
|
gokhlayeh@186
|
2157 echo -e "\n\033[1mTazwok configuration statistics\033[0m
|
pankso@7
|
2158 ================================================================================
|
pankso@7
|
2159 Wok directory : $WOK
|
pankso@7
|
2160 Packages repository : $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
2161 Incoming repository : $INCOMING_REPOSITORY
|
pankso@7
|
2162 Sources repository : $SOURCES_REPOSITORY
|
gokhlayeh@186
|
2163 Log directory : $LOCAL_REPOSITORY/log
|
pankso@7
|
2164 Packages in the wok : `ls -1 $WOK | wc -l`
|
pankso@16
|
2165 Cooked packages : `ls -1 $PACKAGES_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2166 Incoming packages : `ls -1 $INCOMING_REPOSITORY/*.tazpkg 2>/dev/null | wc -l`
|
gokhlayeh@186
|
2167 ================================================================================\n"
|
gokhlayeh@186
|
2168 ;;
|
pankso@133
|
2169 edit)
|
gokhlayeh@186
|
2170 get_tazwok_config
|
pankso@133
|
2171 check_for_package_on_cmdline
|
pankso@133
|
2172 check_for_receipt
|
gokhlayeh@186
|
2173 $EDITOR $WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
2174 ;;
|
pascal@98
|
2175 build-depends)
|
gokhlayeh@186
|
2176 # List dependencies to rebuild wok, or only a package
|
gokhlayeh@186
|
2177 get_tazwok_config
|
gokhlayeh@215
|
2178 report(){ : ; }
|
gokhlayeh@242
|
2179 if [ ! "$PACKAGE" ] || [ "$PACKAGE" = toolchain ]; then
|
gokhlayeh@186
|
2180 scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
2181 --look_for=dep --with_dev --with_args
|
gokhlayeh@186
|
2182 else
|
gokhlayeh@186
|
2183 check_for_package_on_cmdline
|
gokhlayeh@186
|
2184 scan $PACKAGE --look_for=bdep --with_dev
|
gokhlayeh@186
|
2185 fi
|
gokhlayeh@186
|
2186 ;;
|
gokhlayeh@186
|
2187 gen-cooklist)
|
gokhlayeh@215
|
2188 check_root
|
gokhlayeh@204
|
2189 get_options_list="pkg"
|
gokhlayeh@186
|
2190 get_tazwok_config
|
gokhlayeh@215
|
2191 report(){ : ; }
|
gokhlayeh@204
|
2192 if ! [ "$pkg" ]; then
|
gokhlayeh@242
|
2193 if [ ! "$LIST" ] || [ "$LIST" = toolchain ]; then
|
gokhlayeh@242
|
2194 pkg="$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA"
|
gokhlayeh@242
|
2195 else
|
gokhlayeh@242
|
2196 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@242
|
2197 fi
|
gokhlayeh@186
|
2198 fi
|
gokhlayeh@204
|
2199 gen_cook_list
|
gokhlayeh@186
|
2200 ;;
|
pascal@119
|
2201 check-depends)
|
gokhlayeh@186
|
2202 # Check package depends /!\
|
gokhlayeh@186
|
2203 get_tazwok_config
|
pascal@119
|
2204 echo ""
|
paul@121
|
2205 echo -e "\033[1mCheck every receipt for DEPENDS - doesn't scan ELF files\033[0m
|
pascal@119
|
2206 ================================================================================"
|
pascal@119
|
2207 TMPDIR=/tmp/tazwok$$
|
pascal@119
|
2208 DEFAULT_DEPENDS="glibc-base gcc-lib-base"
|
pascal@119
|
2209
|
pascal@119
|
2210 # Build ALL_DEPENDS variable
|
pascal@119
|
2211 scan_dep()
|
pascal@119
|
2212 {
|
pascal@119
|
2213 local i
|
pascal@119
|
2214 ALL_DEPENDS="$ALL_DEPENDS$PACKAGE "
|
pascal@128
|
2215 for i in $DEPENDS $SUGGESTED ; do
|
pascal@119
|
2216 case " $ALL_DEPENDS " in
|
pascal@119
|
2217 *\ $i\ *) continue;;
|
pascal@119
|
2218 esac
|
pascal@120
|
2219 [ -d $WOK/$i ] || {
|
pascal@120
|
2220 ALL_DEPENDS="$ALL_DEPENDS$i "
|
pascal@120
|
2221 continue
|
pascal@120
|
2222 }
|
pascal@128
|
2223 DEPENDS=""
|
pascal@128
|
2224 SUGGESTED=""
|
pascal@119
|
2225 . $WOK/$i/receipt
|
pascal@119
|
2226 scan_dep
|
pascal@119
|
2227 done
|
pascal@119
|
2228 }
|
pankso@133
|
2229
|
pascal@119
|
2230 # Check for ELF file
|
pascal@119
|
2231 is_elf()
|
pascal@119
|
2232 {
|
pascal@119
|
2233 [ "$(dd if=$1 bs=1 skip=1 count=3 2> /dev/null)" \
|
pascal@119
|
2234 = "ELF" ]
|
pascal@119
|
2235 }
|
pascal@119
|
2236
|
pascal@119
|
2237 # Print shared library dependencies
|
pascal@119
|
2238 ldd()
|
pascal@119
|
2239 {
|
pascal@130
|
2240 LD_TRACE_LOADED_OBJECTS=1 /lib/ld*.so $1 2> /dev/null
|
pascal@119
|
2241 }
|
pascal@119
|
2242
|
pascal@119
|
2243 mkdir $TMPDIR
|
pascal@119
|
2244 cd $TMPDIR
|
pascal@140
|
2245 for i in $LOCALSTATE/files.list.lzma \
|
pascal@140
|
2246 $LOCALSTATE/undigest/*/files.list.lzma ; do
|
pascal@119
|
2247 [ -f $i ] && lzma d $i -so >> files.list
|
pascal@119
|
2248 done
|
pascal@119
|
2249 for pkg in $PACKAGES_REPOSITORY/*.tazpkg ; do
|
pascal@119
|
2250 tazpkg extract $pkg > /dev/null 2>&1
|
pascal@119
|
2251 . */receipt
|
pascal@119
|
2252 ALL_DEPENDS="$DEFAULT_DEPENDS "
|
pascal@119
|
2253 scan_dep
|
pascal@119
|
2254 find */fs -type f | while read file ; do
|
pascal@119
|
2255 is_elf $file || continue
|
pascal@119
|
2256 case "$file" in
|
pascal@119
|
2257 *.o|*.ko|*.ko.gz) continue;;
|
pascal@119
|
2258 esac
|
pascal@119
|
2259 ldd $file | while read lib rem; do
|
pascal@119
|
2260 case "$lib" in
|
pascal@128
|
2261 statically|linux-gate.so*|ld-*.so|*/ld-*.so)
|
pascal@119
|
2262 continue;;
|
pascal@119
|
2263 esac
|
gokhlayeh@195
|
2264 for dep in $(fgrep $lib files.list | cut -d: -f1); do
|
pascal@119
|
2265 case " $ALL_DEPENDS " in
|
pascal@119
|
2266 *\ $dep\ *) continue 2;;
|
pascal@119
|
2267 esac
|
gokhlayeh@195
|
2268 for vdep in $(fgrep $dep $LOCALSTATE/packages.equiv | cut -d= -f1); do
|
pascal@128
|
2269 case " $ALL_DEPENDS " in
|
pascal@129
|
2270 *\ $vdep\ *) continue 3;;
|
pascal@128
|
2271 esac
|
pascal@128
|
2272 done
|
pascal@119
|
2273 done
|
pascal@128
|
2274 [ -n "$dep" ] || dep="UNKNOWN"
|
pascal@119
|
2275 echo "$(basename $pkg): ${file#*fs} depends on package $dep for the shared library $lib"
|
pascal@119
|
2276 done
|
pascal@119
|
2277 done
|
pascal@119
|
2278 rm -rf */
|
pascal@119
|
2279 done
|
pascal@119
|
2280 cd /tmp
|
pascal@119
|
2281 rm -rf $TMPDIR
|
gokhlayeh@186
|
2282 ;;
|
pascal@76
|
2283 check)
|
paul@154
|
2284 # Check wok consistency
|
gokhlayeh@186
|
2285 get_tazwok_config
|
pascal@76
|
2286 echo ""
|
pascal@76
|
2287 echo -e "\033[1mWok and packages checking\033[0m
|
pascal@76
|
2288 ================================================================================"
|
pascal@77
|
2289 cd $WOK
|
pascal@77
|
2290 for pkg in $(ls)
|
pascal@76
|
2291 do
|
pascal@76
|
2292 [ -f $pkg/receipt ] || continue
|
gokhlayeh@186
|
2293 RECEIPT= $pkg/receipt
|
gokhlayeh@186
|
2294 source_receipt
|
gokhlayeh@186
|
2295 [ "$PACKAGE" = "$pkg" ] || echo "Package $PACKAGE should be $pkg" >&2
|
gokhlayeh@186
|
2296 [ -n "$VERSION" ] || echo "Package $PACKAGE has no VERSION" >&2
|
gokhlayeh@186
|
2297 [ -n "$PACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded PACKED_SIZE" >&2
|
gokhlayeh@186
|
2298 [ -n "$UNPACKED_SIZE" ] && echo "Package $PACKAGE has hardcoded UNPACKED_SIZE" >&2
|
gokhlayeh@186
|
2299 [ -n "$EXTRAVERSION" ] && echo "Package $PACKAGE has hardcoded EXTRAVERSION" >&2
|
pascal@97
|
2300 if [ -n "$WANTED" ]; then
|
pascal@97
|
2301 if [ ! -f $WANTED/receipt ]; then
|
gokhlayeh@186
|
2302 echo "Package $PACKAGE wants unknown $WANTED package" >&2
|
pascal@97
|
2303 else
|
pascal@97
|
2304 BASEVERSION=$(. $WANTED/receipt ; echo $VERSION)
|
pascal@103
|
2305 if [ "$VERSION" = "$WANTED" ]; then
|
pascal@103
|
2306 # BASEVERSION is computed in receipt
|
gokhlayeh@195
|
2307 fgrep -q '_pkg=' $pkg/receipt &&
|
pascal@103
|
2308 BASEVERSION=$VERSION
|
pascal@103
|
2309 fi
|
pascal@97
|
2310 if [ "$VERSION" != "$BASEVERSION" ]; then
|
gokhlayeh@186
|
2311 echo "Package $PACKAGE ($VERSION) wants $WANTED ($BASEVERSION)" >&2
|
pascal@97
|
2312 fi
|
pascal@97
|
2313 fi
|
pascal@97
|
2314 fi
|
pascal@97
|
2315
|
pascal@94
|
2316 if [ -n "$CATEGORY" ]; then
|
pascal@94
|
2317 case " $(echo $CATEGORIES) " in
|
pascal@94
|
2318 *\ $CATEGORY\ *);;
|
gokhlayeh@186
|
2319 *) echo "Package $PACKAGE has an invalid CATEGORY" >&2;;
|
pascal@94
|
2320 esac
|
pascal@94
|
2321 else
|
gokhlayeh@186
|
2322 echo"Package $PACKAGE has no CATEGORY" >&2
|
pascal@94
|
2323 fi
|
gokhlayeh@186
|
2324 [ -n "$SHORT_DESC" ] || echo "Package $PACKAGE has no SHORT_DESC" >&2
|
gokhlayeh@186
|
2325 [ -n "$MAINTAINER" ] || echo "Package $PACKAGE has no MAINTAINER" >&2
|
pascal@122
|
2326 case "$WGET_URL" in
|
pascal@178
|
2327 ftp*|http*) busybox wget -s $WGET_URL 2> /dev/null ||
|
gokhlayeh@186
|
2328 echo "Package $PACKAGE has a wrong WGET_URL" >&2;;
|
pascal@122
|
2329 '') ;;
|
gokhlayeh@186
|
2330 *) echo "Package $PACKAGE has an invalid WGET_URL" >&2;;
|
pascal@122
|
2331 esac
|
pascal@112
|
2332 case "$WEB_SITE" in
|
pascal@125
|
2333 ftp*|http*);;
|
gokhlayeh@186
|
2334 '') echo "Package $PACKAGE has no WEB_SITE" >&2;;
|
gokhlayeh@186
|
2335 *) echo "Package $PACKAGE has an invalid WEB_SITE" >&2;;
|
pascal@112
|
2336 esac
|
pascal@78
|
2337 case "$MAINTAINER" in
|
gokhlayeh@186
|
2338 *\<*|*\>*) echo "Package $PACKAGE has an invalid MAINTAINER: $MAINTAINER" >&2;;
|
pascal@78
|
2339 esac
|
pascal@78
|
2340 case "$MAINTAINER" in
|
pascal@78
|
2341 *@*);;
|
gokhlayeh@186
|
2342 *) echo "Package $PACKAGE MAINTAINER is not an email address" >&2;;
|
pascal@78
|
2343 esac
|
gokhlayeh@186
|
2344 MSG="Missing dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@76
|
2345 for i in $DEPENDS; do
|
pascal@76
|
2346 [ -d $i ] && continue
|
pascal@111
|
2347 [ -n "$(whoprovide $i)" ] && continue
|
pascal@76
|
2348 echo -e "$MSG $i"
|
pascal@76
|
2349 MSG=""
|
pascal@76
|
2350 done
|
gokhlayeh@186
|
2351 MSG="Missing build dependencies for $PACKAGE $VERSION$EXTRAVERSION :\n" >&2
|
pascal@92
|
2352 for i in $BUILD_DEPENDS; do
|
pascal@92
|
2353 [ -d $i ] && continue
|
pascal@111
|
2354 [ -n "$(whoprovide $i)" ] && continue
|
pascal@92
|
2355 echo -e "$MSG $i"
|
pascal@92
|
2356 MSG=""
|
pascal@92
|
2357 done
|
pascal@76
|
2358 MSG="Dependencies loop between $PACKAGE and :\n"
|
pascal@76
|
2359 ALL_DEPS=""
|
pascal@76
|
2360 check_for_deps_loop $PACKAGE $DEPENDS
|
pascal@140
|
2361 [ -d $WOK/$pkg/taz ] && for i in $BUILD_DEPENDS; do
|
pascal@141
|
2362 [ $WOK/$pkg/taz -nt $INSTALLED/$i/files.list ] && continue
|
paul@154
|
2363 echo "$pkg should be rebuilt after $i installation"
|
pascal@140
|
2364 done
|
pascal@76
|
2365 done
|
gokhlayeh@186
|
2366 ;;
|
pankso@7
|
2367 list)
|
paul@166
|
2368 # List packages in wok directory. User can specify a category.
|
pankso@7
|
2369 #
|
gokhlayeh@186
|
2370 get_tazwok_config
|
pankso@7
|
2371 if [ "$2" = "category" ]; then
|
pankso@7
|
2372 echo -e "\033[1m\nPackages categories :\033[0m $CATEGORIES\n"
|
pankso@7
|
2373 exit 0
|
pankso@7
|
2374 fi
|
pankso@7
|
2375 # Check for an asked category.
|
pankso@7
|
2376 if [ -n "$2" ]; then
|
pankso@7
|
2377 ASKED_CATEGORY=$2
|
pankso@7
|
2378 echo ""
|
pankso@7
|
2379 echo -e "\033[1mPackages in category :\033[0m $ASKED_CATEGORY"
|
pankso@7
|
2380 echo "================================================================================"
|
pankso@7
|
2381 for pkg in $WOK/*
|
pankso@7
|
2382 do
|
erjo@168
|
2383 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2384 . $pkg/receipt
|
pankso@7
|
2385 if [ "$CATEGORY" == "$ASKED_CATEGORY" ]; then
|
pankso@7
|
2386 echo -n "$PACKAGE"
|
pankso@28
|
2387 echo -e "\033[28G $VERSION"
|
pankso@7
|
2388 packages=$(($packages+1))
|
pankso@7
|
2389 fi
|
pankso@7
|
2390 done
|
pankso@7
|
2391 echo "================================================================================"
|
gokhlayeh@236
|
2392 echo -e "$packages packages in category $ASKED_CATEGORY.\n"
|
pankso@7
|
2393 else
|
pankso@7
|
2394 # By default list all packages and version.
|
pankso@7
|
2395 echo ""
|
pankso@7
|
2396 echo -e "\033[1mList of packages in the wok\033[0m"
|
pankso@7
|
2397 echo "================================================================================"
|
pankso@7
|
2398 for pkg in $WOK/*
|
pankso@7
|
2399 do
|
erjo@168
|
2400 [ ! -f $pkg/receipt ] && continue
|
pankso@7
|
2401 . $pkg/receipt
|
pankso@7
|
2402 echo -n "$PACKAGE"
|
pankso@28
|
2403 echo -en "\033[28G $VERSION"
|
pankso@7
|
2404 echo -e "\033[42G $CATEGORY"
|
pankso@7
|
2405 packages=$(($packages+1))
|
pankso@7
|
2406 done
|
pankso@7
|
2407 echo "================================================================================"
|
gokhlayeh@236
|
2408 echo -e "$packages packages available in the wok.\n"
|
pankso@7
|
2409 fi
|
pankso@7
|
2410 ;;
|
pankso@7
|
2411 info)
|
MikeDSmith25@82
|
2412 # Information about a package.
|
pankso@7
|
2413 #
|
gokhlayeh@186
|
2414 get_tazwok_config
|
pankso@7
|
2415 check_for_package_on_cmdline
|
pankso@7
|
2416 check_for_receipt
|
pankso@7
|
2417 . $WOK/$PACKAGE/receipt
|
pankso@7
|
2418 echo ""
|
MikeDSmith25@82
|
2419 echo -e "\033[1mTazwok package information\033[0m
|
pankso@7
|
2420 ================================================================================
|
pankso@7
|
2421 Package : $PACKAGE
|
pankso@7
|
2422 Version : $VERSION
|
pankso@7
|
2423 Category : $CATEGORY
|
pankso@7
|
2424 Short desc : $SHORT_DESC
|
pankso@7
|
2425 Maintainer : $MAINTAINER"
|
pankso@7
|
2426 if [ ! "$WEB_SITE" = "" ]; then
|
pankso@7
|
2427 echo "Web site : $WEB_SITE"
|
pankso@7
|
2428 fi
|
pankso@7
|
2429 if [ ! "$DEPENDS" = "" ]; then
|
pankso@7
|
2430 echo "Depends : $DEPENDS"
|
pankso@7
|
2431 fi
|
pankso@7
|
2432 if [ ! "$WANTED" = "" ]; then
|
pankso@7
|
2433 echo "Wanted src : $WANTED"
|
pankso@7
|
2434 fi
|
pankso@7
|
2435 echo "================================================================================"
|
pankso@7
|
2436 echo ""
|
gokhlayeh@186
|
2437 ;;
|
pankso@7
|
2438 check-log)
|
pankso@7
|
2439 # We just cat the file log to view process info.
|
pankso@7
|
2440 #
|
gokhlayeh@186
|
2441 get_tazwok_config
|
pankso@7
|
2442 if [ ! -f "$LOG" ]; then
|
gokhlayeh@186
|
2443 echo -e "\nNo process log found. The package is probably not cooked.\n" >&2
|
gokhlayeh@186
|
2444 exit 1
|
pankso@7
|
2445 else
|
pankso@7
|
2446 echo ""
|
pankso@7
|
2447 echo -e "\033[1mPackage process log for :\033[0m $PACKAGE"
|
pankso@7
|
2448 echo "================================================================================"
|
pankso@7
|
2449 cat $LOG
|
pankso@7
|
2450 echo "================================================================================"
|
pankso@7
|
2451 echo ""
|
gokhlayeh@237
|
2452 if [ -s "$WOK/$PACKAGE/warning.txt" ]; then
|
gokhlayeh@237
|
2453 echo -e "\033[1mCook warning(s) for :\033[0m $PACKAGE"
|
gokhlayeh@237
|
2454 echo "================================================================================"
|
gokhlayeh@237
|
2455 cat "$WOK/$PACKAGE/warning.txt"
|
gokhlayeh@237
|
2456 echo "================================================================================"
|
gokhlayeh@237
|
2457 echo ""
|
gokhlayeh@237
|
2458 fi
|
pankso@7
|
2459 fi
|
gokhlayeh@186
|
2460 ;;
|
pankso@7
|
2461 search)
|
pankso@7
|
2462 # Search for a package by pattern or name.
|
pankso@7
|
2463 #
|
gokhlayeh@186
|
2464 get_tazwok_config
|
pankso@7
|
2465 if [ -z "$2" ]; then
|
gokhlayeh@186
|
2466 echo -e "\nPlease specify a pattern or a package name to search." >&2
|
gokhlayeh@186
|
2467 echo -e "Example : 'tazwok search gcc'.\n" >&2
|
gokhlayeh@186
|
2468 exit 1
|
pankso@7
|
2469 fi
|
pankso@7
|
2470 echo ""
|
pankso@7
|
2471 echo -e "\033[1mSearch result for :\033[0m $2"
|
pankso@7
|
2472 echo "================================================================================"
|
gokhlayeh@195
|
2473 list=`ls -1 $WOK | fgrep $2`
|
pankso@7
|
2474 for pkg in $list
|
pankso@7
|
2475 do
|
pankso@7
|
2476 . $WOK/$pkg/receipt
|
pankso@7
|
2477 echo -n "$PACKAGE "
|
pankso@7
|
2478 echo -en "\033[24G $VERSION"
|
pankso@7
|
2479 echo -e "\033[42G $CATEGORY"
|
gokhlayeh@186
|
2480 packages=$(($PACKAGEs+1))
|
pankso@7
|
2481 done
|
pankso@7
|
2482 echo "================================================================================"
|
gokhlayeh@238
|
2483 echo "$packages packages found for : $2"
|
pankso@7
|
2484 echo ""
|
gokhlayeh@186
|
2485 ;;
|
pankso@7
|
2486 compile)
|
pankso@7
|
2487 # Configure and make a package with the receipt.
|
pankso@7
|
2488 #
|
gokhlayeh@186
|
2489 get_tazwok_config
|
gokhlayeh@186
|
2490 source_lib report
|
gokhlayeh@186
|
2491 report start
|
pankso@7
|
2492 compile_package
|
gokhlayeh@186
|
2493 ;;
|
pankso@7
|
2494 genpkg)
|
paul@121
|
2495 # Generate a package.
|
pankso@7
|
2496 #
|
gokhlayeh@186
|
2497 get_tazwok_config
|
gokhlayeh@186
|
2498 source_lib report
|
gokhlayeh@186
|
2499 report start
|
pankso@7
|
2500 gen_package
|
gokhlayeh@186
|
2501 ;;
|
pankso@7
|
2502 cook)
|
pankso@7
|
2503 # Compile and generate a package. Just execute tazwok with
|
pankso@7
|
2504 # the good commands.
|
pankso@7
|
2505 #
|
pankso@7
|
2506 check_root
|
gokhlayeh@186
|
2507 get_tazwok_config
|
gokhlayeh@186
|
2508 source_lib report
|
gokhlayeh@186
|
2509 report start
|
gokhlayeh@215
|
2510 update_wan_db
|
gokhlayeh@215
|
2511 check_for_commit
|
gokhlayeh@215
|
2512 [ "$plan_sort_depdb" ] && sort -o $dep_db $dep_db && unset plan_sort_depdb
|
gokhlayeh@215
|
2513 [ "$plan_sort_wandb" ] && sort -o $wan_db $wan_db && unset plan_sort_wandb
|
gokhlayeh@215
|
2514 if [ "$plan_regen_cookorder" ]; then
|
gokhlayeh@215
|
2515 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt || \
|
gokhlayeh@215
|
2516 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@215
|
2517 fi
|
gokhlayeh@186
|
2518 cook
|
gokhlayeh@186
|
2519 ;;
|
gokhlayeh@186
|
2520 sort-cooklist)
|
gokhlayeh@186
|
2521 if [ ! "$LIST" ]; then
|
gokhlayeh@186
|
2522 echo "Usage : tazwok sort-cooklist cooklist" >&2\
|
gokhlayeh@186
|
2523 exit 1
|
gokhlayeh@186
|
2524 fi
|
gokhlayeh@186
|
2525 get_tazwok_config
|
gokhlayeh@186
|
2526 source_lib report
|
gokhlayeh@186
|
2527 report start
|
gokhlayeh@186
|
2528 cooklist=$LIST
|
gokhlayeh@186
|
2529 sort_cooklist
|
gokhlayeh@186
|
2530 cp -af $tmp/cooklist $cooklist
|
gokhlayeh@186
|
2531 ;;
|
pankso@7
|
2532 cook-list)
|
gokhlayeh@204
|
2533 # Cook all packages listed in a file or in default cooklist.
|
gokhlayeh@186
|
2534 check_root
|
gokhlayeh@204
|
2535 get_options_list="pkg forced"
|
gokhlayeh@186
|
2536 get_tazwok_config
|
gokhlayeh@186
|
2537 source_lib report
|
gokhlayeh@186
|
2538 report start
|
gokhlayeh@204
|
2539 if ! [ "$pkg" ]; then
|
gokhlayeh@204
|
2540 cooklist=${LIST:-$PACKAGES_REPOSITORY/cooklist}
|
gokhlayeh@186
|
2541 fi
|
gokhlayeh@204
|
2542 gen_cook_list
|
gokhlayeh@186
|
2543 cook_list
|
gokhlayeh@186
|
2544 ;;
|
gokhlayeh@186
|
2545 clean)
|
gokhlayeh@186
|
2546 # Clean up a package work directory + thoses which want it.
|
pankso@7
|
2547 #
|
gokhlayeh@186
|
2548 get_tazwok_config
|
pankso@7
|
2549 check_for_package_on_cmdline
|
pankso@7
|
2550 check_for_receipt
|
gokhlayeh@186
|
2551 source_lib report
|
gokhlayeh@186
|
2552 report start
|
pankso@7
|
2553 . $RECEIPT
|
gokhlayeh@186
|
2554 clean
|
gokhlayeh@186
|
2555 ;;
|
pankso@7
|
2556 gen-clean-wok)
|
paul@121
|
2557 # Generate a clean wok from the current wok by copying all receipts
|
pankso@7
|
2558 # and stuff directory.
|
pankso@7
|
2559 #
|
gokhlayeh@186
|
2560 get_tazwok_config
|
gokhlayeh@186
|
2561 source_lib report
|
gokhlayeh@186
|
2562 report start
|
gokhlayeh@186
|
2563 if [ -z "$ARG" ]; then
|
gokhlayeh@186
|
2564 echo -e "\nPlease specify the destination for the new clean wok.\n" >&2
|
gokhlayeh@186
|
2565 exit 1
|
pankso@7
|
2566 else
|
gokhlayeh@186
|
2567 dest=$ARG
|
pankso@7
|
2568 mkdir -p $dest
|
pankso@7
|
2569 fi
|
gokhlayeh@186
|
2570 report step "Creating clean wok in : $dest"
|
pankso@7
|
2571 for pkg in `ls -1 $WOK`
|
pankso@7
|
2572 do
|
pankso@7
|
2573 mkdir -p $dest/$pkg
|
pankso@7
|
2574 cp -a $WOK/$pkg/receipt $dest/$pkg
|
gokhlayeh@186
|
2575 [ -f $WOK/$pkg/description.txt ] && \
|
gokhlayeh@186
|
2576 cp -a $WOK/$pkg/description.txt $dest/$pkg
|
pankso@7
|
2577 if [ -d "$WOK/$pkg/stuff" ]; then
|
pankso@7
|
2578 cp -a $WOK/$pkg/stuff $dest/$pkg
|
pankso@7
|
2579 fi
|
pankso@7
|
2580 done
|
gokhlayeh@186
|
2581 [ -d $WOK/.hg ] && cp -a $WOK/.hg $dest
|
gokhlayeh@186
|
2582 report end-step
|
pankso@7
|
2583 echo "Packages cleaned : `ls -1 $dest | wc -l`"
|
pankso@7
|
2584 echo ""
|
gokhlayeh@186
|
2585 ;;
|
pankso@7
|
2586 clean-wok)
|
pankso@7
|
2587 # Clean all packages in the work directory
|
pankso@7
|
2588 #
|
gokhlayeh@186
|
2589 get_tazwok_config
|
gokhlayeh@186
|
2590 source_lib report
|
gokhlayeh@186
|
2591 report start
|
gokhlayeh@186
|
2592 report step "Cleaning wok"
|
gokhlayeh@186
|
2593 for PACKAGE in `ls -1 $WOK`
|
pankso@7
|
2594 do
|
gokhlayeh@186
|
2595 set_common_path
|
gokhlayeh@186
|
2596 source_receipt
|
gokhlayeh@186
|
2597 clean
|
pankso@7
|
2598 done
|
pankso@7
|
2599 echo "`ls -1 $WOK | wc -l` packages cleaned."
|
gokhlayeh@186
|
2600 ;;
|
gokhlayeh@266
|
2601 clean-src)
|
gokhlayeh@266
|
2602 # Remove tarball unrelated to wok receipts from src repo.
|
gokhlayeh@266
|
2603 check_root
|
gokhlayeh@266
|
2604 get_options_list="forced"
|
gokhlayeh@266
|
2605 get_tazwok_config
|
gokhlayeh@266
|
2606 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
2607 echo -n "Checking $SOURCES_REPOSITORY..."
|
gokhlayeh@266
|
2608 for TARBALL in *; do
|
gokhlayeh@266
|
2609 [ "$TARBALL" = sources.list ] && continue
|
gokhlayeh@266
|
2610 grep -q $'\t'$TARBALL$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2611 echo $TARBALL >> $tmp/obsolete
|
gokhlayeh@266
|
2612 done
|
gokhlayeh@266
|
2613 status
|
slaxemulator@273
|
2614 if ! [ -f $tmp/obsolete ]; then
|
slaxemulator@273
|
2615 echo "No sources need to be removed."
|
slaxemulator@273
|
2616 exit 1
|
slaxemulator@273
|
2617 fi
|
gokhlayeh@266
|
2618 echo ""
|
gokhlayeh@266
|
2619 echo -e "\033[1mObsolete/unrelated-to-wok sourcess :\033[0m"
|
gokhlayeh@266
|
2620 horizontal_line
|
gokhlayeh@266
|
2621 cat $tmp/obsolete
|
gokhlayeh@266
|
2622 horizontal_line
|
gokhlayeh@266
|
2623 echo "$(wc -l $tmp/obsolete | cut -f1 -d' ') tarballs to remove."
|
gokhlayeh@266
|
2624 echo ""
|
gokhlayeh@266
|
2625 echo -n "Please confirm removing (type uppercase YES): "
|
gokhlayeh@266
|
2626 read answer
|
gokhlayeh@266
|
2627 if [ "$answer" = YES ]; then
|
gokhlayeh@266
|
2628 echo -n "Removing old sources..."
|
gokhlayeh@266
|
2629 cat $tmp/obsolete | while read i; do
|
gokhlayeh@266
|
2630 rm -f $SOURCES_REPOSITORY/$i
|
gokhlayeh@266
|
2631 done
|
gokhlayeh@266
|
2632 status
|
gokhlayeh@266
|
2633 fi
|
gokhlayeh@266
|
2634 ;;
|
pankso@7
|
2635 gen-list)
|
gokhlayeh@186
|
2636 get_tazwok_config
|
gokhlayeh@204
|
2637 if [ "$2" ]; then
|
gokhlayeh@204
|
2638 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2639 pkg_repository=$2
|
gokhlayeh@204
|
2640 else
|
gokhlayeh@204
|
2641 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@204
|
2642 exit 1
|
gokhlayeh@204
|
2643 fi
|
gokhlayeh@204
|
2644 fi
|
gokhlayeh@204
|
2645
|
gokhlayeh@186
|
2646 source_lib report
|
gokhlayeh@186
|
2647 report start
|
gokhlayeh@204
|
2648 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2649 gen_packages_db
|
gokhlayeh@204
|
2650 else
|
gokhlayeh@204
|
2651 pkg_repository=$PACKAGES_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2652 pkg_repository=$INCOMING_REPOSITORY && gen_packages_db
|
gokhlayeh@204
|
2653 fi
|
gokhlayeh@186
|
2654 ;;
|
gokhlayeh@186
|
2655 check-list)
|
gokhlayeh@186
|
2656 # The directory to move into by default is the repository,
|
gokhlayeh@186
|
2657 # if $2 is not empty cd into $2.
|
pankso@7
|
2658 #
|
gokhlayeh@186
|
2659 get_tazwok_config
|
gokhlayeh@204
|
2660 if [ "$2" ]; then
|
pankso@7
|
2661 if [ -d "$2" ]; then
|
gokhlayeh@204
|
2662 pkg_repository=$2
|
pankso@7
|
2663 else
|
gokhlayeh@186
|
2664 echo -e "\nUnable to find directory : $2\n" >&2
|
gokhlayeh@186
|
2665 exit 1
|
pankso@7
|
2666 fi
|
pankso@7
|
2667 fi
|
gokhlayeh@186
|
2668
|
gokhlayeh@186
|
2669 source_lib report
|
gokhlayeh@204
|
2670 report start
|
gokhlayeh@204
|
2671 if [ "$pkg_repository" ]; then
|
gokhlayeh@204
|
2672 update_packages_db
|
gokhlayeh@204
|
2673 else
|
gokhlayeh@204
|
2674 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2675 pkg_repository=$INCOMING_REPOSITORY && update_packages_db
|
gokhlayeh@204
|
2676 fi
|
gokhlayeh@186
|
2677 ;;
|
pankso@7
|
2678 new-tree)
|
MikeDSmith25@82
|
2679 # Just create a few directories and generate an empty receipt to prepare
|
pankso@7
|
2680 # the creation of a new package.
|
pankso@7
|
2681 #
|
gokhlayeh@186
|
2682 get_tazwok_config
|
pankso@7
|
2683 check_for_package_on_cmdline
|
pankso@7
|
2684 if [ -d $WOK/$PACKAGE ]; then
|
gokhlayeh@186
|
2685 echo -e "\n$PACKAGE package tree already exists.\n" >&2
|
gokhlayeh@186
|
2686 exit 1
|
pankso@7
|
2687 fi
|
pankso@7
|
2688 echo "Creating : $WOK/$PACKAGE"
|
pankso@7
|
2689 mkdir $WOK/$PACKAGE
|
pankso@7
|
2690 cd $WOK/$PACKAGE
|
pankso@7
|
2691 echo -n "Preparing the receipt..."
|
pankso@7
|
2692 #
|
pankso@7
|
2693 # Default receipt begin.
|
pankso@7
|
2694 #
|
pankso@7
|
2695 echo "# SliTaz package receipt." > receipt
|
pankso@7
|
2696 echo "" >> receipt
|
pankso@7
|
2697 echo "PACKAGE=\"$PACKAGE\"" >> receipt
|
pankso@7
|
2698 # Finish the empty receipt.
|
pankso@7
|
2699 cat >> receipt << "EOF"
|
pankso@7
|
2700 VERSION=""
|
pankso@7
|
2701 CATEGORY=""
|
pankso@7
|
2702 SHORT_DESC=""
|
pankso@7
|
2703 MAINTAINER=""
|
pankso@7
|
2704 DEPENDS=""
|
pankso@7
|
2705 TARBALL="$PACKAGE-$VERSION.tar.gz"
|
pankso@7
|
2706 WEB_SITE=""
|
pankso@7
|
2707 WGET_URL=""
|
pankso@7
|
2708
|
pankso@7
|
2709 # Rules to configure and make the package.
|
pankso@7
|
2710 compile_rules()
|
pankso@7
|
2711 {
|
pankso@7
|
2712 cd $src
|
gokhlayeh@204
|
2713 ./configure && make && make install
|
pankso@7
|
2714 }
|
pankso@7
|
2715
|
pankso@7
|
2716 # Rules to gen a SliTaz package suitable for Tazpkg.
|
pankso@7
|
2717 genpkg_rules()
|
pankso@7
|
2718 {
|
pankso@7
|
2719 mkdir -p $fs/usr
|
pankso@7
|
2720 cp -a $_pkg/usr/bin $fs/usr
|
pankso@7
|
2721 }
|
pankso@7
|
2722
|
pankso@7
|
2723 EOF
|
pankso@7
|
2724 #
|
pankso@7
|
2725 # Default receipt end.
|
pankso@7
|
2726 #
|
pankso@7
|
2727 status
|
pankso@7
|
2728 # Interactive mode, asking and seding.
|
pankso@7
|
2729 if [ "$3" = "--interactive" ]; then
|
paul@154
|
2730 echo "Entering into interactive mode..."
|
pankso@7
|
2731 echo "================================================================================"
|
pankso@7
|
2732 echo "Package : $PACKAGE"
|
pankso@7
|
2733 # Version.
|
pankso@7
|
2734 echo -n "Version : " ; read anser
|
pankso@7
|
2735 sed -i s/'VERSION=\"\"'/"VERSION=\"$anser\""/ receipt
|
pankso@7
|
2736 # Category.
|
pankso@7
|
2737 echo -n "Category : " ; read anser
|
pankso@7
|
2738 sed -i s/'CATEGORY=\"\"'/"CATEGORY=\"$anser\""/ receipt
|
pankso@7
|
2739 # Short description.
|
pankso@7
|
2740 echo -n "Short desc : " ; read anser
|
pankso@7
|
2741 sed -i s/'SHORT_DESC=\"\"'/"SHORT_DESC=\"$anser\""/ receipt
|
pankso@7
|
2742 # Maintainer.
|
pankso@7
|
2743 echo -n "Maintainer : " ; read anser
|
pankso@7
|
2744 sed -i s/'MAINTAINER=\"\"'/"MAINTAINER=\"$anser\""/ receipt
|
pankso@7
|
2745 # Web site.
|
pankso@7
|
2746 echo -n "Web site : " ; read anser
|
pankso@133
|
2747 sed -i s#'WEB_SITE=\"\"'#"WEB_SITE=\"$anser\""# receipt
|
pankso@7
|
2748 echo ""
|
pankso@7
|
2749 # Wget URL.
|
pankso@7
|
2750 echo "Wget URL to download source tarball."
|
pankso@7
|
2751 echo "Example : \$GNU_MIRROR/\$PACKAGE/\$TARBALL"
|
pankso@7
|
2752 echo -n "Wget url : " ; read anser
|
pankso@7
|
2753 sed -i s#'WGET_URL=\"\"'#"WGET_URL=\"$anser\""# receipt
|
pankso@7
|
2754 # Ask for a stuff dir.
|
pankso@7
|
2755 echo -n "Do you need a stuff directory ? (y/N) : " ; read anser
|
pankso@7
|
2756 if [ "$anser" = "y" ]; then
|
pankso@7
|
2757 echo -n "Creating the stuff directory..."
|
pankso@7
|
2758 mkdir stuff && status
|
pankso@7
|
2759 fi
|
pankso@7
|
2760 # Ask for a description file.
|
pankso@7
|
2761 echo -n "Are you going to write a description ? (y/N) : " ; read anser
|
pankso@7
|
2762 if [ "$anser" = "y" ]; then
|
pankso@7
|
2763 echo -n "Creating the description.txt file..."
|
pankso@7
|
2764 echo "" > description.txt && status
|
pankso@7
|
2765 fi
|
pankso@7
|
2766 echo "================================================================================"
|
pankso@7
|
2767 echo ""
|
pankso@7
|
2768 fi
|
gokhlayeh@186
|
2769 ;;
|
pankso@7
|
2770 remove)
|
pankso@7
|
2771 # Remove a package from the wok.
|
pankso@7
|
2772 #
|
gokhlayeh@186
|
2773 get_tazwok_config
|
pankso@7
|
2774 check_for_package_on_cmdline
|
pankso@7
|
2775 echo ""
|
pascal@83
|
2776 echo -n "Please confirm deletion (y/N) : "; read anser
|
pascal@83
|
2777 if [ "$anser" = "y" ]; then
|
pascal@83
|
2778 echo -n "Removing $PACKAGE..."
|
pascal@83
|
2779 rm -rf $WOK/$PACKAGE && status
|
pascal@83
|
2780 echo ""
|
pascal@83
|
2781 fi
|
gokhlayeh@186
|
2782 ;;
|
pankso@106
|
2783 hgup)
|
paul@166
|
2784 # Pull and update a Hg wok.
|
gokhlayeh@186
|
2785 get_tazwok_config
|
gokhlayeh@195
|
2786 if ls -l $WOK/.hg/hgrc | fgrep -q "root"; then
|
pankso@106
|
2787 check_root
|
pankso@106
|
2788 fi
|
pankso@106
|
2789 cd $WOK
|
gokhlayeh@186
|
2790 hg pull && hg update
|
gokhlayeh@186
|
2791 ;;
|
pankso@108
|
2792 maintainers)
|
gokhlayeh@186
|
2793 get_tazwok_config
|
pankso@108
|
2794 echo ""
|
pankso@108
|
2795 echo "List of maintainers for: $WOK"
|
pankso@108
|
2796 echo "================================================================================"
|
pankso@108
|
2797 touch /tmp/slitaz-maintainers
|
pankso@108
|
2798 for pkg in $WOK/*
|
pankso@108
|
2799 do
|
pankso@108
|
2800 . $pkg/receipt
|
gokhlayeh@195
|
2801 if ! fgrep -q "$MAINTAINER" /tmp/slitaz-maintainers; then
|
pankso@108
|
2802 echo "$MAINTAINER" >> /tmp/slitaz-maintainers
|
pankso@108
|
2803 echo "$MAINTAINER"
|
pankso@108
|
2804 fi
|
pankso@108
|
2805 done
|
pankso@108
|
2806 echo "================================================================================"
|
pankso@108
|
2807 echo "Maintainers: `cat /tmp/slitaz-maintainers | wc -l`"
|
pankso@108
|
2808 echo ""
|
pankso@108
|
2809 # Remove tmp files
|
gokhlayeh@186
|
2810 rm -f /tmp/slitaz-maintainers
|
gokhlayeh@186
|
2811 ;;
|
pankso@107
|
2812 maintained-by)
|
paul@166
|
2813 # Search for packages maintained by a contributor.
|
gokhlayeh@186
|
2814 get_tazwok_config
|
pankso@107
|
2815 if [ ! -n "$2" ]; then
|
gokhlayeh@186
|
2816 echo "Specify a name or email of a maintainer." >&2
|
gokhlayeh@186
|
2817 exit 1
|
pankso@107
|
2818 fi
|
pankso@107
|
2819 echo "Maintainer packages"
|
pankso@107
|
2820 echo "================================================================================"
|
pankso@107
|
2821 for pkg in $WOK/*
|
pankso@107
|
2822 do
|
pankso@107
|
2823 . $pkg/receipt
|
gokhlayeh@195
|
2824 if echo "$MAINTAINER" | fgrep -q "$2"; then
|
pankso@107
|
2825 echo "$PACKAGE"
|
gokhlayeh@186
|
2826 packages=$(($PACKAGEs+1))
|
pankso@107
|
2827 fi
|
pankso@107
|
2828 done
|
pankso@107
|
2829 echo "================================================================================"
|
gokhlayeh@186
|
2830 echo "Packages maintained by $2: $PACKAGEs"
|
gokhlayeh@186
|
2831 echo ""
|
gokhlayeh@186
|
2832 ;;
|
gokhlayeh@268
|
2833 tags)
|
gokhlayeh@268
|
2834 get_tazwok_config
|
gokhlayeh@268
|
2835 echo -e "\n\033[1mTags list :\033[0m"
|
gokhlayeh@268
|
2836 horizontal_line
|
gokhlayeh@268
|
2837 cd $WOK
|
gokhlayeh@268
|
2838 for i in */receipt; do
|
gokhlayeh@268
|
2839 unset TAGS
|
gokhlayeh@268
|
2840 source $i
|
gokhlayeh@268
|
2841 for t in $TAGS; do
|
gokhlayeh@268
|
2842 grep -q ^$t$ $tmp/tags && continue
|
gokhlayeh@268
|
2843 echo $t | tee -a $tmp/tags
|
gokhlayeh@268
|
2844 done
|
gokhlayeh@268
|
2845 done
|
gokhlayeh@268
|
2846 horizontal_line
|
gokhlayeh@268
|
2847 echo "$(wc -l $tmp/tags | cut -f1 -d ' ') tags listed."
|
gokhlayeh@268
|
2848 ;;
|
erjo@159
|
2849 check-src)
|
erjo@159
|
2850 # Verify if upstream package is still available
|
erjo@159
|
2851 #
|
gokhlayeh@186
|
2852 get_tazwok_config
|
erjo@159
|
2853 check_for_package_on_cmdline
|
erjo@159
|
2854 check_for_receipt
|
gokhlayeh@186
|
2855 source_receipt
|
erjo@159
|
2856 check_src()
|
erjo@159
|
2857 {
|
erjo@159
|
2858 for url in $@; do
|
pascal@178
|
2859 busybox wget -s $url 2>/dev/null && break
|
erjo@159
|
2860 done
|
erjo@159
|
2861 }
|
gokhlayeh@186
|
2862 if [ "$WGET_URL" ];then
|
erjo@159
|
2863 echo -n "$PACKAGE : "
|
erjo@159
|
2864 check_src $WGET_URL
|
erjo@159
|
2865 status
|
erjo@159
|
2866 else
|
erjo@159
|
2867 echo "No tarball to check for $PACKAGE"
|
erjo@159
|
2868 fi
|
gokhlayeh@186
|
2869 ;;
|
gokhlayeh@186
|
2870 get-src)
|
gokhlayeh@186
|
2871 check_root
|
gokhlayeh@225
|
2872 get_options_list="target nounpack"
|
gokhlayeh@186
|
2873 get_tazwok_config
|
gokhlayeh@186
|
2874 check_for_package_on_cmdline
|
gokhlayeh@186
|
2875 check_for_receipt
|
gokhlayeh@186
|
2876 source_receipt
|
gokhlayeh@186
|
2877 if [ "$WGET_URL" ];then
|
gokhlayeh@186
|
2878 source_lib report
|
gokhlayeh@186
|
2879 report start
|
gokhlayeh@225
|
2880 check_for_tarball
|
slaxemulator@274
|
2881 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@186
|
2882 else
|
gokhlayeh@186
|
2883 echo "No tarball to download for $PACKAGE"
|
gokhlayeh@186
|
2884 fi
|
gokhlayeh@186
|
2885 ;;
|
gokhlayeh@204
|
2886 check-commit)
|
gokhlayeh@186
|
2887 check_root
|
gokhlayeh@204
|
2888 get_options_list="missing forced"
|
gokhlayeh@186
|
2889 get_tazwok_config
|
gokhlayeh@186
|
2890 source_lib report
|
gokhlayeh@186
|
2891 report start
|
gokhlayeh@204
|
2892 if [ "$forced" ]; then
|
gokhlayeh@204
|
2893 rm -f $WOK/*/md5
|
gokhlayeh@204
|
2894 unset forced
|
gokhlayeh@204
|
2895 fi
|
gokhlayeh@204
|
2896 if [ "$missing" ]; then
|
gokhlayeh@204
|
2897 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2898 else
|
gokhlayeh@204
|
2899 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2900 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2901 } | sort -u)"
|
gokhlayeh@204
|
2902 fi
|
gokhlayeh@204
|
2903 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
2904 gen_cook_list
|
gokhlayeh@186
|
2905 ;;
|
gokhlayeh@186
|
2906 cook-commit)
|
gokhlayeh@186
|
2907 check_root
|
gokhlayeh@204
|
2908 get_options_list="missing forced"
|
gokhlayeh@186
|
2909 get_tazwok_config
|
gokhlayeh@186
|
2910 source_lib report
|
gokhlayeh@186
|
2911 report start
|
gokhlayeh@204
|
2912 if [ "$forced" ]; then
|
gokhlayeh@204
|
2913 rm -f $WOK/*/md5
|
gokhlayeh@204
|
2914 unset forced
|
gokhlayeh@204
|
2915 fi
|
gokhlayeh@204
|
2916 if [ "$missing" ]; then
|
gokhlayeh@204
|
2917 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2918 else
|
gokhlayeh@204
|
2919 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2920 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2921 } | sort -u)"
|
gokhlayeh@204
|
2922 fi
|
gokhlayeh@204
|
2923 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
2924 gen_cook_list
|
gokhlayeh@186
|
2925 cook_list
|
gokhlayeh@186
|
2926 ;;
|
gokhlayeh@186
|
2927 cook-all)
|
gokhlayeh@186
|
2928 check_root
|
gokhlayeh@204
|
2929 get_options_list="forced missing"
|
gokhlayeh@186
|
2930 get_tazwok_config
|
gokhlayeh@186
|
2931 source_lib report
|
gokhlayeh@186
|
2932 report start
|
gokhlayeh@204
|
2933 if [ "$missing" ]; then
|
gokhlayeh@204
|
2934 pkg=$(ls -1 $WOK)
|
gokhlayeh@204
|
2935 else
|
gokhlayeh@204
|
2936 pkg="$({ grep ^[a-zA-Z0-9] $PACKAGES_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2937 grep ^[a-zA-Z0-9] $INCOMING_REPOSITORY/packages.txt
|
gokhlayeh@204
|
2938 } | sort -u)"
|
gokhlayeh@204
|
2939 fi
|
gokhlayeh@204
|
2940 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@204
|
2941 gen_cook_list
|
gokhlayeh@186
|
2942 cook_list
|
gokhlayeh@186
|
2943 ;;
|
gokhlayeh@186
|
2944 gen-wok-db)
|
gokhlayeh@186
|
2945 check_root
|
gokhlayeh@186
|
2946 get_tazwok_config
|
gokhlayeh@186
|
2947 source_lib report
|
gokhlayeh@186
|
2948 report start
|
gokhlayeh@204
|
2949 gen_wok_db
|
gokhlayeh@186
|
2950 ;;
|
gokhlayeh@186
|
2951 report)
|
gokhlayeh@186
|
2952 check_root
|
gokhlayeh@186
|
2953 get_tazwok_config
|
gokhlayeh@186
|
2954 cd $PACKAGES_REPOSITORY
|
gokhlayeh@239
|
2955 if [ "$2" ]; then
|
gokhlayeh@239
|
2956 case $2 in
|
gokhlayeh@239
|
2957 commit|cooklist|incoming|broken|blocked)
|
gokhlayeh@239
|
2958 show="$2"
|
gokhlayeh@239
|
2959 ;;
|
gokhlayeh@239
|
2960 *)
|
gokhlayeh@239
|
2961 echo "usage : tazwok report [commit|cooklist|incoming|broken|blocked]" >&2
|
gokhlayeh@239
|
2962 exit 1
|
gokhlayeh@239
|
2963 ;;
|
gokhlayeh@239
|
2964 esac
|
gokhlayeh@239
|
2965 else
|
gokhlayeh@239
|
2966 show="commit cooklist incoming broken blocked"
|
gokhlayeh@239
|
2967 fi
|
gokhlayeh@239
|
2968 for i in $show; do
|
gokhlayeh@186
|
2969 if [ -s $i ]; then
|
gokhlayeh@239
|
2970 echo ""
|
gokhlayeh@239
|
2971 echo -e "\033[1m$i\033[0m"
|
gokhlayeh@239
|
2972 echo "================================================================================"
|
gokhlayeh@239
|
2973 cat $i
|
gokhlayeh@239
|
2974 echo "================================================================================"
|
gokhlayeh@239
|
2975 echo ""
|
gokhlayeh@186
|
2976 fi
|
gokhlayeh@186
|
2977 done
|
gokhlayeh@186
|
2978 ;;
|
gokhlayeh@186
|
2979 check-incoming)
|
gokhlayeh@186
|
2980 check_root
|
gokhlayeh@214
|
2981 get_options_list="forced"
|
gokhlayeh@186
|
2982 get_tazwok_config
|
gokhlayeh@186
|
2983 source_lib report
|
gokhlayeh@186
|
2984 report start
|
gokhlayeh@186
|
2985 check_for_incoming
|
gokhlayeh@186
|
2986 ;;
|
gokhlayeh@190
|
2987 configure-chroot)
|
gokhlayeh@190
|
2988 check_root
|
gokhlayeh@190
|
2989 get_tazwok_config
|
gokhlayeh@190
|
2990 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@190
|
2991 cd $LOCAL_REPOSITORY
|
gokhlayeh@190
|
2992 configure_tazchroot
|
gokhlayeh@190
|
2993 else
|
gokhlayeh@190
|
2994 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@190
|
2995 exit 1
|
gokhlayeh@190
|
2996 fi
|
gokhlayeh@190
|
2997 ;;
|
gokhlayeh@186
|
2998 chroot)
|
gokhlayeh@186
|
2999 check_root
|
gokhlayeh@186
|
3000 get_tazwok_config
|
gokhlayeh@186
|
3001 # Merge this and the other chroot function ?.
|
gokhlayeh@186
|
3002 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3003 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3004 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3005 tazchroot
|
gokhlayeh@186
|
3006 else
|
gokhlayeh@186
|
3007 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3008 exit 1
|
gokhlayeh@186
|
3009 fi
|
gokhlayeh@186
|
3010 ;;
|
gokhlayeh@186
|
3011 cook-toolchain)
|
gokhlayeh@186
|
3012 check_root
|
gokhlayeh@186
|
3013 get_tazwok_config
|
gokhlayeh@186
|
3014 echo -n "" > $PACKAGES_REPOSITORY/broken
|
gokhlayeh@186
|
3015 if [ -f /usr/bin/tazchroot ]; then
|
gokhlayeh@186
|
3016 cd $LOCAL_REPOSITORY
|
gokhlayeh@186
|
3017 [ ! -f tazchroot.conf ] && configure_tazchroot
|
gokhlayeh@186
|
3018 tazchroot cook-toolchain
|
gokhlayeh@186
|
3019 # Buggy : chroot can be elsewhere.
|
gokhlayeh@186
|
3020 rm -r $LOCAL_REPOSITORY/chroot
|
gokhlayeh@186
|
3021 # /!\ to be writed :
|
gokhlayeh@186
|
3022 # next rm chroot and plan cook-all by pushing all packages
|
gokhlayeh@186
|
3023 # in cooklist.
|
gokhlayeh@186
|
3024 else
|
gokhlayeh@186
|
3025 echo "The packages tazchroot need to be installed" >&2
|
gokhlayeh@186
|
3026 exit 1
|
gokhlayeh@186
|
3027 fi
|
gokhlayeh@186
|
3028 ;;
|
gokhlayeh@235
|
3029 webserver)
|
gokhlayeh@235
|
3030 check_root
|
gokhlayeh@235
|
3031 get_tazwok_config
|
gokhlayeh@235
|
3032 if [ "$ARG" = on ]; then
|
gokhlayeh@235
|
3033 if [ "$WEBSERVER" ] && [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3034 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3035 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3036 exit 1
|
gokhlayeh@235
|
3037 fi
|
gokhlayeh@235
|
3038 if ! [ -f $LOCAL_REPOSITORY/tazchroot.conf ]; then
|
gokhlayeh@235
|
3039 tazwok configure-chroot ${undigest:+--undigest=$undigest} --SLITAZ_VERSION=$SLITAZ_VERSION --SLITAZ_DIR=$SLITAZ_DIR
|
gokhlayeh@235
|
3040 fi
|
gokhlayeh@235
|
3041 for pkg in php lighttpd; do
|
gokhlayeh@235
|
3042 [ -d $INSTALLED/$pkg ] || missing="$missing $pkg"
|
gokhlayeh@235
|
3043 done
|
gokhlayeh@235
|
3044 if [ "$missing" ]; then
|
gokhlayeh@235
|
3045 echo "You need to install those packages to start webserver: $missing." >&2
|
gokhlayeh@235
|
3046 exit 1
|
gokhlayeh@235
|
3047 fi
|
gokhlayeh@235
|
3048 if [ ! -f "$LOCAL_REPOSITORY/tazwok.conf" ]; then
|
gokhlayeh@235
|
3049 echo "Copying /etc/slitaz/tazwok.conf to $LOCAL_REPOSITORY/tazwok.conf: webserver is configured repository-by-repository."
|
gokhlayeh@235
|
3050 cp /etc/slitaz/tazwok.conf $LOCAL_REPOSITORY
|
gokhlayeh@235
|
3051 fi
|
gokhlayeh@235
|
3052 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3053 echo -n "Where to store php pages (default: /var/www/vhosts/bb)? "
|
gokhlayeh@235
|
3054 read WEBSERVER
|
gokhlayeh@235
|
3055 [ "$WEBSERVER" ] || WEBSERVER="/var/www/vhosts/bb"
|
gokhlayeh@235
|
3056 fi
|
gokhlayeh@235
|
3057 if [ -f "$WEBSERVER/repositories.list" ] && \
|
gokhlayeh@235
|
3058 grep -q ^"${undigest:-$SLITAZ_VERSION}"$ $WEBSERVER/repositories.list; then
|
gokhlayeh@235
|
3059 echo "Webserver is already enabled at $WEBSERVER for ${undigest:-$SLITAZ_VERSION}." >&2
|
gokhlayeh@235
|
3060 exit 1
|
gokhlayeh@235
|
3061 fi
|
gokhlayeh@235
|
3062 mkdir -p $WEBSERVER
|
gokhlayeh@235
|
3063 echo "${undigest:-$SLITAZ_VERSION}" >> $WEBSERVER/repositories.list
|
gokhlayeh@267
|
3064 for file in index.php log.php download.php; do
|
gokhlayeh@235
|
3065 [ -f "$WEBSERVER/$file" ] || ln -s /usr/share/slitaz/web-bb/$file $WEBSERVER
|
gokhlayeh@235
|
3066 done
|
gokhlayeh@267
|
3067 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3068 ln -s $dir $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3069 done
|
gokhlayeh@235
|
3070 source $LOCAL_REPOSITORY/tazchroot.conf
|
gokhlayeh@235
|
3071 echo "<?php
|
gokhlayeh@235
|
3072
|
gokhlayeh@235
|
3073 // Web interface configuration
|
gokhlayeh@235
|
3074
|
gokhlayeh@235
|
3075 \$version=\"${undigest:-$SLITAZ_VERSION}\";
|
gokhlayeh@235
|
3076 \$chroot=\"$chroot_dir\";
|
gokhlayeh@235
|
3077 \$lockfile=\"\$chroot/proc/1\";
|
gokhlayeh@235
|
3078 \$db_dir=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3079 \$log_dir=\"$LOCAL_REPOSITORY/log\";
|
gokhlayeh@235
|
3080 \$packages=\"$PACKAGES_REPOSITORY\";
|
gokhlayeh@235
|
3081 \$incoming=\"$INCOMING_REPOSITORY\";
|
gokhlayeh@251
|
3082 \$wok=\"$WOK\";
|
gokhlayeh@235
|
3083
|
gokhlayeh@235
|
3084 ?>" > $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@235
|
3085 [ -L "$WEBSERVER/web" ] || ln -s /usr/share/slitaz/web $WEBSERVER
|
gokhlayeh@235
|
3086 echo "WEBSERVER=\"$WEBSERVER\"" >> $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3087 if [ -L "$WEBSERVER/conf.php" ]; then
|
gokhlayeh@235
|
3088 echo "Do yo want to make ${undigest:-$SLITAZ_VERSION} the default page (y/N) ? "
|
gokhlayeh@235
|
3089 read answer
|
gokhlayeh@235
|
3090 if [ "$answer" = y ]; then
|
gokhlayeh@235
|
3091 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3092 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3093 fi
|
gokhlayeh@235
|
3094 else
|
gokhlayeh@235
|
3095 ln -s $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3096 fi
|
gokhlayeh@235
|
3097 elif [ "$ARG" = off ]; then
|
gokhlayeh@235
|
3098 if ! [ "$WEBSERVER" ]; then
|
gokhlayeh@235
|
3099 echo "No webserver running for ${undigest:-$SLITAZ_VERSION}" >&2
|
gokhlayeh@235
|
3100 exit 1
|
gokhlayeh@235
|
3101 fi
|
gokhlayeh@235
|
3102 sed '/^WEBSERVER/d' -i $LOCAL_REPOSITORY/tazwok.conf
|
gokhlayeh@235
|
3103 sed "/^${undigest:-$SLITAZ_VERSION}$/d" -i $WEBSERVER/repositories.list
|
gokhlayeh@235
|
3104 rm $WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php
|
gokhlayeh@267
|
3105 for dir in $PACKAGES_REPOSITORY $INCOMING_REPOSITORY; do
|
gokhlayeh@267
|
3106 rm $WEBSERVER/${undigest:-$SLITAZ_VERSION}-${dir##*/}
|
gokhlayeh@267
|
3107 done
|
gokhlayeh@235
|
3108 if ! [ -s "$WEBSERVER/repositories.list" ]; then
|
gokhlayeh@235
|
3109 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
|
3110 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3111 elif [ "$(readlink $WEBSERVER/conf.php)" = "$WEBSERVER/conf-${undigest:-$SLITAZ_VERSION}.php" ]; then
|
gokhlayeh@235
|
3112 echo "${undigest:-$SLITAZ_VERSION} was the default version to use; switched to : $(sed 1!d $WEBSERVER/repositories.list)"
|
gokhlayeh@235
|
3113 rm $WEBSERVER/conf.php
|
gokhlayeh@235
|
3114 ln -s $WEBSERVER/conf-$(sed 1!d $WEBSERVER/repositories.list).php $WEBSERVER/conf.php
|
gokhlayeh@235
|
3115 fi
|
gokhlayeh@235
|
3116 else
|
gokhlayeh@235
|
3117 echo "Usage: tazwok webserver on/off" >&2
|
gokhlayeh@235
|
3118 exit 1
|
gokhlayeh@235
|
3119 fi
|
gokhlayeh@235
|
3120 ;;
|
pankso@7
|
3121 usage|*)
|
MikeDSmith25@82
|
3122 # Print usage also for all unknown commands.
|
pankso@7
|
3123 #
|
pankso@7
|
3124 usage
|
gokhlayeh@186
|
3125 ;;
|
pankso@7
|
3126 esac
|
pankso@7
|
3127
|
gokhlayeh@186
|
3128 report stop 2>/dev/null || exit 0
|