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