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