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