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