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