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