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