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