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