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