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