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