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