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