rev |
line source |
pankso@7
|
1 #!/bin/sh
|
pankso@7
|
2 # Tazwok - SliTaz source compiler and binary packages generator/cooker.
|
pankso@7
|
3 #
|
MikeDSmith25@82
|
4 # Tazwok can compile source packages and create binary packages suitable for
|
MikeDSmith25@82
|
5 # Tazpkg (Tiny Autonomous zone package manager). You can build individual
|
MikeDSmith25@82
|
6 # packages or a list of packages with one command, rebuild the full distro,
|
pankso@7
|
7 # generate a packages repository and also list and get info about packages.
|
pankso@7
|
8 #
|
pankso@106
|
9 # (C) 2007-2009 SliTaz - GNU General Public License.
|
pankso@7
|
10 #
|
pankso@7
|
11
|
gokhlayeh@492
|
12 VERSION=4.2.13
|
gokhlayeh@186
|
13 . /usr/lib/slitaz/libtaz
|
gokhlayeh@186
|
14 source_lib commons
|
pankso@7
|
15
|
gokhlayeh@186
|
16 # Use text instead of numbers, don't get $2 here if it's an option.
|
gokhlayeh@186
|
17 [ "$2" = "${2#--}" ] && PACKAGE=$2 && LIST=$2 && ARG=$2
|
gokhlayeh@186
|
18 COMMAND=$1
|
pankso@7
|
19
|
gokhlayeh@186
|
20 ########################################################################
|
gokhlayeh@186
|
21 # TAZWOK USAGE
|
gokhlayeh@186
|
22 ########################
|
gokhlayeh@186
|
23 # Print the usage (English).
|
pankso@7
|
24
|
gokhlayeh@237
|
25 usage()
|
pankso@7
|
26 {
|
pankso@7
|
27 echo -e "\nSliTaz sources compiler and packages generator - Version: $VERSION\n
|
pankso@107
|
28 \033[1mUsage: \033[0m `basename $0` [command] [package|list|category|dir|id] [--option]
|
pankso@7
|
29 \033[1mCommands: \033[0m\n
|
pankso@7
|
30 usage Print this short usage.
|
pankso@7
|
31 stats Print Tazwok statistics from the config file and the wok.
|
pankso@133
|
32 edit Edit a package receipt in the current wok.
|
paul@121
|
33 build-depends Generate a list of packages to build a wok.
|
pankso@7
|
34 list List all packages in the wok tree or by category.
|
MikeDSmith25@82
|
35 info Get information about a package in the wok.
|
gokhlayeh@283
|
36 report Display commit/cooklist/broken/blocked.
|
pascal@92
|
37 check Check every receipt for common errors.
|
pankso@7
|
38 check-log Check the process log file of a package.
|
gokhlayeh@186
|
39 check-depends* Check every receipt for DEPENDS - doesn't scan ELF files.
|
erjo@159
|
40 check-src Check upstream tarball for package in the wok.
|
pankso@7
|
41 search Search for a package in the wok by pattern or name.
|
MikeDSmith25@82
|
42 compile Configure and build a package using the receipt rules.
|
pankso@7
|
43 genpkg Generate a suitable package for Tazpkg with the rules.
|
pankso@7
|
44 cook Compile and generate a package directly.
|
pankso@7
|
45 cook-list Cook all packages specified in the list by order.
|
gokhlayeh@186
|
46 cook-commit Cook all modified receipts.
|
paul@430
|
47 cook-all Cook all packages except toolchain.
|
gokhlayeh@186
|
48 cook-toolchain Cook the toolchain packages.
|
gokhlayeh@240
|
49 gen-cooklist Generate a sorted cooklist using packages or list.
|
gokhlayeh@186
|
50 sort-cooklist Sort the cooklist given in argument.
|
gokhlayeh@186
|
51 get-src Download the tarball of the package given in argument.
|
slaxemulator@456
|
52 gen-src Rebuild sources.list in $SOURCES_REPOSITORY folder.
|
pankso@7
|
53 clean Clean all generated files in the package tree.
|
pankso@7
|
54 new-tree Prepare a new package tree and receipt (--interactive).
|
gokhlayeh@186
|
55 gen-list (Re-)Generate a packages list for a repository.
|
gokhlayeh@240
|
56 check-list Update packages lists for a repository.
|
paul@430
|
57 gen-wok-db (Re-)Generate wok lists with depends and wanted data.
|
gokhlayeh@240
|
58 gen-clean-wok Generate a clean wok in a dir.
|
gokhlayeh@186
|
59 clean-wok Clean entirely the wok.
|
paul@430
|
60 clean-src Remove old/unrelated-to-wok sources.
|
pankso@107
|
61 remove Remove a package from the wok.
|
gokhlayeh@240
|
62 webserver Enable/disable webserver on localhost.
|
gokhlayeh@304
|
63 update-wok Update the wok.
|
pankso@108
|
64 maintainers List all maintainers in the wok.
|
gokhlayeh@281
|
65 maintained-by List packages maintained by a contributor.
|
pankso@355
|
66 tags List all tags used in wok receipts.
|
pankso@355
|
67 block Add package from the blocked list to prevent cooking it.
|
pankso@355
|
68 unblock Remove package from the blocked list.\n
|
gokhlayeh@186
|
69
|
paul@430
|
70 You can use `basename $0` command --help to list available options.
|
gokhlayeh@186
|
71 \033[1mImportant - *: \033[0m Commands which need a rewrite."
|
pankso@7
|
72 }
|
pankso@7
|
73
|
paul@430
|
74 # This function displays an error message without returning any error code.
|
paul@430
|
75 # It also logs the message in source package's warnings.txt; this file can be
|
gokhlayeh@186
|
76 # used on an eventual package page on website to display cooking warnings.
|
gokhlayeh@186
|
77 tazwok_warning()
|
pankso@7
|
78 {
|
gokhlayeh@186
|
79 echo -e "tazwok: $1" >&2
|
gokhlayeh@186
|
80 echo -e "$1" >> $WOK/${WANTED:-$PACKAGE}/warning.txt
|
gokhlayeh@186
|
81 return
|
pankso@7
|
82 }
|
pankso@7
|
83
|
gokhlayeh@186
|
84 ########################################################################
|
gokhlayeh@186
|
85 # TAZWOK VARIABLES & INITIAL CONFIGURATION
|
gokhlayeh@186
|
86 ########################
|
gokhlayeh@186
|
87
|
gokhlayeh@186
|
88 get_tazwok_config()
|
pankso@7
|
89 {
|
gokhlayeh@186
|
90 # Get configuration file.
|
gokhlayeh@186
|
91 get_config
|
gokhlayeh@186
|
92
|
gokhlayeh@186
|
93 # Define & get options.
|
slaxemulator@457
|
94 get_options_list="$get_options_list WOK SLITAZ_DIR SLITAZ_VERSION undigest"
|
gokhlayeh@186
|
95 get_options
|
gokhlayeh@186
|
96
|
gokhlayeh@364
|
97 LOCAL_REPOSITORY=$SLITAZ_DIR/${undigest:-$SLITAZ_VERSION}
|
gokhlayeh@235
|
98
|
gokhlayeh@235
|
99 if ! [ "$save_dir" ]; then
|
gokhlayeh@235
|
100 if [ -f $LOCAL_REPOSITORY/tazwok.conf ] || [ -f $LOCAL_REPOSITORY/slitaz.conf ]; then
|
gokhlayeh@235
|
101 save_dir=$LOCAL_REPOSITORY
|
gokhlayeh@235
|
102 [ -f $LOCAL_REPOSITORY/slitaz.conf ] && source $LOCAL_REPOSITORY/slitaz.conf
|
gokhlayeh@235
|
103 cd $save_dir
|
gokhlayeh@235
|
104 get_tazwok_config
|
gokhlayeh@235
|
105 unset save_dir
|
gokhlayeh@235
|
106 return
|
gokhlayeh@235
|
107 fi
|
gokhlayeh@235
|
108 fi
|
gokhlayeh@235
|
109
|
gokhlayeh@186
|
110 # The path to the most important files/dir used by Tazwok.
|
gokhlayeh@186
|
111 PACKAGES_REPOSITORY=$LOCAL_REPOSITORY/packages
|
slaxemulator@457
|
112 [ "$WOK" ] || WOK=$LOCAL_REPOSITORY/wok
|
gokhlayeh@186
|
113 INCOMING_REPOSITORY=$LOCAL_REPOSITORY/packages-incoming
|
gokhlayeh@186
|
114 SOURCES_REPOSITORY=$LOCAL_REPOSITORY/src
|
gokhlayeh@186
|
115 set_common_path
|
gokhlayeh@186
|
116
|
gokhlayeh@186
|
117 # /!\ This part needs some changes.
|
paul@430
|
118 # Basically, get these files from the net if they are missing.
|
gokhlayeh@186
|
119 dep_db=$INCOMING_REPOSITORY/wok-depends.txt
|
gokhlayeh@186
|
120 wan_db=$INCOMING_REPOSITORY/wok-wanted.txt
|
gokhlayeh@186
|
121
|
gokhlayeh@186
|
122 # Check commons directories, create them if user is root.
|
gokhlayeh@186
|
123 if test $(id -u) = 0 ; then
|
gokhlayeh@186
|
124 check_dir $WOK || chmod 777 $WOK
|
gokhlayeh@304
|
125 check_dir $LOCAL_REPOSITORY/clean-wok || chmod 777 $LOCAL_REPOSITORY/clean-wok
|
gokhlayeh@186
|
126 check_dir $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
127 check_dir $SOURCES_REPOSITORY
|
gokhlayeh@186
|
128 check_dir $INCOMING_REPOSITORY
|
gokhlayeh@186
|
129 check_dir $LOCAL_REPOSITORY/log
|
gokhlayeh@293
|
130 [ -f $dep_db ] || touch $dep_db
|
gokhlayeh@293
|
131 [ -f $wan_db ] || touch $wan_db
|
gokhlayeh@293
|
132 [ -f $PACKAGES_REPOSITORY/cookorder.txt ] || touch $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@293
|
133 for file in broken blocked commit incoming cooklist; do
|
gokhlayeh@293
|
134 [ ! -f $PACKAGES_REPOSITORY/$file ] && touch $PACKAGES_REPOSITORY/$file
|
gokhlayeh@293
|
135 done
|
gokhlayeh@293
|
136 touch $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@186
|
137 fi
|
gokhlayeh@235
|
138
|
gokhlayeh@186
|
139 # Limit memory usage.
|
pascal@386
|
140 ulimit -v $(awk '/MemTotal|SwapTotal/ { n+=$2 } END { print int((n*80)/100) }' < /proc/meminfo)
|
gokhlayeh@352
|
141
|
gokhlayeh@352
|
142 # log steps for webserver.
|
gokhlayeh@352
|
143 log_step="$LOCAL_REPOSITORY/log/step"
|
gokhlayeh@352
|
144 run_on_exit="$run_on_exit
|
gokhlayeh@352
|
145 rm -f $LOCAL_REPOSITORY/log/step
|
gokhlayeh@352
|
146 rm -f $LOCAL_REPOSITORY/log/package"
|
pankso@7
|
147 }
|
pankso@7
|
148
|
gokhlayeh@186
|
149 # Used in several functions.
|
gokhlayeh@186
|
150 set_common_path()
|
gokhlayeh@186
|
151 {
|
gokhlayeh@186
|
152 # The receipt is used to compile the source code and
|
gokhlayeh@186
|
153 # generate suitable packages for Tazpkg.
|
gokhlayeh@186
|
154 RECEIPT="$WOK/$PACKAGE/receipt"
|
gokhlayeh@186
|
155
|
gokhlayeh@186
|
156 # The path to the process log file.
|
gokhlayeh@186
|
157 LOG="$WOK/$PACKAGE/process.log"
|
gokhlayeh@186
|
158 }
|
gokhlayeh@186
|
159
|
gokhlayeh@186
|
160 ########################################################################
|
gokhlayeh@186
|
161 # TAZWOK CHECK FUNCTIONS
|
gokhlayeh@186
|
162 ########################
|
gokhlayeh@186
|
163
|
pankso@7
|
164 # Check for a package name on cmdline.
|
pankso@7
|
165 check_for_package_on_cmdline()
|
pankso@7
|
166 {
|
gokhlayeh@186
|
167 if [ ! "$PACKAGE" ]; then
|
gokhlayeh@186
|
168 echo -e "\nYou must specify a package name on the command line." >&2
|
gokhlayeh@186
|
169 echo -e "Example : tazwok $COMMAND package\n" >&2
|
gokhlayeh@186
|
170 exit 1
|
pankso@7
|
171 fi
|
pankso@7
|
172 }
|
pankso@7
|
173
|
pankso@7
|
174 # Check for the receipt of a package used to cook.
|
pankso@7
|
175 check_for_receipt()
|
pankso@7
|
176 {
|
pankso@7
|
177 if [ ! -f "$RECEIPT" ]; then
|
gokhlayeh@186
|
178 echo -e "\nUnable to find the receipt : $RECEIPT\n" >&2
|
gokhlayeh@186
|
179 exit 1
|
pankso@7
|
180 fi
|
pankso@7
|
181 }
|
pankso@7
|
182
|
pankso@7
|
183 # Check for a specified file list on cmdline.
|
pankso@7
|
184 check_for_list()
|
pankso@7
|
185 {
|
gokhlayeh@186
|
186 if [ ! "$LIST" ]; then
|
gokhlayeh@186
|
187 echo -e "\nPlease specify the path to the list of packages to cook.\n" >&2
|
gokhlayeh@186
|
188 exit 1
|
pankso@7
|
189 fi
|
gokhlayeh@186
|
190
|
MikeDSmith25@82
|
191 # Check if the list of packages exists.
|
pankso@7
|
192 if [ -f "$LIST" ]; then
|
pankso@7
|
193 LIST=`cat $LIST`
|
pankso@7
|
194 else
|
gokhlayeh@186
|
195 echo -e "\nUnable to find $LIST packages list.\n" >&2
|
gokhlayeh@186
|
196 exit 1
|
pankso@7
|
197 fi
|
gokhlayeh@186
|
198
|
gokhlayeh@186
|
199 if [ ! "$LIST" ]; then
|
gokhlayeh@186
|
200 echo -e "\nList is empty.\n" >&2
|
gokhlayeh@186
|
201 exit 1
|
gokhlayeh@186
|
202 fi
|
gokhlayeh@186
|
203 }
|
gokhlayeh@186
|
204
|
gokhlayeh@204
|
205 check_for_pkg_in_wok()
|
gokhlayeh@204
|
206 {
|
gokhlayeh@204
|
207 [ -f $WOK/$PACKAGE/receipt ] && return
|
gokhlayeh@204
|
208 if [ "$undigest" ]; then
|
slaxemulator@496
|
209 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$PACKAGE/receipt" ] && return 1
|
gokhlayeh@240
|
210 grep -q ^$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages/packages.txt && return 1
|
gokhlayeh@204
|
211 fi
|
slaxemulator@496
|
212 [ -f $WOK/$(whoprovide $PACKAGE)/receipt ] && return 1
|
gokhlayeh@204
|
213 echo "Can't find $PACKAGE in wok or mirror" >&2
|
gokhlayeh@204
|
214 return 2
|
gokhlayeh@204
|
215 }
|
gokhlayeh@186
|
216
|
gokhlayeh@186
|
217 ########################################################################
|
gokhlayeh@186
|
218 # TAZWOK CORE FUNCTIONS
|
gokhlayeh@186
|
219 ########################
|
gokhlayeh@186
|
220
|
gokhlayeh@186
|
221 remove_src()
|
gokhlayeh@186
|
222 {
|
gokhlayeh@204
|
223 [ "$WANTED" ] && return
|
gokhlayeh@186
|
224 look_for_cookopt !remove_src && return
|
gokhlayeh@215
|
225 if [ ! -d $WOK/$PACKAGE/install ] && [ "$src" ] && [ -d "$src/_pkg" ]; then
|
gokhlayeh@186
|
226 check_for_var_modification _pkg src || return
|
gokhlayeh@215
|
227 mv "$src/_pkg" $WOK/$PACKAGE/install
|
gokhlayeh@186
|
228 fi
|
gokhlayeh@186
|
229
|
paul@430
|
230 # Don't remove sources if a package uses src variable in its
|
paul@431
|
231 # genpkg_rules: it maybe needs something inside.
|
gokhlayeh@186
|
232 for i in $PACKAGE $(look_for_rwanted); do
|
gokhlayeh@186
|
233 sed -n '/^genpkg_rules\(\)/','/}/'p $WOK/$i/receipt | \
|
gokhlayeh@195
|
234 fgrep -q '$src' && tazwok_warning "Sources will not be removed \
|
paul@431
|
235 because $i uses \$src in its receipt." && return
|
gokhlayeh@186
|
236 done
|
gokhlayeh@186
|
237
|
gokhlayeh@186
|
238 report step "Removing sources directory"
|
gokhlayeh@186
|
239 rm -fr "$src"
|
gokhlayeh@186
|
240 report end-step
|
gokhlayeh@186
|
241 }
|
gokhlayeh@186
|
242
|
gokhlayeh@186
|
243 # Check $COOK_OPT; usage : get_cookopt particular_opt
|
paul@430
|
244 # Return error if not found
|
gokhlayeh@186
|
245 # Return args if the opt is in the format opt=arg1:arg2:etc
|
gokhlayeh@186
|
246 look_for_cookopt()
|
gokhlayeh@186
|
247 {
|
gokhlayeh@186
|
248 for arg in $COOK_OPT; do
|
gokhlayeh@186
|
249 case $arg in
|
gokhlayeh@186
|
250 $1=*)
|
gokhlayeh@186
|
251 arg=${arg#$1=}
|
gokhlayeh@186
|
252 while [ "$arg" ]; do
|
gokhlayeh@186
|
253 echo "${arg%%:*}"
|
gokhlayeh@186
|
254 [ "${arg/:}" = "$arg" ] && return
|
gokhlayeh@186
|
255 arg=${arg#*:}
|
gokhlayeh@186
|
256 done
|
gokhlayeh@186
|
257 ;;
|
gokhlayeh@186
|
258 $1)
|
gokhlayeh@186
|
259 return
|
gokhlayeh@186
|
260 ;;
|
gokhlayeh@186
|
261 esac
|
gokhlayeh@186
|
262 done
|
gokhlayeh@186
|
263 return 1
|
pankso@7
|
264 }
|
pankso@7
|
265
|
pankso@7
|
266 # Check for the wanted package if specified in WANTED
|
paul@166
|
267 # receipt variable. Set the $src/$_pkg variable to help compile
|
paul@166
|
268 # and generate packages.
|
pankso@7
|
269 check_for_wanted()
|
pankso@7
|
270 {
|
gokhlayeh@186
|
271 if [ "$WANTED" ]; then
|
gokhlayeh@186
|
272 report "Checking for the wanted package"
|
pankso@7
|
273 if [ ! -d "$WOK/$WANTED" ]; then
|
gokhlayeh@186
|
274 report exit "\nWanted package is missing in the work directory.\n"
|
pankso@7
|
275 fi
|
gokhlayeh@186
|
276
|
erjo@38
|
277 # Checking for buildtree of Wanted package
|
pankso@39
|
278 if [ ! -d "$WOK/$WANTED/taz" ]; then
|
erjo@38
|
279 echo -e "\n\nSource files of wanted package is missing in the work directory."
|
erjo@38
|
280 echo -n "Would you like to build the missing package (y/N) ? " ; read anser
|
erjo@38
|
281 if [ "$anser" == "y" ]; then
|
erjo@38
|
282 tazwok cook $WANTED
|
erjo@38
|
283 else
|
gokhlayeh@186
|
284 report exit "\nWanted package source tree is missing in the work directory.\n"
|
erjo@38
|
285 fi
|
erjo@38
|
286 fi
|
gokhlayeh@186
|
287 report end-step
|
gokhlayeh@186
|
288
|
pankso@7
|
289 # Set wanted src path.
|
gokhlayeh@186
|
290 set_src_path && set_pkg_path
|
gokhlayeh@186
|
291
|
pascal@178
|
292 fi
|
pascal@178
|
293 }
|
pascal@178
|
294
|
pascal@178
|
295 # Check for build dependencies, notify user and install if specified.
|
pascal@178
|
296 check_for_build_depends()
|
pascal@178
|
297 {
|
gokhlayeh@204
|
298 [ "$WANTED" ] && return
|
gokhlayeh@213
|
299 [ "$CATEGORY" = meta ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@272
|
300 [ ! "$BUILD_DEPENDS" ] && ! fgrep -q compile_rules $RECEIPT && return
|
gokhlayeh@186
|
301 report step "Looking for build dependencies"
|
gokhlayeh@186
|
302
|
gokhlayeh@186
|
303 # Keep the list of previously installed build_depends then compare
|
gokhlayeh@186
|
304 # it with new build_depends to know what to install and what to
|
gokhlayeh@186
|
305 # what to remove.
|
gokhlayeh@186
|
306 plan_remove=" $MISSING_PACKAGE $remove_later "
|
gokhlayeh@186
|
307 [ ! "${plan_remove// }" ] && unset plan_remove
|
gokhlayeh@186
|
308 unset MISSING_PACKAGE remove_later
|
gokhlayeh@186
|
309 rwanted=$(look_for_rwanted)
|
gokhlayeh@186
|
310
|
gokhlayeh@215
|
311 for pkg in $(scan $PACKAGE --look_for=bdep --with_dev | \
|
gokhlayeh@394
|
312 grep -v $(for i in $(look_for_rwanted) $PACKAGE; do echo " -e ^$i$"; done))
|
pascal@178
|
313 do
|
gokhlayeh@186
|
314
|
gokhlayeh@186
|
315 # Delay the removing of previous cook depends if they are needed
|
gokhlayeh@186
|
316 # for next cook too.
|
gokhlayeh@186
|
317 if [ ! -d "$INSTALLED/$pkg" ] ; then
|
gokhlayeh@186
|
318 MISSING_PACKAGE="$MISSING_PACKAGE $pkg"
|
gokhlayeh@186
|
319 fi
|
gokhlayeh@186
|
320 if [ "$plan_remove" != "${plan_remove/ $pkg }" ]; then
|
gokhlayeh@186
|
321 plan_remove="${plan_remove/ $pkg / }"
|
gokhlayeh@186
|
322 remove_later="$remove_later $pkg"
|
gokhlayeh@186
|
323 fi
|
gokhlayeh@186
|
324 if grep -q ^$pkg$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@186
|
325 broken="$broken$pkg "
|
pascal@178
|
326 fi
|
pascal@178
|
327 done
|
gokhlayeh@186
|
328
|
gokhlayeh@186
|
329 # Don't cook if a depend is broken.
|
gokhlayeh@186
|
330 if [ "$broken" ]; then
|
gokhlayeh@186
|
331 MISSING_PACKAGE=$plan_remove
|
paul@430
|
332 echo "Can't cook $PACKAGE because of broken depend(s) : $broken" >&2
|
gokhlayeh@186
|
333 unset plan_remove broken
|
gokhlayeh@186
|
334
|
gokhlayeh@186
|
335 # Set report step to failed.
|
gokhlayeh@186
|
336 report_return_code=1
|
gokhlayeh@186
|
337 report end-step
|
gokhlayeh@186
|
338 return 1
|
gokhlayeh@186
|
339 fi
|
gokhlayeh@186
|
340 if [ "$MISSING_PACKAGE" ]; then
|
gokhlayeh@186
|
341 install_missing()
|
gokhlayeh@186
|
342 {
|
gokhlayeh@186
|
343 echo "Installing missing packages : $MISSING_PACKAGE"
|
gokhlayeh@186
|
344 for pkg in $MISSING_PACKAGE; do
|
gokhlayeh@186
|
345 [ -d "$INSTALLED/$pkg" ] || tazpkg get-install $pkg
|
gokhlayeh@186
|
346 done
|
gokhlayeh@186
|
347 }
|
gokhlayeh@186
|
348 if [ "$auto_install" = yes ]; then
|
gokhlayeh@186
|
349 install_missing
|
gokhlayeh@186
|
350 else
|
gokhlayeh@186
|
351 echo "================================================================================"
|
gokhlayeh@186
|
352 for pkg in $MISSING_PACKAGE
|
gokhlayeh@186
|
353 do
|
pascal@178
|
354 echo "Missing : $pkg"
|
gokhlayeh@186
|
355 done
|
gokhlayeh@186
|
356 echo "================================================================================"
|
gokhlayeh@186
|
357 echo "You can continue, exit or install missing dependencies."
|
gokhlayeh@186
|
358 echo -n "Install, continue or exit (install/y/N) ? "; read answer
|
gokhlayeh@186
|
359 case $answer in
|
gokhlayeh@186
|
360 install)
|
gokhlayeh@186
|
361 install_missing ;;
|
gokhlayeh@186
|
362 y|yes)
|
gokhlayeh@186
|
363 unset MISSING_PACKAGE;;
|
gokhlayeh@186
|
364 *)
|
gokhlayeh@186
|
365 report stop
|
gokhlayeh@186
|
366 exit 0 ;;
|
gokhlayeh@186
|
367 esac
|
gokhlayeh@186
|
368 fi
|
gokhlayeh@186
|
369 fi
|
gokhlayeh@186
|
370 report end-step
|
gokhlayeh@186
|
371 remove_build_depends $plan_remove
|
gokhlayeh@186
|
372 unset plan_remove
|
gokhlayeh@186
|
373 }
|
gokhlayeh@186
|
374
|
gokhlayeh@186
|
375 remove_build_depends()
|
gokhlayeh@186
|
376 {
|
gokhlayeh@186
|
377 [ "$1" ] || return
|
gokhlayeh@186
|
378 report step "Removing previous build dependencies"
|
paul@430
|
379 echo "Removing these packages : $@"
|
gokhlayeh@186
|
380 for pkg in $@; do
|
gokhlayeh@382
|
381 [ -f "$INSTALLED/$pkg/receipt" ] && tazpkg remove $pkg --auto
|
gokhlayeh@186
|
382 done
|
gokhlayeh@382
|
383 cd $PWD
|
gokhlayeh@186
|
384 report end-step
|
gokhlayeh@186
|
385 }
|
gokhlayeh@186
|
386
|
gokhlayeh@186
|
387 # Check if we can use the new way to handle tarball
|
paul@430
|
388 # or if we keep the previous method by checking for
|
gokhlayeh@186
|
389 # _pkg=/src= in receipt and reverse-wanted.
|
gokhlayeh@186
|
390 check_for_var_modification()
|
gokhlayeh@186
|
391 {
|
gokhlayeh@186
|
392 for var in $@; do
|
gokhlayeh@186
|
393 for pkg in $PACKAGE $(look_for_wanted) $(look_for_rwanted); do
|
gokhlayeh@186
|
394 [ -f $WOK/$pkg/receipt ] || continue
|
gokhlayeh@195
|
395 fgrep -q "$var=" $WOK/$pkg/receipt && return 1
|
pascal@178
|
396 done
|
gokhlayeh@186
|
397 done
|
gokhlayeh@186
|
398
|
gokhlayeh@186
|
399 # Tweak to make if; then...; fi function working with this one.
|
gokhlayeh@186
|
400 echo -n ""
|
gokhlayeh@186
|
401 }
|
gokhlayeh@186
|
402
|
gokhlayeh@186
|
403 set_src_path()
|
gokhlayeh@186
|
404 {
|
gokhlayeh@186
|
405 if check_for_var_modification src _pkg; then
|
gokhlayeh@186
|
406 src=$WOK/${WANTED:-$PACKAGE}/${WANTED:-$PACKAGE}-$VERSION
|
gokhlayeh@186
|
407 else
|
paul@430
|
408 tazwok_warning "Use original name or tarball root directory because src/_pkg is defined in the receipt (this is no longer needed!)."
|
gokhlayeh@186
|
409 src=$WOK/${WANTED:-$PACKAGE}/${SOURCE:-${WANTED:-$PACKAGE}}-$VERSION
|
pascal@178
|
410 fi
|
gokhlayeh@298
|
411 stuff=$WOK/$PACKAGE/stuff
|
gokhlayeh@298
|
412 [ "$WANTED" ] && wanted_stuff=$WOK/$WANTED/stuff
|
pascal@178
|
413 }
|
pascal@178
|
414
|
gokhlayeh@186
|
415 set_pkg_path()
|
gokhlayeh@186
|
416 {
|
slaxemulator@269
|
417 if [ -d $WOK/${WANTED:-$PACKAGE}/install ] ; then
|
gokhlayeh@186
|
418 _pkg=$WOK/${WANTED:-$PACKAGE}/install
|
gokhlayeh@186
|
419 else
|
pankso@7
|
420 _pkg=$src/_pkg
|
pankso@7
|
421 fi
|
pankso@7
|
422 }
|
pankso@7
|
423
|
gokhlayeh@186
|
424 # Output $VERSION-$EXTRAVERSION using packages.txt
|
gokhlayeh@186
|
425 get_pkg_version()
|
gokhlayeh@186
|
426 {
|
gokhlayeh@186
|
427 [ "$PACKAGE" ] || return
|
gokhlayeh@204
|
428 grep -m1 -A1 -sh ^$PACKAGE$ $1/packages.txt | tail -1 | sed 's/ *//'
|
gokhlayeh@186
|
429 }
|
erjo@38
|
430
|
gokhlayeh@186
|
431 remove_previous_package()
|
pankso@18
|
432 {
|
gokhlayeh@186
|
433 [ "$prev_VERSION" ] || return
|
gokhlayeh@186
|
434 if [ "$VERSION$EXTRAVERSION" != "$prev_VERSION" ]; then
|
gokhlayeh@186
|
435 rm -f $1/$PACKAGE-$prev_VERSION.tazpkg
|
gokhlayeh@186
|
436 fi
|
gokhlayeh@382
|
437 return 0
|
gokhlayeh@186
|
438 }
|
gokhlayeh@186
|
439
|
gokhlayeh@186
|
440 # Check for src tarball and wget if needed.
|
gokhlayeh@186
|
441 check_for_tarball()
|
gokhlayeh@186
|
442 {
|
gokhlayeh@258
|
443 [ "$WGET_URL" ] || return 0
|
gokhlayeh@486
|
444 [ "$WANTED" ] && return 0
|
gokhlayeh@482
|
445 report step "Checking for source tarball: $PACKAGE"
|
gokhlayeh@482
|
446 local repack_src=$repack_src TARBALL=$TARBALL local nounpack=$nounpack
|
gokhlayeh@364
|
447 look_for_cookopt !unpack && nounpack=yes
|
gokhlayeh@266
|
448 if [ "$repack_src" = yes ] && look_for_cookopt !repack_src; then
|
gokhlayeh@266
|
449 repack_src=no
|
gokhlayeh@266
|
450 fi
|
gokhlayeh@266
|
451 if [ "$target" ]; then
|
gokhlayeh@266
|
452 src="$target"
|
gokhlayeh@266
|
453 else
|
gokhlayeh@266
|
454 set_src_path
|
gokhlayeh@266
|
455 fi
|
gokhlayeh@266
|
456 tmp_src=$tmp/tarball-$$
|
gokhlayeh@253
|
457 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \
|
gokhlayeh@253
|
458 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] ; then
|
gokhlayeh@253
|
459 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
460 if [ "$SOURCE" ]; then
|
gokhlayeh@266
|
461 alt_url="http://mirror.slitaz.org/sources/packages/${SOURCE:0:1}/$SOURCE-$VERSION.tar.lzma"
|
gokhlayeh@266
|
462 else
|
gokhlayeh@266
|
463 alt_url="http://mirror.slitaz.org/sources/packages/${PACKAGE:0:1}/$PACKAGE-$VERSION.tar.lzma"
|
pankso@18
|
464 fi
|
gokhlayeh@420
|
465 download $WGET_URL $alt_url http://mirror.slitaz.org/sources/packages/${TARBALL:0:1}/$TARBALL
|
gokhlayeh@266
|
466 unset alt_url
|
gokhlayeh@253
|
467 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ] && \
|
gokhlayeh@266
|
468 [ ! -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && \
|
gokhlayeh@266
|
469 [ ! -d $tmp_src ]; then
|
gokhlayeh@253
|
470 echo -e "\nDownload failed, exiting. Please check WGET_URL variable.\n" >&2
|
gokhlayeh@253
|
471 report end-step
|
gokhlayeh@253
|
472 return 1
|
gokhlayeh@253
|
473 fi
|
slaxemulator@232
|
474 fi
|
gokhlayeh@253
|
475 report end-step
|
gokhlayeh@364
|
476 if { [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && [ "$nounpack" ] ; } || \
|
gokhlayeh@364
|
477 { [ -f "$SOURCES_REPOSITORY/$TARBALL" ] && [ "$repack_src" != yes ] && [ "$nounpack" ] ; }; then
|
gokhlayeh@266
|
478 [ -d "$tmp_src" ] && rm -r $tmp_src
|
gokhlayeh@364
|
479 return 0
|
slaxemulator@232
|
480 fi
|
slaxemulator@232
|
481
|
slaxemulator@232
|
482 report step "Untaring source tarball"
|
slaxemulator@232
|
483
|
slaxemulator@232
|
484 # Log process.
|
slaxemulator@232
|
485 echo "untaring source tarball" >> $LOG
|
gokhlayeh@266
|
486
|
paul@430
|
487 # If $tmp_src exists, there's already a unpacked tarball in it.
|
gokhlayeh@266
|
488 if ! [ -d $tmp_src ]; then
|
gokhlayeh@266
|
489 mkdir $tmp_src
|
gokhlayeh@266
|
490 if [ -f "$SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" ] && [ "$repack_src" = yes ]; then
|
gokhlayeh@266
|
491 lzma d $SOURCES_REPOSITORY/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma -so | \
|
gokhlayeh@266
|
492 tar xf - -C $tmp_src
|
gokhlayeh@266
|
493 repack_src=no
|
gokhlayeh@266
|
494 TARBALL=${SOURCE:-$PACKAGE}-$VERSION.tar.lzma
|
gokhlayeh@266
|
495 elif [ -f "$SOURCES_REPOSITORY/$TARBALL" ]; then
|
gokhlayeh@266
|
496 case "$TARBALL" in
|
gokhlayeh@266
|
497 *zip|*xpi) cd $tmp_src && unzip -o $SOURCES_REPOSITORY/$TARBALL ;;
|
gokhlayeh@266
|
498 *bz2|*tbz|*gem) tar xjf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
499 *tar) tar xf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
500 *lzma|*lz) unlzma -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
501 *xz) unxz -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
502 *Z|*taz) uncompress -c $SOURCES_REPOSITORY/$TARBALL | tar xf - -C $tmp_src;;
|
gokhlayeh@266
|
503 *gz) tar xzf $SOURCES_REPOSITORY/$TARBALL -C $tmp_src;;
|
gokhlayeh@266
|
504 *rpm) cd $tmp_src && rpm2cpio $SOURCES_REPOSITORY/$TARBALL | cpio -idm --quiet;;
|
gokhlayeh@266
|
505
|
gokhlayeh@266
|
506 # It's a plain file or something receipt unpack itself.
|
gokhlayeh@266
|
507 *)
|
gokhlayeh@266
|
508 mkdir $tmp_src/${SOURCE:-$PACKAGE}-$VERSION
|
gokhlayeh@266
|
509 cp $SOURCES_REPOSITORY/$TARBALL $tmp_src/${src##*/}
|
gokhlayeh@266
|
510 ;;
|
gokhlayeh@266
|
511
|
gokhlayeh@271
|
512 esac || { report end-step
|
gokhlayeh@271
|
513 rm -f $SOURCES_REPOSITORY/$TARBALL
|
gokhlayeh@271
|
514 rm -r $tmp_src
|
gokhlayeh@271
|
515 return 1
|
gokhlayeh@271
|
516 }
|
gokhlayeh@266
|
517 fi
|
gokhlayeh@266
|
518
|
slaxemulator@232
|
519 # Check if uncompressed tarball is in a root dir or not.
|
gokhlayeh@266
|
520 if [ "$(ls -A $tmp_src | wc -l)" -gt 1 ] || [ -f $(echo $tmp_src/*) ]; then
|
slaxemulator@232
|
521 if check_for_var_modification src _pkg; then
|
slaxemulator@232
|
522 mv $tmp_src $tmp_src-1
|
slaxemulator@232
|
523 mkdir $tmp_src
|
gokhlayeh@233
|
524 mv $tmp_src-1 $tmp_src/${SOURCE:-$PACKAGE}-$VERSION
|
slaxemulator@232
|
525 else
|
slaxemulator@232
|
526 mv $tmp_src/* $WOK/$PACKAGE
|
slaxemulator@232
|
527 repack_src=no
|
slaxemulator@232
|
528 rm -r $tmp_src
|
paul@430
|
529 tazwok_warning "Putting all files in $WOK/$PACKAGE; not sure about how to handle this tarball (no root dir)... Please try to remove src/_pkg definition from the receipt if you encounter any problems."
|
pankso@18
|
530 fi
|
slaxemulator@232
|
531 fi
|
gokhlayeh@266
|
532 fi
|
gokhlayeh@266
|
533
|
gokhlayeh@266
|
534 if [ "$repack_src" = yes ]; then
|
slaxemulator@232
|
535 report step "Repacking sources in .tar.lzma format"
|
gokhlayeh@266
|
536 [ "$TARBALL" ] && rm -f $SOURCES_REPOSITORY/$TARBALL
|
gokhlayeh@266
|
537 TARBALL=${SOURCE:-$PACKAGE}-$VERSION.tar.lzma
|
slaxemulator@232
|
538 cd $tmp_src
|
gokhlayeh@266
|
539 tar -c * | lzma e $SOURCES_REPOSITORY/$TARBALL -si
|
gokhlayeh@266
|
540 fi
|
slaxemulator@232
|
541
|
gokhlayeh@266
|
542 # Remove previous tarball if no other package needs it. We take care to
|
paul@430
|
543 # keep tarball if the same package uses it in the main repository.
|
gokhlayeh@266
|
544 if [ "$TARBALL" ]; then
|
gokhlayeh@266
|
545 previous_tarball=$(grep ^$PACKAGE:incoming $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
546 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
547 sed "/^$PACKAGE:incoming/ s/.*/$PACKAGE:incoming\t$TARBALL/" \
|
gokhlayeh@266
|
548 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
549 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
550 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
551 else
|
gokhlayeh@266
|
552 echo -e "$PACKAGE:incoming\t$TARBALL" >> $SOURCES_REPOSITORY/sources.list
|
slaxemulator@232
|
553 fi
|
slaxemulator@232
|
554 fi
|
gokhlayeh@266
|
555
|
slaxemulator@232
|
556 if [ "$nounpack" ]; then
|
slaxemulator@232
|
557 [ -d "$tmp_src" ] && rm -r $tmp_src
|
gokhlayeh@285
|
558 report end-step
|
slaxemulator@232
|
559 return
|
slaxemulator@232
|
560 fi
|
gokhlayeh@285
|
561 if [ ! -d "$src" ]|| [ "$target" ]; then
|
gokhlayeh@285
|
562 # Permissions settings.
|
gokhlayeh@285
|
563 chown -R root.root "$tmp_src"
|
gokhlayeh@285
|
564 if [ -d "$src" ]; then
|
gokhlayeh@285
|
565 mkdir -p $src
|
gokhlayeh@285
|
566 for f in $tmp_src/*/*; do
|
gokhlayeh@285
|
567 cp -a $f $src || { report end-step; rm -r $tmp_src; return 1; }
|
gokhlayeh@285
|
568 done
|
gokhlayeh@285
|
569 else
|
gokhlayeh@285
|
570 if ! check_for_var_modification src _pkg && ! [ "$target" ]; then
|
gokhlayeh@285
|
571 src="${src%/*}/$(ls $tmp_src)"
|
gokhlayeh@285
|
572 fi
|
gokhlayeh@285
|
573 mv $(echo $tmp_src/*) "$src" || { report end-step; rm -r $tmp_src; return 1; }
|
gokhlayeh@186
|
574 fi
|
gokhlayeh@266
|
575 rm -r $tmp_src
|
gokhlayeh@266
|
576 else
|
gokhlayeh@266
|
577 [ -d "$tmp_src" ] && rm -r $tmp_src
|
gokhlayeh@266
|
578 echo "There's already something at $src. Abort." >&2
|
gokhlayeh@186
|
579 fi
|
gokhlayeh@285
|
580 report end-step
|
gokhlayeh@186
|
581 }
|
gokhlayeh@186
|
582
|
slaxemulator@456
|
583 # help gen sources.list file from scranch
|
slaxemulator@456
|
584 gen_sources_list()
|
slaxemulator@456
|
585 {
|
slaxemulator@456
|
586 local src_repository=$1
|
slaxemulator@456
|
587 [ -f $src_repository/sources.list ] && rm -f $src_repository/sources.list
|
slaxemulator@456
|
588 for i in $WOK/*; do
|
slaxemulator@456
|
589 unset PACKAGE SOURCE VERSION WGET_URL TARBALL WANTED
|
slaxemulator@456
|
590 [ -f $i/receipt ] && source $i/receipt
|
slaxemulator@456
|
591 [ "$WGET_URL" ] || continue
|
slaxemulator@456
|
592 if grep -q "^$PACKAGE | $VERSION" $PACKAGES_REPOSITORY/packages.desc; then
|
slaxemulator@456
|
593 main_version="$VERSION"
|
slaxemulator@456
|
594 if [ -f $src_repository/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma ]; then
|
slaxemulator@456
|
595 echo -e "$PACKAGE:main\t${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" >> $src_repository/sources.list
|
slaxemulator@456
|
596 elif [ -f "$src_repository/$TARBALL" ]; then
|
slaxemulator@456
|
597 echo -e "$PACKAGE:main\t$TARBALL" >> $src_repository/sources.list
|
slaxemulator@456
|
598 fi
|
slaxemulator@456
|
599 else
|
slaxemulator@456
|
600 # May not works if package use extraversion.
|
slaxemulator@456
|
601 main_version=$(grep -m1 -A1 -sh ^$PACKAGE$ $PACKAGES_REPOSITORY/packages.txt | tail -1 | sed 's/ *//')
|
slaxemulator@456
|
602 if [ -f $src_repository/${SOURCE:-$PACKAGE}-$main_version.tar.lzma ]; then
|
slaxemulator@456
|
603 echo -e "$PACKAGE:main\t${SOURCE:-$PACKAGE}-$main_version.tar.lzma" >> $src_repository/sources.list
|
slaxemulator@456
|
604 else
|
slaxemulator@456
|
605 unset main_version
|
slaxemulator@456
|
606 fi
|
slaxemulator@456
|
607 fi
|
slaxemulator@457
|
608 if [ ! "$main_version" ] || [ $(grep -q "^$PACKAGE | $VERSION" $INCOMING_REPOSITORY/packages.desc 2>/dev/null) ]; then
|
slaxemulator@456
|
609 if [ -f $src_repository/${SOURCE:-$PACKAGE}-$VERSION.tar.lzma ]; then
|
slaxemulator@456
|
610 echo -e "$PACKAGE:incoming\t${SOURCE:-$PACKAGE}-$VERSION.tar.lzma" >> $src_repository/sources.list
|
slaxemulator@456
|
611 elif [ -f "$src_repository/$TARBALL" ]; then
|
slaxemulator@456
|
612 echo -e "$PACKAGE:incoming\t$TARBALL" >> $src_repository/sources.list
|
slaxemulator@456
|
613 fi
|
slaxemulator@456
|
614 fi
|
slaxemulator@456
|
615 done
|
slaxemulator@456
|
616 }
|
slaxemulator@456
|
617
|
gokhlayeh@186
|
618 # Log and execute compile_rules function if it exists, to configure and
|
gokhlayeh@186
|
619 # make the package if it exists.
|
gokhlayeh@186
|
620 check_for_compile_rules()
|
gokhlayeh@186
|
621 {
|
gokhlayeh@186
|
622 if grep -q ^compile_rules $RECEIPT; then
|
gokhlayeh@186
|
623 echo "executing compile_rules" >> $LOG
|
gokhlayeh@186
|
624 report step "Executing compile_rules"
|
gokhlayeh@186
|
625 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
626 rm -f /tmp/config.site
|
pascal@385
|
627 ulimit -d unlimited
|
pascal@385
|
628 ulimit -m unlimited
|
gokhlayeh@186
|
629
|
gokhlayeh@186
|
630 # Free some RAM by cleaning cache if option is enabled.
|
slaxemulator@200
|
631 freeram=$(free | fgrep '/+ buffers' | tr -s ' ' | cut -f 4 -d ' ')
|
gokhlayeh@186
|
632
|
gokhlayeh@186
|
633 # Disable -pipe in CFLAGS/CXXFLAGS if less than 512Mb of free
|
gokhlayeh@186
|
634 # RAM are available.
|
gokhlayeh@195
|
635 if [ "$freeram" -lt 524288 ] && [ "$CFLAGS" != "${CFLAGS/-pipe}" -o \
|
gokhlayeh@195
|
636 "$CXXFLAGS" != "${CXXFLAGS/-pipe}" ]; then
|
paul@430
|
637 tazwok_warning "Disabling -pipe compile flag because only ${freeram}b of RAM is available."
|
gokhlayeh@186
|
638 CFLAGS="${CFLAGS/-pipe}"
|
gokhlayeh@186
|
639 CXXFLAGS="${CXXFLAGS/-pipe}"
|
gokhlayeh@186
|
640 fi
|
gokhlayeh@186
|
641 unset freeram
|
gokhlayeh@186
|
642
|
paul@430
|
643 # Set cook environement variables.
|
gokhlayeh@186
|
644 [ "$src" ] || set_src_path
|
gokhlayeh@186
|
645 [ "$DESTDIR" ] || DESTDIR="$WOK/$PACKAGE/install"
|
gokhlayeh@186
|
646 [ "$CONFIG_SITE" ] || CONFIG_SITE=/etc/config.site
|
gokhlayeh@469
|
647 export CFLAGS=$(echo "$CFLAGS" | tr -s ' ') \
|
gokhlayeh@469
|
648 CXXFLAGS=$(echo "$CXXFLAGS" | tr -s ' ') \
|
gokhlayeh@469
|
649 MAKEFLAGS DESTDIR BUILD_HOST CONFIG_SITE default_prefix \
|
gokhlayeh@186
|
650 default_datarootdir default_datadir default_localedir \
|
gokhlayeh@186
|
651 default_infodir default_mandir default_build default_host
|
gokhlayeh@186
|
652 local LC_ALL=POSIX LANG=POSIX
|
gokhlayeh@186
|
653 compile_rules
|
gokhlayeh@186
|
654
|
gokhlayeh@186
|
655 # Check if config.site has been used.
|
paul@430
|
656 # /!\ disabled since it screws the return_code of the step.
|
gokhlayeh@186
|
657 #if [ -f /tmp/config.site ]; then
|
gokhlayeh@186
|
658 # rm /tmp/config.site
|
gokhlayeh@186
|
659 #else
|
gokhlayeh@186
|
660 # tazwok_warning "config.site hasn't been used during \
|
paul@430
|
661 #the configuration process."
|
gokhlayeh@186
|
662 #fi
|
gokhlayeh@186
|
663 report end-step
|
pankso@18
|
664 fi
|
pankso@18
|
665 }
|
pascal@76
|
666
|
paul@430
|
667 # Check for loop in deps tree. /!\ can be removed.
|
pascal@76
|
668 check_for_deps_loop()
|
pascal@76
|
669 {
|
pascal@76
|
670 local list
|
pascal@76
|
671 local pkg
|
pascal@76
|
672 local deps
|
pascal@76
|
673 pkg=$1
|
pascal@76
|
674 shift
|
pascal@76
|
675 [ -n "$1" ] || return
|
pascal@76
|
676 list=""
|
gokhlayeh@204
|
677
|
paul@430
|
678 # Filter out already processed deps.
|
pascal@76
|
679 for i in $@; do
|
pascal@76
|
680 case " $ALL_DEPS" in
|
pascal@76
|
681 *\ $i\ *);;
|
pascal@76
|
682 *) list="$list $i";;
|
pascal@76
|
683 esac
|
pascal@76
|
684 done
|
pascal@76
|
685 ALL_DEPS="$ALL_DEPS$list "
|
pascal@76
|
686 for i in $list; do
|
pascal@76
|
687 [ -f $i/receipt ] || continue
|
pascal@76
|
688 deps="$(DEPENDS=""; . $i/receipt; echo $DEPENDS)"
|
pascal@76
|
689 case " $deps " in
|
pascal@76
|
690 *\ $pkg\ *) echo -e "$MSG $i"; MSG="";;
|
pascal@76
|
691 *) check_for_deps_loop $pkg $deps;;
|
pascal@76
|
692 esac
|
pascal@76
|
693 done
|
pascal@76
|
694 }
|
pascal@76
|
695
|
gokhlayeh@266
|
696 # Function used by download().
|
gokhlayeh@266
|
697 revert_vcs_failure()
|
gokhlayeh@266
|
698 {
|
gokhlayeh@266
|
699 cd $SOURCES_REPOSITORY
|
gokhlayeh@266
|
700 rm -r $tmp_src
|
gokhlayeh@266
|
701 }
|
gokhlayeh@266
|
702
|
erjo@53
|
703 download()
|
erjo@53
|
704 {
|
gokhlayeh@278
|
705 if [ "$COMMAND" = get-src ]; then
|
gokhlayeh@278
|
706 if [ "${DEPENDS/tar}" != "$DEPENDS" ] || [ "${BUILD_DEPENDS/tar}" != "$BUILD_DEPENDS" ]; then
|
slaxemulator@287
|
707 [ -f $INSTALLED/tar/receipt ] || tazpkg get-install tar --forced
|
pankso@7
|
708 fi
|
pankso@7
|
709 fi
|
pascal@178
|
710 for file in $@; do
|
gokhlayeh@266
|
711 echo "Downloading from ${file#*|}..."
|
gokhlayeh@255
|
712 case "$file" in
|
gokhlayeh@266
|
713 git\|*)
|
gokhlayeh@266
|
714 file=${file#git|}
|
gokhlayeh@278
|
715 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/git/receipt ] && tazpkg get-install git --forced
|
slaxemulator@274
|
716 if [ -f $INSTALLED/git/receipt ]; then
|
gokhlayeh@266
|
717 mkdir $tmp_src
|
gokhlayeh@266
|
718 cd $tmp_src
|
gokhlayeh@266
|
719 if [ "$BRANCH" ]; then
|
slaxemulator@426
|
720 git clone $file ${src##*/} && cd ${src##*/} && \
|
gokhlayeh@266
|
721 git checkout $BRANCH && rm -rf .git* && break
|
gokhlayeh@266
|
722 else
|
gokhlayeh@266
|
723 git clone $file ${src##*/} && rm -rf ${src##*/}/.git* && break
|
gokhlayeh@266
|
724 fi
|
gokhlayeh@266
|
725 revert_vcs_failure
|
gokhlayeh@266
|
726 else
|
paul@430
|
727 tazwok_warning "Needs git to download the source tarball from $file, please add it as a build-depend."
|
gokhlayeh@266
|
728 continue
|
gokhlayeh@266
|
729 fi
|
gokhlayeh@266
|
730 ;;
|
slaxemulator@426
|
731 bazaar\|*)
|
slaxemulator@426
|
732 file=${file#bazaar|}
|
slaxemulator@426
|
733 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/bazaar/receipt ] && tazpkg get-install bazaar --forced
|
slaxemulator@426
|
734 if [ -f $INSTALLED/bazaar/receipt ]; then
|
slaxemulator@426
|
735 mkdir $tmp_src
|
slaxemulator@426
|
736 cd $tmp_src
|
slaxemulator@426
|
737 if [ "$BRANCH" ]; then
|
slaxemulator@426
|
738 bzr co $file -r $BRANCH ${src##*/} && rm -rf ${src##*/}/.bzr* && break
|
slaxemulator@426
|
739 else
|
slaxemulator@426
|
740 bzr co $file ${src##*/} && rm -rf ${src##*/}/.bzr* && break
|
slaxemulator@426
|
741 fi
|
slaxemulator@426
|
742 revert_vcs_failure
|
slaxemulator@426
|
743 else
|
paul@430
|
744 tazwok_warning "Needs bazaar to download the source tarball from $file, please add it as a build-depend."
|
slaxemulator@426
|
745 continue
|
slaxemulator@426
|
746 fi
|
slaxemulator@426
|
747 ;;
|
gokhlayeh@266
|
748 subversion\|*)
|
gokhlayeh@266
|
749 file=${file#subversion|}
|
gokhlayeh@278
|
750 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/subversion/receipt ] && tazpkg get-install subversion --forced
|
slaxemulator@274
|
751 if [ -f $INSTALLED/subversion/receipt ]; then
|
gokhlayeh@266
|
752 mkdir $tmp_src
|
gokhlayeh@266
|
753 cd $tmp_src
|
gokhlayeh@266
|
754 if [ "$BRANCH" ]; then
|
gokhlayeh@266
|
755 echo t | svn co $file -r $BRANCH ${src##*/} && rm -rf ${src##*/}/.svn* && break
|
gokhlayeh@266
|
756 else
|
gokhlayeh@266
|
757 echo t | svn co $file ${src##*/} && rm -rf ${src##*/}/.svn* && break
|
gokhlayeh@266
|
758 fi
|
gokhlayeh@266
|
759 revert_vcs_failure
|
gokhlayeh@266
|
760 else
|
paul@430
|
761 tazwok_warning "Needs subversion to download the source tarball from $file, please add it as a build-depend."
|
gokhlayeh@266
|
762 continue
|
gokhlayeh@266
|
763 fi
|
gokhlayeh@266
|
764 ;;
|
gokhlayeh@266
|
765 mercurial\|*)
|
gokhlayeh@266
|
766 file=${file#mercurial|}
|
gokhlayeh@278
|
767 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/mercurial/receipt ] && tazpkg get-install mercurial --forced
|
slaxemulator@274
|
768 if [ -f $INSTALLED/mercurial/receipt ]; then
|
gokhlayeh@266
|
769 mkdir $tmp_src
|
gokhlayeh@266
|
770 cd $tmp_src
|
gokhlayeh@266
|
771 if [ "$BRANCH" ]; then
|
gokhlayeh@266
|
772 hg clone $file --rev $BRANCH ${src##*/} && rm -rf ${src##*/}/.hg* && break
|
gokhlayeh@266
|
773 else
|
gokhlayeh@266
|
774 hg clone $file ${src##*/} && rm -rf ${src##*/}/.hg* && break
|
gokhlayeh@266
|
775 fi
|
gokhlayeh@266
|
776 revert_vcs_failure
|
gokhlayeh@266
|
777 else
|
paul@430
|
778 tazwok_warning "Needs mercurial to download the source tarball from $file, please add it as a build-depend."
|
gokhlayeh@266
|
779 continue
|
gokhlayeh@266
|
780 fi
|
gokhlayeh@266
|
781 ;;
|
gokhlayeh@266
|
782 https*)
|
gokhlayeh@278
|
783 [ "$COMMAND" = get-src ] && [ ! -f $INSTALLED/wget/receipt ] && tazpkg get-install wget --forced
|
gokhlayeh@255
|
784 if [ -d $INSTALLED/wget ]; then
|
gokhlayeh@266
|
785 if [ "${WGET_URL%$TARBALL}" = "$WGET_URL" ] && [ "$file" = "$WGET_URL" ]; then
|
gokhlayeh@266
|
786 wget -q --no-check-certificate -O $TARBALL $file && break
|
gokhlayeh@266
|
787 else
|
gokhlayeh@290
|
788 wget -q --no-check-certificate $file && break
|
gokhlayeh@266
|
789 fi
|
gokhlayeh@255
|
790 else
|
paul@430
|
791 tazwok_warning "Needs wget to download the source tarball from $file, please add it as a build-depend."
|
gokhlayeh@266
|
792 continue
|
gokhlayeh@255
|
793 fi
|
gokhlayeh@266
|
794 ;;
|
gokhlayeh@266
|
795 http*|ftp*)
|
gokhlayeh@266
|
796 # Handle crappy URL.
|
gokhlayeh@278
|
797 if [ "$COMMAND" = get-src ]; then
|
gokhlayeh@278
|
798 if [ "${DEPENDS/wget}" != "$DEPENDS" ] || [ "${BUILD_DEPENDS/wget}" != "$BUILD_DEPENDS" ]; then
|
gokhlayeh@278
|
799 [ -f $INSALLED/wget/receipt ] || tazpkg get-install wget --forced
|
gokhlayeh@278
|
800 fi
|
gokhlayeh@278
|
801 fi
|
gokhlayeh@266
|
802 if [ "${WGET_URL%$TARBALL}" = "$WGET_URL" ] && [ "$file" = "$WGET_URL" ]; then
|
gokhlayeh@266
|
803 wget -q -O $TARBALL $file && break
|
gokhlayeh@266
|
804 else
|
gokhlayeh@266
|
805 wget -q $file && break
|
gokhlayeh@266
|
806 fi
|
gokhlayeh@266
|
807 ;;
|
gokhlayeh@255
|
808 esac
|
pascal@178
|
809 done
|
pankso@7
|
810 }
|
pankso@7
|
811
|
paul@430
|
812 # Regenerate every package that wants a PACKAGE compiled.
|
pascal@156
|
813 refresh_packages_from_compile()
|
pascal@156
|
814 {
|
paul@430
|
815 # make tazwok genpkg happy.
|
pascal@156
|
816 mkdir $WOK/$PACKAGE/taz
|
gokhlayeh@204
|
817
|
paul@430
|
818 # Cook rwanted in default or specied order.
|
gokhlayeh@186
|
819 genlist=" $(look_for_rwanted | tr '\n' ' ') "
|
gokhlayeh@186
|
820 for i in $(look_for_cookopt genpkg | tac); do
|
gokhlayeh@186
|
821 [ "${genlist/ $i }" = "$genlist" ] && continue
|
gokhlayeh@186
|
822 genlist=" $i${genlist/ $i / }"
|
pascal@156
|
823 done
|
gokhlayeh@215
|
824 if [ "$genlist" ]; then
|
gokhlayeh@215
|
825 local PACKAGE SOURCE VERSION EXTRAVERSION CATEGORY SHORT_DESC \
|
gokhlayeh@215
|
826 MAINTAINER WEB_SITE WGET_URL DEPENDS BUILD_DEPENDS WANTED \
|
gokhlayeh@215
|
827 PACKED_SIZE UNPACKED_SIZE COOK_OPT PROVIDE CONFIG_FILES TAGS \
|
gokhlayeh@298
|
828 src _pkg DESTDIR CONFIG_SITE RECEIPT LOG stuff wanted_stuff
|
gokhlayeh@215
|
829 for PACKAGE in $genlist; do
|
gokhlayeh@215
|
830 set_common_path
|
gokhlayeh@215
|
831 gen_package
|
gokhlayeh@215
|
832 done
|
gokhlayeh@215
|
833 fi
|
pascal@156
|
834 }
|
pascal@156
|
835
|
MikeDSmith25@82
|
836 # Copy all generic files (locale, pixmaps, .desktop). We use standard paths,
|
pankso@22
|
837 # so some packages need to copy these files with the receipt and genpkg_rules.
|
pankso@22
|
838 # This function is executed by gen_package when 'tazwok genpkg'.
|
pankso@22
|
839 copy_generic_files()
|
pankso@22
|
840 {
|
MikeDSmith25@82
|
841 # In most cases, locales are in $_pkg/usr/share/locale so we copy files
|
pankso@22
|
842 # using generic variables and $LOCALE from Tazwok config file.
|
gokhlayeh@186
|
843 if [ "$LOCALE" ]; then
|
pankso@22
|
844 if [ -d "$_pkg/usr/share/locale" ]; then
|
pankso@22
|
845 for i in $LOCALE
|
pankso@22
|
846 do
|
pankso@37
|
847 if [ -d "$_pkg/usr/share/locale/$i" ]; then
|
pankso@37
|
848 mkdir -p $fs/usr/share/locale
|
pankso@37
|
849 cp -a $_pkg/usr/share/locale/$i $fs/usr/share/locale
|
pankso@37
|
850 fi
|
pankso@22
|
851 done
|
pankso@22
|
852 fi
|
pankso@22
|
853 fi
|
gokhlayeh@186
|
854
|
pankso@133
|
855 # Pixmaps (PNG or/and XPM only). Some icons/images can be added through
|
MikeDSmith25@82
|
856 # genpkg_rules and generic copy can be disabled with GENERIC_PIXMAPS="no"
|
pankso@31
|
857 # in pkg receipt.
|
gokhlayeh@186
|
858 if [ "$GENERIC_PIXMAPS" != "no" ]; then
|
pankso@22
|
859 if [ -d "$_pkg/usr/share/pixmaps" ]; then
|
pankso@27
|
860 mkdir -p $fs/usr/share/pixmaps
|
pankso@31
|
861 cp -a $_pkg/usr/share/pixmaps/$PACKAGE.png \
|
pankso@31
|
862 $fs/usr/share/pixmaps 2>/dev/null
|
pankso@31
|
863 cp -a $_pkg/usr/share/pixmaps/$PACKAGE.xpm \
|
pankso@22
|
864 $fs/usr/share/pixmaps 2>/dev/null
|
pankso@23
|
865 fi
|
gokhlayeh@186
|
866
|
MikeDSmith25@82
|
867 # Custom or homemade PNG pixmap can be in stuff.
|
pankso@23
|
868 if [ -f "stuff/$PACKAGE.png" ]; then
|
pankso@27
|
869 mkdir -p $fs/usr/share/pixmaps
|
pankso@23
|
870 cp -a stuff/$PACKAGE.png $fs/usr/share/pixmaps
|
pankso@22
|
871 fi
|
pankso@22
|
872 fi
|
gokhlayeh@186
|
873
|
pankso@22
|
874 # Desktop entry (.desktop).
|
pankso@22
|
875 if [ -d "$_pkg/usr/share/applications" ]; then
|
pankso@22
|
876 cp -a $_pkg/usr/share/applications $fs/usr/share
|
pankso@23
|
877 fi
|
gokhlayeh@186
|
878
|
MikeDSmith25@82
|
879 # Homemade desktop file(s) can be in stuff.
|
pankso@34
|
880 if [ -d "stuff/applications" ]; then
|
pankso@42
|
881 mkdir -p $fs/usr/share
|
pankso@42
|
882 cp -a stuff/applications $fs/usr/share
|
pankso@34
|
883 fi
|
pankso@34
|
884 if [ -f "stuff/$PACKAGE.desktop" ]; then
|
pankso@42
|
885 mkdir -p $fs/usr/share/applications
|
pankso@42
|
886 cp -a stuff/$PACKAGE.desktop $fs/usr/share/applications
|
pankso@22
|
887 fi
|
pankso@22
|
888 }
|
pankso@22
|
889
|
pankso@25
|
890 # Find and strip : --strip-all (-s) or --strip-debug on static libs.
|
pankso@25
|
891 strip_package()
|
pankso@25
|
892 {
|
gokhlayeh@186
|
893 report step "Executing strip on all files"
|
gokhlayeh@186
|
894
|
pankso@25
|
895 # Binaries.
|
pankso@25
|
896 for dir in $fs/bin $fs/sbin $fs/usr/bin $fs/usr/sbin $fs/usr/games
|
pankso@25
|
897 do
|
pankso@25
|
898 if [ -d "$dir" ]; then
|
pankso@25
|
899 find $dir -type f -exec strip -s '{}' 2>/dev/null \;
|
pankso@25
|
900 fi
|
pankso@25
|
901 done
|
gokhlayeh@186
|
902
|
pankso@25
|
903 # Libraries.
|
pankso@25
|
904 find $fs -name "*.so*" -exec strip -s '{}' 2>/dev/null \;
|
pankso@25
|
905 find $fs -name "*.a" -exec strip --strip-debug '{}' 2>/dev/null \;
|
gokhlayeh@186
|
906 report end-step
|
pankso@25
|
907 }
|
pankso@25
|
908
|
slaxemulator@499
|
909 # Remove .pyc, .pyo and perllocal.pod files from packages.
|
slaxemulator@183
|
910 py_compiled_files_remove()
|
slaxemulator@183
|
911 {
|
slaxemulator@499
|
912 report step "Removing all .pyc, .pyo, and perllocal.pod files from package"
|
slaxemulator@183
|
913 find $fs -type f -name "*.pyc" -delete 2>/dev/null
|
slaxemulator@183
|
914 find $fs -type f -name "*.pyo" -delete 2>/dev/null
|
slaxemulator@499
|
915 find $fs -type f -name "perllocal.pod" -delete 2>/dev/null
|
gokhlayeh@186
|
916 report end-step
|
slaxemulator@183
|
917 }
|
slaxemulator@183
|
918
|
pankso@135
|
919 # Check FSH in a slitaz package (Path: /:/usr)
|
pankso@135
|
920 check_fsh()
|
pankso@135
|
921 {
|
pankso@135
|
922 cd $WOK/$PACKAGE/taz/*/fs
|
pascal@428
|
923 if [ -z "$(find * ! -type d)" ] && [ "$CATEGORY" != meta ]; then
|
gokhlayeh@381
|
924 echo "$PACKAGE fs is empty." >&2
|
gokhlayeh@381
|
925 cd $WOK/$PACKAGE && rm -rf taz
|
gokhlayeh@381
|
926 return 1
|
gokhlayeh@381
|
927 fi
|
pascal@149
|
928 [ -n "$FSH" ] || FSH="bin boot dev etc home init lib media mnt proc \
|
pascal@149
|
929 root sbin share sys tmp usr var vz usr/bin usr/games usr/include usr/lib \
|
pascal@149
|
930 usr/local usr/sbin usr/share usr/src"
|
pascal@455
|
931 error=0
|
pankso@135
|
932 for i in `ls -d * usr/* 2>/dev/null`
|
pankso@135
|
933 do
|
gokhlayeh@195
|
934 if ! echo $FSH | fgrep -q $i; then
|
gokhlayeh@186
|
935 echo "Wrong path: /$i" >&2
|
pankso@135
|
936 error=1
|
pankso@135
|
937 fi
|
pankso@135
|
938 done
|
pankso@135
|
939 if [ "$error" = "1" ]; then
|
pankso@135
|
940 cat << _EOT_
|
pankso@135
|
941
|
paul@155
|
942 Package will install files in a non standard directory and won't be generated.
|
paul@154
|
943 You may have a wrong copy path in genpkg_rules or need to add some options to
|
pankso@135
|
944 configure in compile_rules. Some valid options for SliTaz (Linux FSH):
|
pankso@135
|
945
|
pankso@135
|
946 --prefix=/usr
|
pankso@135
|
947 --sysconfdir=/etc
|
pankso@135
|
948 --libexecdir=/usr/lib/(pkgname)
|
pankso@135
|
949 --localstatedir=/var
|
pankso@135
|
950 --mandir=/usr/share/man
|
pankso@135
|
951 --infodir=/usr/share/info
|
pankso@135
|
952
|
paul@152
|
953 For more information please read SliTaz docs and run: ./configure --help
|
pankso@135
|
954 ================================================================================
|
pankso@135
|
955 $PACKAGE package generation aborted.
|
pankso@135
|
956
|
pankso@135
|
957 _EOT_
|
gokhlayeh@186
|
958
|
pankso@135
|
959 # Dont generate a corrupted package.
|
pankso@137
|
960 cd $WOK/$PACKAGE && rm -rf taz
|
gokhlayeh@381
|
961 return 1
|
pankso@135
|
962 fi
|
gokhlayeh@381
|
963 return 0
|
gokhlayeh@186
|
964 }
|
gokhlayeh@186
|
965
|
gokhlayeh@186
|
966 gen_cookmd5()
|
gokhlayeh@186
|
967 {
|
gokhlayeh@186
|
968 # md5sum of cooking stuff make tazwok able to check for changes
|
gokhlayeh@186
|
969 # without hg.
|
gokhlayeh@186
|
970 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
971 md5sum receipt > md5
|
gokhlayeh@186
|
972 [ -f description.txt ] && md5sum description.txt >> md5
|
gokhlayeh@186
|
973 if [ -d stuff ]; then
|
gokhlayeh@186
|
974 find stuff | while read file; do
|
gokhlayeh@186
|
975 md5sum $file >> md5
|
gokhlayeh@186
|
976 done
|
gokhlayeh@186
|
977 fi
|
pankso@135
|
978 }
|
pankso@135
|
979
|
gokhlayeh@381
|
980 set_pkg_broken()
|
gokhlayeh@381
|
981 {
|
gokhlayeh@381
|
982 if ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/broken; then
|
gokhlayeh@381
|
983 echo $PACKAGE >> $PACKAGES_REPOSITORY/broken
|
gokhlayeh@381
|
984 fi
|
gokhlayeh@381
|
985
|
paul@430
|
986 # Remove pkg from cooklist to avoid re-cook it if no changes happen
|
gokhlayeh@381
|
987 # in the cook stuff.
|
gokhlayeh@381
|
988 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@383
|
989 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/commit
|
gokhlayeh@381
|
990
|
gokhlayeh@381
|
991 gen_cookmd5
|
gokhlayeh@381
|
992
|
paul@430
|
993 # Return 1 to make report know that its mother-function failed.
|
gokhlayeh@381
|
994 return 1
|
gokhlayeh@381
|
995 }
|
gokhlayeh@381
|
996
|
MikeDSmith25@82
|
997 # Create a package tree and build the gziped cpio archive
|
pankso@7
|
998 # to make a SliTaz (.tazpkg) package.
|
pankso@7
|
999 gen_package()
|
pankso@7
|
1000 {
|
pankso@7
|
1001 check_root
|
pankso@7
|
1002 check_for_package_on_cmdline
|
pankso@7
|
1003 check_for_receipt
|
gokhlayeh@381
|
1004 source_receipt
|
gokhlayeh@186
|
1005
|
pascal@86
|
1006 # May compute VERSION
|
pascal@86
|
1007 if grep -q ^get_version $RECEIPT; then
|
pascal@86
|
1008 get_version
|
pascal@86
|
1009 fi
|
pankso@7
|
1010 check_for_wanted
|
pankso@7
|
1011 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1012
|
pankso@7
|
1013 # Remove old Tazwok package files.
|
gokhlayeh@186
|
1014 [ -d "taz" ] && rm -rf taz
|
gokhlayeh@186
|
1015
|
MikeDSmith25@82
|
1016 # Create the package tree and set useful variables.
|
gokhlayeh@266
|
1017 fs=$WOK/$PACKAGE/taz/$PACKAGE-$VERSION/fs
|
gokhlayeh@381
|
1018 mkdir -p $fs
|
gokhlayeh@186
|
1019
|
MikeDSmith25@82
|
1020 # Set $src for standard package and $_pkg variables.
|
gokhlayeh@302
|
1021 set_src_path
|
gokhlayeh@302
|
1022 set_pkg_path
|
gokhlayeh@481
|
1023
|
pankso@135
|
1024 # Execute genpkg_rules, check package and copy generic files to build
|
pankso@135
|
1025 # the package.
|
gokhlayeh@186
|
1026 report step "Building $PACKAGE with the receipt"
|
gokhlayeh@186
|
1027 report open-bloc
|
gokhlayeh@381
|
1028 if look_for_cookopt !fs; then
|
gokhlayeh@381
|
1029 :
|
gokhlayeh@381
|
1030 elif grep -q ^genpkg_rules $RECEIPT; then
|
gokhlayeh@186
|
1031
|
pankso@7
|
1032 # Log process.
|
pankso@7
|
1033 echo "executing genpkg_rules" >> $LOG
|
gokhlayeh@186
|
1034 report step "Executing genpkg_rules"
|
gokhlayeh@381
|
1035 ( set -e; genpkg_rules ) || { set_pkg_broken; report close-bloc; return 1; }
|
gokhlayeh@381
|
1036 check_fsh || { set_pkg_broken; report close-bloc; return 1; }
|
gokhlayeh@381
|
1037 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1038 report end-step
|
gokhlayeh@381
|
1039
|
pankso@133
|
1040 # Skip generic files for packages with a WANTED variable
|
paul@430
|
1041 # (dev and split pkgs).
|
gokhlayeh@186
|
1042 if [ ! "$WANTED" ]; then
|
pankso@24
|
1043 copy_generic_files
|
pankso@24
|
1044 fi
|
gokhlayeh@204
|
1045 look_for_cookopt !strip || strip_package
|
slaxemulator@183
|
1046 py_compiled_files_remove
|
pankso@7
|
1047 else
|
gokhlayeh@186
|
1048 echo "No package rules to gen $PACKAGE..." >&2
|
gokhlayeh@381
|
1049 set_pkg_broken
|
gokhlayeh@381
|
1050 report close-bloc
|
gokhlayeh@381
|
1051 return 1
|
pankso@7
|
1052 fi
|
gokhlayeh@186
|
1053
|
paul@154
|
1054 # Copy the receipt and description (if exists) into the binary package tree.
|
pankso@7
|
1055 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1056 report step "Copying the receipt"
|
pankso@7
|
1057 cp receipt taz/$PACKAGE-$VERSION
|
gokhlayeh@186
|
1058 report end-step
|
pascal@89
|
1059 if grep -q ^get_version $RECEIPT; then
|
gokhlayeh@186
|
1060 report step "Updating version in receipt"
|
pascal@89
|
1061 sed -i "s/^VERSION=.*/VERSION=\"$VERSION\"/" \
|
pascal@89
|
1062 taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
1063 report end-step
|
pascal@89
|
1064 fi
|
pankso@7
|
1065 if [ -f "description.txt" ]; then
|
gokhlayeh@186
|
1066 report step "Copying the description file"
|
pankso@7
|
1067 cp description.txt taz/$PACKAGE-$VERSION
|
gokhlayeh@186
|
1068 report end-step
|
pankso@7
|
1069 fi
|
gokhlayeh@186
|
1070
|
gokhlayeh@186
|
1071 # Generate md5 of cooking stuff to look for commit later.
|
gokhlayeh@186
|
1072 gen_cookmd5
|
gokhlayeh@186
|
1073 echo -e "\n# md5sum of cooking stuff :" >> taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
1074 cat md5 | sed 's/^/# /' >> taz/$PACKAGE-$VERSION/receipt
|
gokhlayeh@186
|
1075
|
MikeDSmith25@82
|
1076 # Create the files.list by redirecting find output.
|
gokhlayeh@186
|
1077 report step "Creating the list of files"
|
pascal@15
|
1078 cd taz/$PACKAGE-$VERSION
|
pascal@13
|
1079 LAST_FILE=""
|
gokhlayeh@195
|
1080 { find fs -print; echo; } | while read file; do
|
gokhlayeh@186
|
1081 if [ "$LAST_FILE" ]; then
|
pascal@15
|
1082 case "$file" in
|
pascal@13
|
1083 $LAST_FILE/*)
|
pankso@133
|
1084 case "$(ls -ld "$LAST_FILE")" in
|
pascal@15
|
1085 drwxr-xr-x\ *\ root\ *\ root\ *);;
|
pascal@15
|
1086 *) echo ${LAST_FILE#fs};;
|
pascal@13
|
1087 esac;;
|
pascal@15
|
1088 *) echo ${LAST_FILE#fs};;
|
pascal@13
|
1089 esac
|
pascal@13
|
1090 fi
|
pascal@15
|
1091 LAST_FILE="$file"
|
pascal@15
|
1092 done > files.list
|
gokhlayeh@186
|
1093
|
gokhlayeh@186
|
1094 # Next, check if something has changed in lib files.
|
gokhlayeh@215
|
1095 if fgrep -q '.so' files.list; then
|
gokhlayeh@215
|
1096 for rep in $INCOMING_REPOSITORY $PACKAGES_REPOSITORY \
|
gokhlayeh@295
|
1097 $([ "$undigest" ] && echo $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming && \
|
gokhlayeh@215
|
1098 echo $SLITAZ_DIR/$SLITAZ_VERSION/packages); do
|
gokhlayeh@215
|
1099 prev_VERSION=$(get_pkg_version $rep)
|
gokhlayeh@215
|
1100 [ "$prev_VERSION" ] && pkg_file=$rep/$PACKAGE-$prev_VERSION.tazpkg && break
|
gokhlayeh@215
|
1101 done
|
gokhlayeh@215
|
1102 if [ "$pkg_file" ]; then
|
paul@430
|
1103 report step "Looking for major/minor updates in libraries"
|
gokhlayeh@215
|
1104 get_pkg_files $pkg_file
|
gokhlayeh@215
|
1105 cd $WOK/$PACKAGE/taz/$PACKAGE-$VERSION
|
gokhlayeh@215
|
1106 fgrep ".so" files.list | egrep -v "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*" | \
|
gokhlayeh@215
|
1107 while read lib; do
|
gokhlayeh@215
|
1108 fgrep -q "$lib" $pkg_files_dir/files.list && continue
|
gokhlayeh@215
|
1109 echo "A minor/major update in libraries is detected, planning re-cook of reverse-depends of $PACKAGE."
|
gokhlayeh@215
|
1110 for rdep in $(scan $PACKAGE --look_for=rdep | use_wanted); do
|
gokhlayeh@215
|
1111 [ "$rdep" = "${WANTED:-$PACKAGE}" ] && continue
|
gokhlayeh@215
|
1112 grep -q ^$rdep$ $PACKAGES_REPOSITORY/blocked \
|
gokhlayeh@215
|
1113 $PACKAGES_REPOSITORY/cooklist && continue
|
gokhlayeh@215
|
1114 echo $rdep >> $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@215
|
1115 done
|
gokhlayeh@215
|
1116 regen_cooklist=yes
|
gokhlayeh@215
|
1117 break
|
gokhlayeh@215
|
1118 done
|
gokhlayeh@215
|
1119 rm -r $pkg_files_dir
|
gokhlayeh@295
|
1120 unset pkg_file
|
gokhlayeh@295
|
1121 report end-step
|
gokhlayeh@295
|
1122 fi
|
gokhlayeh@295
|
1123 fi
|
gokhlayeh@186
|
1124 if [ ! "$EXTRAVERSION" ]; then
|
pascal@84
|
1125 case "$PACKAGE" in
|
pascal@84
|
1126 linux*);;
|
pascal@85
|
1127 *) EXTRAVERSION="$(grep '/lib/modules/.*-slitaz/' files.list |\
|
pascal@84
|
1128 head -1 | sed 's|/lib/modules/\(.*\)-slitaz/.*|_\1|')";;
|
pascal@84
|
1129 esac
|
pascal@84
|
1130 fi
|
gokhlayeh@186
|
1131 rm -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg 2> /dev/null
|
gokhlayeh@186
|
1132 report step "Creating md5sum of files"
|
pascal@70
|
1133 while read file; do
|
pascal@71
|
1134 [ -L "fs$file" ] && continue
|
pascal@71
|
1135 [ -f "fs$file" ] || continue
|
pascal@71
|
1136 md5sum "fs$file" | sed 's/ fs/ /'
|
pascal@70
|
1137 done < files.list > md5sum
|
gokhlayeh@204
|
1138 report end-step
|
pascal@84
|
1139 UNPACKED_SIZE=$(du -chs fs receipt files.list md5sum description.txt \
|
pascal@84
|
1140 2> /dev/null | awk '{ sz=$1 } END { print sz }')
|
gokhlayeh@186
|
1141
|
pankso@7
|
1142 # Build cpio archives. Find, cpio and gzip the fs, finish by
|
pankso@7
|
1143 # removing the fs tree.
|
paul@430
|
1144 # Don't log this because compression always outputs error messages.
|
pascal@150
|
1145 find fs -print | cpio -o -H newc | case "$PACKAGE-$COMPRESSION" in
|
pascal@150
|
1146 tazpkg-lzma) gzip > fs.cpio.gz;;
|
pascal@150
|
1147 *-lzma) lzma e fs.cpio.lzma -si;;
|
pascal@150
|
1148 *) gzip > fs.cpio.gz;;
|
pascal@150
|
1149 esac && rm -rf fs
|
pascal@150
|
1150 PACKED_SIZE=$(du -chs fs.cpio.* receipt files.list md5sum \
|
pascal@84
|
1151 description.txt 2> /dev/null | awk '{ sz=$1 } END { print sz }')
|
gokhlayeh@186
|
1152 report step "Updating receipt sizes"
|
pascal@138
|
1153 sed -i '/^PACKED_SIZE/d' receipt
|
pascal@138
|
1154 sed -i '/^UNPACKED_SIZE/d' receipt
|
pascal@59
|
1155 sed -i "s/^PACKAGE=/PACKED_SIZE=\"$PACKED_SIZE\"\nUNPACKED_SIZE=\"$UNPACKED_SIZE\"\nPACKAGE=/" receipt
|
pascal@86
|
1156 sed -i "s/^VERSION=$/VERSION=\"$VERSION\"/" receipt
|
gokhlayeh@212
|
1157 report end-step
|
gokhlayeh@212
|
1158 if [ "$EXTRAVERSION" ]; then
|
gokhlayeh@186
|
1159 report step "Updating receipt EXTRAVERSION"
|
pascal@72
|
1160 sed -i s/^EXTRAVERSION.*$// receipt
|
pascal@72
|
1161 sed -i "s/^VERSION=/EXTRAVERSION=\"$EXTRAVERSION\"\nVERSION=/" receipt
|
pascal@72
|
1162 fi
|
gokhlayeh@186
|
1163 prev_VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
1164 remove_previous_package $INCOMING_REPOSITORY
|
gokhlayeh@186
|
1165 report step "Creating full cpio archive"
|
gokhlayeh@186
|
1166 find . -print | cpio -o -H newc > $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg
|
gokhlayeh@186
|
1167
|
paul@154
|
1168 # Restore package tree in case we want to browse it.
|
gokhlayeh@186
|
1169 report step "Restoring original package tree"
|
gokhlayeh@195
|
1170 { zcat fs.cpio.gz 2> /dev/null || unlzma -c fs.cpio.lzma; } | cpio --quiet -id
|
pascal@150
|
1171 rm fs.cpio.* && cd ..
|
gokhlayeh@383
|
1172
|
gokhlayeh@383
|
1173 # Recook of reverse-depends if package was broken.
|
gokhlayeh@383
|
1174 if grep -q "^$PACKAGE$" $PACKAGES_REPOSITORY/broken; then
|
paul@430
|
1175 report step "Planning a re-try cook of reverse depends"
|
gokhlayeh@383
|
1176 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/broken
|
gokhlayeh@383
|
1177 for rdep in $(look_for_rdep); do
|
gokhlayeh@383
|
1178 grep -q "^$rdep$" $PACKAGES_REPOSITORY/broken || continue
|
gokhlayeh@383
|
1179 grep -q "^$rdep$" $PACKAGES_REPOSITORY/cooklist && continue
|
gokhlayeh@383
|
1180 echo "Adding $rdep to the cooklist"
|
gokhlayeh@383
|
1181 echo $rdep >> $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@383
|
1182 regen_cooklist=t
|
gokhlayeh@383
|
1183 done
|
gokhlayeh@383
|
1184 report end-step
|
gokhlayeh@383
|
1185 fi
|
gokhlayeh@383
|
1186 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/commit
|
gokhlayeh@383
|
1187 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@186
|
1188
|
pankso@7
|
1189 # Log process.
|
pascal@69
|
1190 echo "$PACKAGE-$VERSION$EXTRAVERSION.tazpkg (done)" >> $LOG
|
gokhlayeh@186
|
1191 report close-bloc
|
pascal@68
|
1192 echo "Package $PACKAGE ($VERSION$EXTRAVERSION) generated."
|
gokhlayeh@186
|
1193 echo "Size : `du -sh $INCOMING_REPOSITORY/$PACKAGE-$VERSION$EXTRAVERSION.tazpkg`"
|
pankso@7
|
1194 echo ""
|
pankso@7
|
1195 }
|
pankso@7
|
1196
|
gokhlayeh@186
|
1197 ########################################################################
|
gokhlayeh@186
|
1198 # This section contains functions used by several other functions
|
paul@430
|
1199 # below.
|
gokhlayeh@186
|
1200 ########################
|
gokhlayeh@186
|
1201
|
gokhlayeh@186
|
1202 # Look for receipt/files.list in wok. If they can't be found, get them
|
gokhlayeh@186
|
1203 # from package. Accept one argument : absolute path to package.
|
gokhlayeh@186
|
1204 get_pkg_files()
|
pankso@28
|
1205 {
|
gokhlayeh@186
|
1206 pkg_files_dir=$tmp/$(basename ${1%.tazpkg})
|
gokhlayeh@186
|
1207 mkdir -p $pkg_files_dir && \
|
gokhlayeh@186
|
1208 cd $pkg_files_dir && \
|
gokhlayeh@186
|
1209 cpio --quiet -idm receipt < $1 && \
|
gokhlayeh@186
|
1210 cpio --quiet -idm files.list < $1
|
gokhlayeh@186
|
1211 }
|
gokhlayeh@170
|
1212
|
gokhlayeh@186
|
1213 ########################################################################
|
gokhlayeh@204
|
1214 # This section contains functions to generate packages databases.
|
gokhlayeh@186
|
1215 ########################
|
gokhlayeh@186
|
1216
|
gokhlayeh@186
|
1217
|
gokhlayeh@186
|
1218 gen_packages_db()
|
gokhlayeh@186
|
1219 {
|
gokhlayeh@186
|
1220 # pkg_repository can be $PACKAGES_REPOSITORY or $INCOMING_REPOSITORY.
|
gokhlayeh@204
|
1221 [ "$pkg_repository" ] || pkg_repository=$PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1222 cd $pkg_repository
|
gokhlayeh@204
|
1223 report step "Generating packages lists: $pkg_repository"
|
gokhlayeh@204
|
1224 report open-bloc
|
gokhlayeh@204
|
1225 report step "Removing old files"
|
gokhlayeh@204
|
1226 for file in files.list.lzma packages.list packages.txt \
|
gokhlayeh@204
|
1227 packages.desc packages.equiv packages.md5; do
|
gokhlayeh@204
|
1228 [ -f $file ] && rm $file
|
gokhlayeh@204
|
1229 done
|
gokhlayeh@204
|
1230 touch files.list
|
gokhlayeh@204
|
1231
|
gokhlayeh@186
|
1232 packages_db_start
|
gokhlayeh@186
|
1233 unset RECEIPT
|
paul@430
|
1234 report step "Reading data from all packages"
|
gokhlayeh@195
|
1235 for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
|
gokhlayeh@186
|
1236 get_packages_info
|
gokhlayeh@186
|
1237 done
|
gokhlayeh@186
|
1238 report end-step
|
gokhlayeh@186
|
1239 packages_db_end
|
gokhlayeh@204
|
1240 report close-bloc
|
gokhlayeh@186
|
1241 }
|
gokhlayeh@186
|
1242
|
gokhlayeh@186
|
1243 update_packages_db()
|
gokhlayeh@186
|
1244 {
|
gokhlayeh@204
|
1245 [ "$pkg_repository" ] || pkg_repository=$PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1246 cd $pkg_repository
|
gokhlayeh@204
|
1247 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
1248 packages.txt; do
|
gokhlayeh@186
|
1249 if [ ! -f "$file" ]; then
|
gokhlayeh@204
|
1250 gen_packages_db
|
gokhlayeh@186
|
1251 return
|
gokhlayeh@170
|
1252 fi
|
gokhlayeh@170
|
1253 done
|
gokhlayeh@186
|
1254 if [ -f files.list.lzma ]; then
|
gokhlayeh@186
|
1255 lzma d files.list.lzma files.list
|
gokhlayeh@186
|
1256 else
|
gokhlayeh@204
|
1257 gen_packages_db
|
gokhlayeh@414
|
1258 return
|
gokhlayeh@186
|
1259 fi
|
gokhlayeh@204
|
1260 report step "Updating packages lists: $pkg_repository"
|
gokhlayeh@186
|
1261 packages_db_start
|
gokhlayeh@412
|
1262
|
gokhlayeh@186
|
1263 # Look for removed/update packages.
|
gokhlayeh@412
|
1264 touch stamp -r packages.list
|
gokhlayeh@186
|
1265 for PACKAGE in $(grep ^[0-9,a-z,A-Z] packages.txt); do
|
gokhlayeh@202
|
1266 pkg="$pkg_repository/$(grep -m1 ^$PACKAGE- packages.list).tazpkg"
|
gokhlayeh@195
|
1267 if ! [ -f "$pkg" ]; then
|
gokhlayeh@186
|
1268 erase_package_info
|
gokhlayeh@186
|
1269 else
|
gokhlayeh@412
|
1270 if [ "$pkg" -nt "stamp" ]; then
|
gokhlayeh@215
|
1271 updated_pkg="$updated_pkg
|
gokhlayeh@215
|
1272 $PACKAGE $pkg"
|
gokhlayeh@266
|
1273 elif [ ! -f $WOK/$PACKAGE/receipt ] && \
|
gokhlayeh@266
|
1274 [ "$COMMAND" = check-incoming -o "$pkg_repository" = "$INCOMING_REPOSITORY" ]; then
|
gokhlayeh@266
|
1275 erase_package_info
|
gokhlayeh@266
|
1276 echo "Removing $PACKAGE from $pkg_repository."
|
gokhlayeh@266
|
1277 rm $pkg
|
gokhlayeh@266
|
1278 [ -d $WOK/$PACKAGE ] && rm -r $WOK/$PACKAGE
|
gokhlayeh@282
|
1279 sed "/^$PACKAGE\t/d" -i $wan_db $dep_db
|
gokhlayeh@282
|
1280 for i in cookorder.txt cooklist commit blocked broken; do
|
gokhlayeh@282
|
1281 sed "/^$PACKAGE$/d" -i $PACKAGES_REPOSITORY/$i
|
gokhlayeh@282
|
1282 done
|
gokhlayeh@282
|
1283 rm -f $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@352
|
1284 if [ "$pkg_repository" = "$INCOMING_REPOSITORY" ] && \
|
gokhlayeh@352
|
1285 [ "$(sed 1!d $PACKAGES_REPOSITORY/cookorder.txt)" != "#PlanSort" ] ; then
|
gokhlayeh@266
|
1286 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@266
|
1287 regen_cooklist=yes
|
gokhlayeh@266
|
1288 else
|
gokhlayeh@266
|
1289 echo "$PACKAGE" >> $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1290 sed -n '1,10p' -i $PACKAGES_REPOSITORY/removed
|
gokhlayeh@266
|
1291 fi
|
gokhlayeh@186
|
1292 fi
|
pascal@178
|
1293 fi
|
pascal@178
|
1294 done
|
gokhlayeh@412
|
1295 rm stamp
|
gokhlayeh@215
|
1296 echo "$updated_pkg" | sed 1d | while read PACKAGE pkg; do
|
gokhlayeh@202
|
1297 erase_package_info
|
gokhlayeh@202
|
1298 get_packages_info
|
gokhlayeh@202
|
1299 done
|
gokhlayeh@204
|
1300 unset updated_pkg
|
gokhlayeh@202
|
1301
|
gokhlayeh@186
|
1302 # Look for new packages.
|
gokhlayeh@195
|
1303 for pkg in $(echo $pkg_repository/*.tazpkg | fgrep -v '*'); do
|
gokhlayeh@199
|
1304 if ! fgrep -q " ${pkg##*/}" $pkg_repository/packages.md5; then
|
gokhlayeh@186
|
1305 get_packages_info
|
gokhlayeh@186
|
1306 fi
|
gokhlayeh@186
|
1307 done
|
gokhlayeh@186
|
1308 report end-step
|
gokhlayeh@186
|
1309 packages_db_end
|
gokhlayeh@186
|
1310 }
|
gokhlayeh@186
|
1311
|
gokhlayeh@186
|
1312 packages_db_start()
|
gokhlayeh@186
|
1313 {
|
gokhlayeh@186
|
1314 if [ ! -s packages.txt ]; then
|
gokhlayeh@186
|
1315 echo "# SliTaz GNU/Linux - Packages list
|
gokhlayeh@186
|
1316 #
|
paul@430
|
1317 # Packages : unknown
|
gokhlayeh@186
|
1318 # Date : $(date +%Y-%m-%d\ \%H:%M:%S)
|
gokhlayeh@215
|
1319 #
|
gokhlayeh@215
|
1320 " > packages.txt
|
pascal@62
|
1321 else
|
paul@430
|
1322 sed -e 's/^# Packages :.*/# Packages : unknown/' \
|
gokhlayeh@186
|
1323 -e "s/# Date :.*/# Date : $(date +%Y-%m-%d\ \%H:%M:%S)/" \
|
gokhlayeh@186
|
1324 -i packages.txt
|
pascal@60
|
1325 fi
|
gokhlayeh@186
|
1326
|
paul@430
|
1327 # Needed in some cases as tazwok defines RECEIPT at configuration time
|
paul@430
|
1328 # in this particular case it can break the script.
|
gokhlayeh@186
|
1329 unset RECEIPT
|
gokhlayeh@186
|
1330 }
|
pankso@28
|
1331
|
gokhlayeh@186
|
1332 erase_package_info()
|
gokhlayeh@186
|
1333 {
|
gokhlayeh@186
|
1334 cd $pkg_repository
|
gokhlayeh@186
|
1335 sed "/^$PACKAGE$/,/^$/d" -i packages.txt
|
gokhlayeh@186
|
1336 sed "/^$PACKAGE /d" -i packages.desc
|
gokhlayeh@186
|
1337 sed -e "s/=$PACKAGE /= /" -e "s/ $PACKAGE / /" -e "s/ $PACKAGE$//" \
|
gokhlayeh@186
|
1338 -e "/=$PACKAGE$/d" -e "s/=[0-9,a-z,A-Z]:$PACKAGE /= /" \
|
gokhlayeh@186
|
1339 -e "s/ [0-9,a-z,A-Z]:$PACKAGE / /" -e "s/ [0-9,a-z,A-Z]:$PACKAGE$/ /" \
|
gokhlayeh@186
|
1340 -e "/=[0-9,a-z,A-Z]:$PACKAGE$/d" \
|
gokhlayeh@186
|
1341 -i packages.equiv
|
gokhlayeh@186
|
1342 sed "/^$PACKAGE:/d" -i files.list
|
gokhlayeh@186
|
1343 sed "/^$(basename ${pkg%.tazpkg})$/d" -i packages.list
|
gokhlayeh@186
|
1344 sed "/ $(basename $pkg)$/d" -i packages.md5
|
gokhlayeh@186
|
1345 }
|
gokhlayeh@186
|
1346
|
gokhlayeh@186
|
1347 get_packages_info()
|
gokhlayeh@186
|
1348 {
|
paul@430
|
1349 # If there's no taz folder in the wok, extract info from the
|
gokhlayeh@186
|
1350 # package.
|
gokhlayeh@186
|
1351 get_pkg_files $pkg
|
gokhlayeh@186
|
1352 source_receipt
|
paul@430
|
1353 echo "Getting data from $PACKAGE"
|
gokhlayeh@186
|
1354
|
gokhlayeh@186
|
1355 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@28
|
1356 $PACKAGE
|
gokhlayeh@186
|
1357 $VERSION$EXTRAVERSION
|
pankso@28
|
1358 $SHORT_DESC
|
pankso@28
|
1359 _EOT_
|
gokhlayeh@215
|
1360 if [ "$PACKED_SIZE" ]; then
|
gokhlayeh@215
|
1361 cat >> $pkg_repository/packages.txt << _EOT_
|
pankso@133
|
1362 $PACKED_SIZE ($UNPACKED_SIZE installed)
|
gokhlayeh@215
|
1363
|
pascal@60
|
1364 _EOT_
|
gokhlayeh@215
|
1365 else
|
gokhlayeh@215
|
1366 echo "" >> $pkg_repository/packages.txt
|
pascal@60
|
1367 fi
|
gokhlayeh@186
|
1368
|
paul@121
|
1369 # Packages.desc is used by Tazpkgbox <tree>.
|
gokhlayeh@186
|
1370 echo "$PACKAGE | $VERSION$EXTRAVERSION | $SHORT_DESC | $CATEGORY | $WEB_SITE" >> $pkg_repository/packages.desc
|
gokhlayeh@186
|
1371
|
paul@430
|
1372 # Packages.equiv is used by tazpkg install to check depends.
|
pascal@99
|
1373 for i in $PROVIDE; do
|
pascal@99
|
1374 DEST=""
|
gokhlayeh@195
|
1375 echo $i | fgrep -q : && DEST="${i#*:}:"
|
gokhlayeh@186
|
1376 if grep -qs ^${i%:*}= $pkg_repository/packages.equiv; then
|
gokhlayeh@186
|
1377 sed -i "s/^${i%:*}=/${i%:*}=$DEST$PACKAGE /" $pkg_repository/packages.equiv
|
pascal@99
|
1378 else
|
gokhlayeh@186
|
1379 echo "${i%:*}=$DEST$PACKAGE" >> $pkg_repository/packages.equiv
|
gokhlayeh@186
|
1380 fi
|
gokhlayeh@186
|
1381 done
|
gokhlayeh@186
|
1382
|
gokhlayeh@186
|
1383 if [ -f files.list ]; then
|
gokhlayeh@186
|
1384 { echo "$PACKAGE"; cat files.list; } | awk '
|
gokhlayeh@186
|
1385 BEGIN { name="" } { if (name == "") name=$0; else printf("%s: %s\n",name,$0); }' >> $pkg_repository/files.list
|
gokhlayeh@186
|
1386 fi
|
gokhlayeh@186
|
1387
|
gokhlayeh@186
|
1388 cd .. && rm -r "$pkg_files_dir"
|
gokhlayeh@186
|
1389
|
gokhlayeh@186
|
1390 cd $pkg_repository
|
gokhlayeh@186
|
1391 echo $(basename ${pkg%.tazpkg}) >> packages.list
|
gokhlayeh@186
|
1392 [ ! "$package_md5" ] && package_md5=$(md5sum $(basename $pkg))
|
gokhlayeh@186
|
1393 echo "$package_md5" >> packages.md5
|
gokhlayeh@186
|
1394 unset package_md5
|
gokhlayeh@186
|
1395 }
|
gokhlayeh@186
|
1396
|
gokhlayeh@186
|
1397 source_receipt()
|
gokhlayeh@186
|
1398 {
|
gokhlayeh@186
|
1399 unset PACKAGE SOURCE VERSION EXTRAVERSION CATEGORY SHORT_DESC \
|
gokhlayeh@186
|
1400 MAINTAINER WEB_SITE WGET_URL DEPENDS BUILD_DEPENDS WANTED \
|
gokhlayeh@186
|
1401 PACKED_SIZE UNPACKED_SIZE COOK_OPT PROVIDE CONFIG_FILES TAGS \
|
gokhlayeh@298
|
1402 src _pkg DESTDIR CONFIG_SITE BRANCH TARBALL stuff wanted_stuff
|
gokhlayeh@186
|
1403 . ${RECEIPT:-$PWD/receipt}
|
gokhlayeh@186
|
1404 }
|
gokhlayeh@186
|
1405
|
gokhlayeh@186
|
1406 packages_db_end()
|
gokhlayeh@186
|
1407 {
|
gokhlayeh@186
|
1408 cd $pkg_repository
|
gokhlayeh@186
|
1409 pkgs=$(wc -l packages.list | sed 's/ .*//')
|
gokhlayeh@186
|
1410 sed "s/# Packages : .*/# Packages : $pkgs/" -i packages.txt
|
gokhlayeh@186
|
1411
|
paul@430
|
1412 # If lists were updated it's generally needed to sort them well.
|
gokhlayeh@186
|
1413 if ! sort -c packages.list 2> /dev/null; then
|
gokhlayeh@186
|
1414 report step "Sorting packages lists"
|
gokhlayeh@186
|
1415 for file in packages.list packages.desc packages.equiv; do
|
gokhlayeh@186
|
1416 [ -f $file ] || continue
|
gokhlayeh@186
|
1417 sort -o $file $file
|
gokhlayeh@186
|
1418 done
|
gokhlayeh@186
|
1419 report end-step
|
gokhlayeh@186
|
1420 fi
|
gokhlayeh@186
|
1421
|
paul@430
|
1422 # Dont log this because lzma always output errors.
|
gokhlayeh@186
|
1423 lzma e files.list files.list.lzma
|
gokhlayeh@204
|
1424 rm -f files.list
|
gokhlayeh@204
|
1425 [ -f packages.equiv ] || touch packages.equiv
|
gokhlayeh@186
|
1426 }
|
gokhlayeh@186
|
1427
|
gokhlayeh@186
|
1428 ########################################################################
|
gokhlayeh@186
|
1429 # This section contains functions to generate wok database.
|
gokhlayeh@186
|
1430 ########################
|
gokhlayeh@186
|
1431
|
gokhlayeh@186
|
1432 gen_wok_db()
|
gokhlayeh@186
|
1433 {
|
gokhlayeh@204
|
1434 report step "Generating wok database"
|
gokhlayeh@186
|
1435 report open-bloc
|
gokhlayeh@204
|
1436 report step "Removing old files"
|
gokhlayeh@204
|
1437 for file in $wan_db $dep_db $PACKAGES_REPOSITORY/cookorder.txt; do
|
gokhlayeh@204
|
1438 [ -f $file ] && rm $file
|
gokhlayeh@204
|
1439 done
|
gokhlayeh@186
|
1440 report step "Generating wok-wanted.txt"
|
gokhlayeh@204
|
1441 gen_wan_db
|
gokhlayeh@186
|
1442 report step "Generating wok-depends.txt"
|
gokhlayeh@204
|
1443 for PACKAGE in $(cut -f1 -d '|' $PACKAGES_REPOSITORY/packages.desc \
|
gokhlayeh@204
|
1444 $INCOMING_REPOSITORY/packages.desc | sort -u); do
|
gokhlayeh@186
|
1445 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1446 if [ -s $RECEIPT ]; then
|
gokhlayeh@186
|
1447 source_receipt
|
gokhlayeh@186
|
1448 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pankso@133
|
1449 fi
|
pascal@99
|
1450 done
|
gokhlayeh@215
|
1451 sort_db
|
gokhlayeh@204
|
1452 report close-bloc
|
pankso@28
|
1453 }
|
pankso@28
|
1454
|
gokhlayeh@204
|
1455 gen_wan_db()
|
pascal@91
|
1456 {
|
gokhlayeh@471
|
1457 rm -f $wan_db
|
gokhlayeh@204
|
1458 for RECEIPT in $(fgrep -l WANTED $WOK/*/receipt); do
|
gokhlayeh@204
|
1459 WANTED=
|
gokhlayeh@204
|
1460 source $RECEIPT
|
gokhlayeh@204
|
1461 [ "$WANTED" ] || continue
|
gokhlayeh@471
|
1462 echo -e $PACKAGE"\t"$WANTED >> $wan_db
|
gokhlayeh@204
|
1463 done
|
pascal@91
|
1464 }
|
pascal@91
|
1465
|
gokhlayeh@215
|
1466 update_wan_db()
|
gokhlayeh@215
|
1467 {
|
slaxemulator@326
|
1468 local PACKAGE=$PACKAGE
|
gokhlayeh@423
|
1469 wanted_list=$(fgrep WANTED=\"$PACKAGE\" $WOK/*/receipt | cut -f1 -d ':')
|
gokhlayeh@423
|
1470 grep $'\t'$PACKAGE $wan_db | cut -f 1 | while read wan; do
|
gokhlayeh@423
|
1471 echo "$wanted_list" | fgrep -q /$wan/receipt && continue
|
gokhlayeh@423
|
1472 sed "/^$wan\t/d" -i $wan_db
|
gokhlayeh@423
|
1473 done
|
gokhlayeh@423
|
1474 for RECEIPT in $wanted_list; do
|
gokhlayeh@470
|
1475 unset WANTED PACKAGE
|
gokhlayeh@215
|
1476 source $RECEIPT
|
gokhlayeh@215
|
1477 [ "$WANTED" ] || continue
|
gokhlayeh@215
|
1478 sed "/^$PACKAGE\t/d" -i $wan_db
|
gokhlayeh@470
|
1479 echo -e $PACKAGE"\t"$WANTED >> $wan_db
|
gokhlayeh@215
|
1480 done
|
gokhlayeh@423
|
1481 unset wanted_list
|
gokhlayeh@215
|
1482 }
|
gokhlayeh@215
|
1483
|
gokhlayeh@204
|
1484 update_dep_db()
|
gokhlayeh@204
|
1485 {
|
gokhlayeh@204
|
1486 sed "/^$PACKAGE\t/d" -i $dep_db
|
gokhlayeh@470
|
1487 echo -e $PACKAGE"\t "$DEPENDS" \t "$BUILD_DEPENDS' ' >> $dep_db
|
pascal@178
|
1488 }
|
pascal@178
|
1489
|
gokhlayeh@186
|
1490 sort_db()
|
pascal@178
|
1491 {
|
gokhlayeh@186
|
1492 report step "Generating cookorder.txt"
|
gokhlayeh@186
|
1493 cat $dep_db | sed 's/ \t / /' | while read PACKAGE BUILD_DEPENDS; do
|
gokhlayeh@186
|
1494 grep -q ^$PACKAGE$'\t' $wan_db && continue
|
gokhlayeh@186
|
1495
|
gokhlayeh@186
|
1496 # Replace each BUILD_DEPENDS with a WANTED package by it's
|
gokhlayeh@186
|
1497 # WANTED package.
|
gokhlayeh@186
|
1498 replace_by_wanted()
|
gokhlayeh@186
|
1499 {
|
gokhlayeh@186
|
1500 for p in $BUILD_DEPENDS; do
|
gokhlayeh@186
|
1501 if grep -q ^$p$'\t' $wan_db; then
|
gokhlayeh@186
|
1502 echo -n $(grep ^$p$'\t' $wan_db | cut -f 2)' '
|
gokhlayeh@186
|
1503 else
|
gokhlayeh@186
|
1504 echo -n $p' '
|
gokhlayeh@186
|
1505 fi
|
gokhlayeh@186
|
1506 done | tr ' ' '\n' | sort -u | sed "/^$PACKAGE$/d" | tr '\n' ' '
|
gokhlayeh@186
|
1507 }
|
gokhlayeh@186
|
1508 echo -e $PACKAGE"\t $(replace_by_wanted) "
|
gokhlayeh@186
|
1509 done > $tmp/db
|
gokhlayeh@186
|
1510 while [ -s "$tmp/db" ]; do
|
gokhlayeh@186
|
1511 status=start
|
gokhlayeh@186
|
1512 for pkg in $(cut -f 1 $tmp/db); do
|
gokhlayeh@195
|
1513 if ! fgrep -q ' '$pkg' ' $tmp/db; then
|
gokhlayeh@186
|
1514 echo $pkg >> $tmp/cookorder
|
gokhlayeh@186
|
1515 sed -e "/^$pkg\t/d" -e "s/ $pkg / /g" -i $tmp/db
|
gokhlayeh@186
|
1516 status=proceed
|
gokhlayeh@186
|
1517 fi
|
gokhlayeh@186
|
1518 done
|
gokhlayeh@186
|
1519 if [ "$status" = start ]; then
|
gokhlayeh@186
|
1520 cp -f $tmp/db /tmp/remain-depends.txt
|
paul@430
|
1521 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
|
1522 for blocked in $(cut -f 1 $tmp/db); do
|
gokhlayeh@186
|
1523 echo "$blocked" >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@186
|
1524 done
|
gokhlayeh@186
|
1525 break
|
gokhlayeh@186
|
1526 fi
|
gokhlayeh@186
|
1527 done
|
gokhlayeh@186
|
1528 [ -s $tmp/cookorder ] || touch $tmp/cookorder
|
gokhlayeh@186
|
1529
|
gokhlayeh@186
|
1530 # The toolchain packages are moved in first position.
|
gokhlayeh@186
|
1531 grep $(for pkg in `scan "$SLITAZ_TOOLCHAIN $SLITAZ_TOOLCHAIN_EXTRA" \
|
gokhlayeh@186
|
1532 --look_for=all --with_args`; do echo " -e ^$pkg$"; done) \
|
gokhlayeh@186
|
1533 $tmp/cookorder | tac > $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1534 for pkg in $(cat $PACKAGES_REPOSITORY/cookorder.txt); do
|
gokhlayeh@186
|
1535 sed "/^$pkg$/d" -i $tmp/cookorder
|
gokhlayeh@186
|
1536 done
|
gokhlayeh@186
|
1537
|
gokhlayeh@186
|
1538 tac $tmp/cookorder >> $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@186
|
1539 report end-step
|
pascal@178
|
1540 }
|
pascal@178
|
1541
|
gokhlayeh@186
|
1542 ########################################################################
|
gokhlayeh@186
|
1543 # SCAN CORE
|
gokhlayeh@186
|
1544 ########################
|
paul@430
|
1545 # Includes various scan core-functions. It's not intended to be used
|
gokhlayeh@186
|
1546 # directly : prefer scan wrappers in next section.
|
gokhlayeh@186
|
1547
|
gokhlayeh@186
|
1548 look_for_dep()
|
gokhlayeh@186
|
1549 {
|
gokhlayeh@186
|
1550 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1551 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1552 | cut -f 2
|
gokhlayeh@186
|
1553 else
|
gokhlayeh@280
|
1554 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1555 cut -f 2
|
gokhlayeh@186
|
1556 fi
|
gokhlayeh@186
|
1557 }
|
gokhlayeh@186
|
1558
|
gokhlayeh@186
|
1559 look_for_bdep()
|
gokhlayeh@186
|
1560 {
|
gokhlayeh@186
|
1561 look_for_all
|
gokhlayeh@186
|
1562 }
|
gokhlayeh@186
|
1563
|
gokhlayeh@186
|
1564 look_for_all()
|
gokhlayeh@186
|
1565 {
|
gokhlayeh@186
|
1566 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1567 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@186
|
1568 | cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1569 else
|
gokhlayeh@280
|
1570 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@186
|
1571 cut -f 2,3 | sed 's/ / /'
|
gokhlayeh@186
|
1572 fi
|
gokhlayeh@186
|
1573 }
|
gokhlayeh@186
|
1574
|
gokhlayeh@186
|
1575 look_for_rdep()
|
gokhlayeh@186
|
1576 {
|
gokhlayeh@195
|
1577 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | cut -f 1
|
gokhlayeh@186
|
1578 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1579 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt | cut -f 1); do
|
gokhlayeh@186
|
1580 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1581 echo "$rdep"
|
gokhlayeh@186
|
1582 fi
|
gokhlayeh@186
|
1583 done
|
gokhlayeh@186
|
1584 fi
|
gokhlayeh@186
|
1585 }
|
gokhlayeh@186
|
1586
|
gokhlayeh@186
|
1587 look_for_rbdep()
|
gokhlayeh@186
|
1588 {
|
gokhlayeh@195
|
1589 fgrep ' '$PACKAGE' ' $INCOMING_REPOSITORY/wok-depends.txt | \
|
gokhlayeh@195
|
1590 cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1
|
gokhlayeh@186
|
1591 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1592 for rdep in $(fgrep ' '$PACKAGE' ' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-depends.txt \
|
gokhlayeh@195
|
1593 | cut -f 1,3 | fgrep ' '$PACKAGE' ' | cut -f 1); do
|
gokhlayeh@186
|
1594 if [ ! -f "WOK$/$rdep/receipt" ]; then
|
gokhlayeh@186
|
1595 echo "$rdep"
|
gokhlayeh@186
|
1596 fi
|
gokhlayeh@186
|
1597 done
|
gokhlayeh@186
|
1598 fi
|
gokhlayeh@186
|
1599 }
|
gokhlayeh@186
|
1600
|
gokhlayeh@186
|
1601 # Return WANTED if it exists.
|
gokhlayeh@186
|
1602 look_for_wanted()
|
gokhlayeh@186
|
1603 {
|
gokhlayeh@186
|
1604 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@280
|
1605 grep -m1 ^$PACKAGE$'\t' $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1606 else
|
gokhlayeh@280
|
1607 grep -m1 ^$PACKAGE$'\t' $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 2
|
gokhlayeh@186
|
1608 fi
|
gokhlayeh@186
|
1609 }
|
gokhlayeh@186
|
1610
|
gokhlayeh@186
|
1611 # Return packages which wants PACKAGE.
|
gokhlayeh@186
|
1612 look_for_rwanted()
|
gokhlayeh@186
|
1613 {
|
gokhlayeh@186
|
1614 grep $'\t'$PACKAGE$ $INCOMING_REPOSITORY/wok-wanted.txt | cut -f 1
|
gokhlayeh@186
|
1615 if [ "$undigest" ]; then
|
gokhlayeh@240
|
1616 for rwanted in $(grep $'\t'$PACKAGE$ $SLITAZ_DIR/$SLITAZ_VERSION/packages-incoming/wok-wanted.txt | cut -f 1); do
|
gokhlayeh@186
|
1617 if [ ! -f "$WOK/$rwanted/receipt" ]; then
|
gokhlayeh@186
|
1618 echo "$rwanted"
|
gokhlayeh@186
|
1619 fi
|
gokhlayeh@186
|
1620 done
|
gokhlayeh@186
|
1621 fi
|
gokhlayeh@186
|
1622 }
|
gokhlayeh@186
|
1623
|
gokhlayeh@186
|
1624 look_for_dev()
|
gokhlayeh@186
|
1625 {
|
gokhlayeh@223
|
1626 WANTED=$(look_for_wanted)
|
gokhlayeh@223
|
1627 if [ "$WANTED" ]; then
|
gokhlayeh@223
|
1628 if [ "$undigest" ] && [ ! -f "$WOK/$WANTED/receipt" ]; then
|
gokhlayeh@223
|
1629 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1630 else
|
gokhlayeh@223
|
1631 [ -f "$WOK/$WANTED-dev/receipt" ] && echo $WANTED-dev
|
gokhlayeh@223
|
1632 fi
|
gokhlayeh@223
|
1633 fi
|
gokhlayeh@223
|
1634 if [ "$undigest" ] && [ ! -f "$WOK/$PACKAGE/receipt" ]; then
|
gokhlayeh@223
|
1635 [ -f "$SLITAZ_DIR/$SLITAZ_VERSION/wok/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1636 else
|
gokhlayeh@223
|
1637 [ -f "$WOK/$PACKAGE-dev/receipt" ] && echo $PACKAGE-dev
|
gokhlayeh@223
|
1638 fi
|
gokhlayeh@186
|
1639 }
|
gokhlayeh@186
|
1640
|
gokhlayeh@215
|
1641 with_dev()
|
gokhlayeh@215
|
1642 {
|
gokhlayeh@215
|
1643 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1644 echo $PACKAGE
|
gokhlayeh@215
|
1645 look_for_dev
|
gokhlayeh@215
|
1646 done
|
gokhlayeh@215
|
1647 }
|
gokhlayeh@215
|
1648
|
gokhlayeh@215
|
1649 with_wanted()
|
gokhlayeh@215
|
1650 {
|
gokhlayeh@215
|
1651 for PACKAGE in $(cat); do
|
gokhlayeh@215
|
1652 echo $PACKAGE
|
gokhlayeh@215
|
1653 look_for_wanted
|
gokhlayeh@215
|
1654 done
|
gokhlayeh@215
|
1655 }
|
gokhlayeh@215
|
1656
|
gokhlayeh@215
|
1657 use_wanted()
|
gokhlayeh@215
|
1658 {
|
gokhlayeh@215
|
1659 for input in $(cat); do
|
gokhlayeh@215
|
1660 { grep ^$input$'\t' $wan_db || echo $input
|
gokhlayeh@215
|
1661 } | sed 's/.*\t//'
|
gokhlayeh@215
|
1662 done
|
gokhlayeh@215
|
1663 }
|
gokhlayeh@215
|
1664
|
gokhlayeh@186
|
1665 ########################################################################
|
gokhlayeh@186
|
1666 # SCAN
|
gokhlayeh@186
|
1667 ########################
|
gokhlayeh@186
|
1668 # Use wok-wanted.txt and wok-depeds.txt to scan depends.
|
gokhlayeh@186
|
1669 # Option in command line (must be first arg) :
|
gokhlayeh@186
|
1670 # --look_for=bdep/rbdep - Look for depends or reverse depends.
|
gokhlayeh@186
|
1671 # --with_dev - Add development packages (*-dev) in the result.
|
gokhlayeh@186
|
1672 # --with_wanted - Add package+reverse wanted in the result.
|
gokhlayeh@186
|
1673 # --with_args - Include packages in argument in the result.
|
gokhlayeh@186
|
1674
|
gokhlayeh@186
|
1675 scan()
|
gokhlayeh@186
|
1676 {
|
gokhlayeh@186
|
1677 # Get packages in argument.
|
slaxemulator@326
|
1678 local PACKAGE=$PACKAGE WANTED=$WANTED pkg_list=
|
gokhlayeh@186
|
1679 for arg in $@; do
|
gokhlayeh@186
|
1680 [ "$arg" = "${arg#--}" ] || continue
|
gokhlayeh@186
|
1681 pkg_list="$pkg_list $arg"
|
gokhlayeh@186
|
1682 done
|
gokhlayeh@204
|
1683
|
gokhlayeh@186
|
1684 # Get options.
|
gokhlayeh@186
|
1685 [ "$pkg_list" ] || return
|
gokhlayeh@186
|
1686 local cooklist= look_for= with_dev= with_wanted= with_args= log_command="$0 $@" \
|
gokhlayeh@215
|
1687 get_options_list="look_for with_dev with_wanted with_args cooklist use_wanted"
|
gokhlayeh@186
|
1688 get_options
|
gokhlayeh@470
|
1689
|
gokhlayeh@470
|
1690 # Get db md5 to be able to check for changes latter.
|
gokhlayeh@470
|
1691 db_md5=$(md5sum $dep_db $wan_db)
|
gokhlayeh@186
|
1692
|
gokhlayeh@186
|
1693 # Cooklist is a special case where we need to modify a little
|
gokhlayeh@186
|
1694 # scan behavior
|
gokhlayeh@186
|
1695 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1696 gen_wan_db
|
gokhlayeh@204
|
1697 look_for=all && with_args=yes && with_dev= && with_wanted=
|
gokhlayeh@204
|
1698 filter=use_wanted
|
gokhlayeh@241
|
1699 if [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@241
|
1700 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1701 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@241
|
1702 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@241
|
1703 check_for_missing
|
gokhlayeh@241
|
1704 done
|
gokhlayeh@241
|
1705 append_to_dep()
|
gokhlayeh@241
|
1706 {
|
gokhlayeh@241
|
1707 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@241
|
1708 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1709 else
|
gokhlayeh@241
|
1710 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1711 fi
|
gokhlayeh@241
|
1712 }
|
gokhlayeh@241
|
1713 else
|
gokhlayeh@241
|
1714 append_to_dep()
|
gokhlayeh@241
|
1715 {
|
gokhlayeh@241
|
1716 check_for_commit && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@241
|
1717 }
|
gokhlayeh@241
|
1718 fi
|
gokhlayeh@204
|
1719 else
|
gokhlayeh@204
|
1720 append_to_dep()
|
gokhlayeh@204
|
1721 {
|
gokhlayeh@204
|
1722 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@204
|
1723 }
|
gokhlayeh@240
|
1724 # If requested packages are not in dep_db, partial generation of this db is needed.
|
gokhlayeh@241
|
1725 for PACKAGE in $pkg_list; do
|
gokhlayeh@241
|
1726 grep -q ^$PACKAGE$'\t' $dep_db && continue
|
gokhlayeh@240
|
1727 [ -d "$WOK/$p" ] || continue
|
gokhlayeh@240
|
1728 plan_check_for_missing=yes
|
gokhlayeh@240
|
1729 check_for_missing
|
gokhlayeh@240
|
1730 done
|
gokhlayeh@240
|
1731 if [ "$plan_check_for_missing" ]; then
|
gokhlayeh@240
|
1732 append_to_dep()
|
gokhlayeh@240
|
1733 {
|
gokhlayeh@240
|
1734 if ! grep -q ^$PACKAGE$'\t' $dep_db; then
|
gokhlayeh@240
|
1735 check_for_missing && echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1736 else
|
gokhlayeh@240
|
1737 echo $PACKAGE >> $tmp/dep
|
gokhlayeh@240
|
1738 fi
|
gokhlayeh@240
|
1739 }
|
gokhlayeh@240
|
1740 unset plan_check_for_missing
|
gokhlayeh@240
|
1741 fi
|
gokhlayeh@186
|
1742 fi
|
gokhlayeh@215
|
1743
|
gokhlayeh@204
|
1744 [ "$with_dev" ] && filter=with_dev
|
gokhlayeh@204
|
1745 [ "$with_wanted" ] && filter=with_wanted
|
gokhlayeh@204
|
1746 if [ "$filter" ]; then
|
gokhlayeh@291
|
1747 pkg_list=$(echo $pkg_list | $filter | sort -u)
|
gokhlayeh@204
|
1748 scan_pkg()
|
gokhlayeh@204
|
1749 {
|
gokhlayeh@204
|
1750 look_for_$look_for | $filter
|
gokhlayeh@204
|
1751 }
|
gokhlayeh@204
|
1752 else
|
gokhlayeh@204
|
1753 scan_pkg()
|
gokhlayeh@204
|
1754 {
|
gokhlayeh@204
|
1755 look_for_$look_for
|
gokhlayeh@204
|
1756 }
|
gokhlayeh@204
|
1757 fi
|
gokhlayeh@215
|
1758 touch $tmp/dep
|
gokhlayeh@204
|
1759 for PACKAGE in $pkg_list; do
|
gokhlayeh@204
|
1760 [ "$with_args" ] && append_to_dep
|
gokhlayeh@204
|
1761 scan_pkg
|
gokhlayeh@186
|
1762 done | tr ' ' '\n' | sort -u > $tmp/list
|
gokhlayeh@186
|
1763 [ "$look_for" = bdep ] && look_for=dep
|
gokhlayeh@186
|
1764 while [ -s $tmp/list ]; do
|
gokhlayeh@186
|
1765 PACKAGE=$(sed 1!d $tmp/list)
|
gokhlayeh@186
|
1766 sed 1d -i $tmp/list
|
gokhlayeh@204
|
1767 append_to_dep
|
gokhlayeh@204
|
1768 for pkg in $(scan_pkg); do
|
gokhlayeh@204
|
1769 if ! grep -q ^$pkg$ $tmp/list $tmp/dep; then
|
gokhlayeh@204
|
1770 echo $pkg >> $tmp/list
|
gokhlayeh@186
|
1771 fi
|
gokhlayeh@186
|
1772 done
|
gokhlayeh@186
|
1773 done
|
gokhlayeh@204
|
1774 if [ "$cooklist" ]; then
|
gokhlayeh@204
|
1775 mv $tmp/dep $tmp/cooklist
|
gokhlayeh@215
|
1776 else
|
gokhlayeh@204
|
1777 cat $tmp/dep | sort -u
|
gokhlayeh@186
|
1778 fi
|
gokhlayeh@204
|
1779 rm -f $tmp/dep $tmp/list
|
gokhlayeh@475
|
1780 sort -o $dep_db $dep_db
|
gokhlayeh@475
|
1781 sort -o $wan_db $wan_db
|
gokhlayeh@470
|
1782 if [ "$db_md5" != "$(md5sum $dep_db $wan_db)" ]; then
|
gokhlayeh@470
|
1783 grep -q "^#" $PACKAGES_REPOSITORY/cookorder.txt ||
|
gokhlayeh@470
|
1784 sed 1i"#PlanSort" -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@240
|
1785 fi
|
gokhlayeh@186
|
1786 }
|
gokhlayeh@186
|
1787
|
gokhlayeh@186
|
1788 ########################################################################
|
paul@430
|
1789 # This section contains functions to check the package repository and
|
gokhlayeh@186
|
1790 # find which packages to cook.
|
gokhlayeh@186
|
1791 ########################
|
gokhlayeh@186
|
1792
|
gokhlayeh@240
|
1793 check_for_missing()
|
gokhlayeh@240
|
1794 {
|
slaxemulator@326
|
1795 local PACKAGE=$PACKAGE
|
gokhlayeh@240
|
1796 if ! check_for_pkg_in_wok; then
|
gokhlayeh@240
|
1797 [ "$?" = 2 ] && return 1
|
gokhlayeh@240
|
1798 return
|
gokhlayeh@240
|
1799 fi
|
gokhlayeh@241
|
1800 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1801 source_receipt
|
gokhlayeh@240
|
1802 PACKAGE=${WANTED:-$PACKAGE}
|
gokhlayeh@240
|
1803 update_wan_db
|
gokhlayeh@240
|
1804 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@240
|
1805 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@240
|
1806 source_receipt
|
gokhlayeh@240
|
1807 update_dep_db
|
gokhlayeh@240
|
1808 done
|
gokhlayeh@240
|
1809 }
|
gokhlayeh@240
|
1810
|
gokhlayeh@186
|
1811 check_for_commit()
|
gokhlayeh@186
|
1812 {
|
gokhlayeh@204
|
1813 if ! check_for_pkg_in_wok; then
|
gokhlayeh@204
|
1814 [ "$?" = 2 ] && return 1
|
gokhlayeh@204
|
1815 return
|
gokhlayeh@204
|
1816 fi
|
gokhlayeh@204
|
1817 for PACKAGE in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@204
|
1818 RECEIPT=$WOK/$PACKAGE/receipt
|
gokhlayeh@186
|
1819 source_receipt
|
gokhlayeh@204
|
1820
|
gokhlayeh@186
|
1821 # We use md5 of cooking stuff in the packaged receipt to check
|
gokhlayeh@186
|
1822 # commit. We look consecutively in 3 different locations :
|
gokhlayeh@204
|
1823 # - in the wok/PACKAGE/taz/* folder
|
gokhlayeh@186
|
1824 # - in the receipt in the package in incoming repository
|
gokhlayeh@186
|
1825 # - in the receipt in the package in packages repository
|
paul@430
|
1826 # If md5sums match, there's no commit.
|
gokhlayeh@186
|
1827 check_for_commit_using_md5sum()
|
gokhlayeh@186
|
1828 {
|
gokhlayeh@186
|
1829 if [ ! -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1830 sed -n '/# md5sum of cooking stuff :/,$p' receipt | \
|
gokhlayeh@186
|
1831 sed -e 1d -e 's/^# //' > $WOK/$PACKAGE/md5
|
gokhlayeh@186
|
1832 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1833 fi
|
gokhlayeh@204
|
1834
|
gokhlayeh@186
|
1835 if [ -s md5 ]; then
|
gokhlayeh@186
|
1836 if md5sum -cs md5; then
|
gokhlayeh@204
|
1837
|
gokhlayeh@204
|
1838 # If md5sum check if ok, check for new/missing files in
|
gokhlayeh@204
|
1839 # cooking stuff.
|
gokhlayeh@204
|
1840 for file in $([ -f receipt ] && echo receipt; \
|
gokhlayeh@204
|
1841 [ -f description.txt ] && echo description.txt; \
|
gokhlayeh@204
|
1842 [ -d stuff ] && find stuff); do
|
gokhlayeh@204
|
1843 if ! fgrep -q " $file" md5; then
|
gokhlayeh@186
|
1844 set_commited
|
gokhlayeh@186
|
1845 fi
|
gokhlayeh@186
|
1846 done
|
gokhlayeh@186
|
1847 else
|
gokhlayeh@186
|
1848 set_commited
|
gokhlayeh@186
|
1849 fi
|
gokhlayeh@186
|
1850 else
|
gokhlayeh@204
|
1851 set_commited
|
gokhlayeh@186
|
1852 fi
|
gokhlayeh@186
|
1853 }
|
gokhlayeh@186
|
1854 set_commited()
|
gokhlayeh@186
|
1855 {
|
gokhlayeh@204
|
1856 ! grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/commit &&
|
gokhlayeh@204
|
1857 echo $PACKAGE >> $PACKAGES_REPOSITORY/commit
|
gokhlayeh@186
|
1858 gen_cookmd5
|
gokhlayeh@204
|
1859 update_dep_db
|
gokhlayeh@186
|
1860 }
|
gokhlayeh@195
|
1861 taz_dir=$(echo $WOK/$PACKAGE/taz/$PACKAGE-* | fgrep -v '*')
|
gokhlayeh@186
|
1862 if [ -f $WOK/$PACKAGE/md5 ]; then
|
gokhlayeh@186
|
1863 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
1864 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1865 elif [ "$taz_dir" ]; then
|
gokhlayeh@186
|
1866 cd $taz_dir
|
gokhlayeh@186
|
1867 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1868 else
|
gokhlayeh@195
|
1869 pkg=$(echo $INCOMING_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@195
|
1870 [ "$pkg" ] || pkg=$(echo $PACKAGES_REPOSITORY/$PACKAGE-$VERSION*.tazpkg | fgrep -v '*')
|
gokhlayeh@186
|
1871 if [ "$pkg" ]; then
|
gokhlayeh@186
|
1872 get_pkg_files $pkg
|
gokhlayeh@186
|
1873 check_for_commit_using_md5sum
|
gokhlayeh@186
|
1874 rm -r $pkg_files_dir
|
gokhlayeh@204
|
1875 else
|
gokhlayeh@204
|
1876 set_commited
|
gokhlayeh@186
|
1877 fi
|
gokhlayeh@186
|
1878 fi
|
gokhlayeh@204
|
1879 [ "$forced" ] || echo $PACKAGE >> $tmp/checked
|
gokhlayeh@186
|
1880 done
|
gokhlayeh@204
|
1881 return
|
gokhlayeh@186
|
1882 }
|
gokhlayeh@186
|
1883
|
gokhlayeh@186
|
1884 gen_cook_list()
|
gokhlayeh@186
|
1885 {
|
gokhlayeh@204
|
1886 report step "Scanning wok"
|
gokhlayeh@204
|
1887 if [ "$pkg" ]; then
|
gokhlayeh@204
|
1888 scan $pkg --cooklist
|
gokhlayeh@204
|
1889 else
|
gokhlayeh@204
|
1890 scan `cat $cooklist` --cooklist
|
gokhlayeh@204
|
1891 fi
|
gokhlayeh@204
|
1892 report end-step
|
gokhlayeh@209
|
1893
|
gokhlayeh@209
|
1894 [ -s $tmp/checked ] || [ -s $tmp/cooklist ] || return
|
gokhlayeh@209
|
1895
|
gokhlayeh@209
|
1896 # Core toolchain should not be cooked unless cook-toolchain is used.
|
gokhlayeh@209
|
1897 if ! [ -f /etc/config.site.tmptoolchain ] ; then
|
gokhlayeh@209
|
1898 for PACKAGE in $(scan gcc --look_for=all --with_args --with_wanted); do
|
gokhlayeh@209
|
1899 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/blocked || \
|
gokhlayeh@209
|
1900 echo $PACKAGE >> $PACKAGES_REPOSITORY/blocked
|
gokhlayeh@209
|
1901 done
|
gokhlayeh@209
|
1902 fi
|
gokhlayeh@313
|
1903
|
gokhlayeh@241
|
1904 if [ -s $PACKAGES_REPOSITORY/commit ] && [ "$COMMAND" != gen-cooklist ]; then
|
gokhlayeh@186
|
1905 cd $PACKAGES_REPOSITORY
|
gokhlayeh@186
|
1906 for PACKAGE in $(cat commit); do
|
gokhlayeh@186
|
1907 WANTED="$(look_for_wanted)"
|
gokhlayeh@186
|
1908 if [ "$WANTED" ]; then
|
gokhlayeh@204
|
1909 grep -q ^$WANTED$ broken cooklist blocked commit && continue
|
gokhlayeh@186
|
1910 fi
|
gokhlayeh@204
|
1911 grep -q ^$PACKAGE$ blocked cooklist && continue
|
gokhlayeh@204
|
1912 echo $PACKAGE >> cooklist
|
gokhlayeh@186
|
1913 done
|
gokhlayeh@186
|
1914 fi
|
gokhlayeh@186
|
1915 sort_cooklist
|
gokhlayeh@186
|
1916 }
|
gokhlayeh@186
|
1917
|
gokhlayeh@186
|
1918 sort_cooklist()
|
gokhlayeh@186
|
1919 {
|
gokhlayeh@266
|
1920 if [ "$(sed 1!d $PACKAGES_REPOSITORY/cookorder.txt)" = "#PlanSort" ]; then
|
gokhlayeh@266
|
1921 sed 1d -i $PACKAGES_REPOSITORY/cookorder.txt
|
gokhlayeh@470
|
1922 sort_db
|
gokhlayeh@266
|
1923 fi
|
gokhlayeh@313
|
1924 report step "Generating cooklist"
|
gokhlayeh@204
|
1925 if [ -f "$tmp/checked" ]; then
|
gokhlayeh@204
|
1926 rm -f $tmp/cooklist
|
gokhlayeh@204
|
1927 cat $tmp/checked | while read PACKAGE; do
|
gokhlayeh@204
|
1928 grep -q ^$PACKAGE$ $PACKAGES_REPOSITORY/cooklist && \
|
gokhlayeh@204
|
1929 echo $PACKAGE >> $tmp/cooklist
|
gokhlayeh@204
|
1930 done
|
gokhlayeh@209
|
1931 elif ! [ "$COMMAND" = gen-cooklist ]; then
|
gokhlayeh@209
|
1932 cat $PACKAGES_REPOSITORY/blocked | while read PACKAGE; do
|
gokhlayeh@209
|
1933 sed "/^$PACKAGE/d" -i $tmp/cooklist
|
gokhlayeh@209
|
1934 done
|
gokhlayeh@204
|
1935 fi
|
gokhlayeh@313
|
1936 report end-step
|
gokhlayeh@313
|
1937 [ -s $tmp/cooklist ] || return
|
gokhlayeh@215
|
1938
|
gokhlayeh@313
|
1939 report step "Sorting cooklist"
|
gokhlayeh@204
|
1940 for PACKAGE in $(cat $tmp/cooklist); do
|
gokhlayeh@204
|
1941 WANTED="$(look_for_wanted)"
|
gokhlayeh@204
|
1942 [ "$WANTED" ] || continue
|
gokhlayeh@297
|
1943 if grep -q ^$WANTED$ $PACKAGES_REPOSITORY/broken $tmp/cooklist; then
|
gokhlayeh@186
|
1944 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1945 elif [ ! -d $WOK/$WANTED/install ]; then
|
gokhlayeh@204
|
1946 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1947 echo $WANTED >> $tmp/cooklist
|
gokhlayeh@186
|
1948 fi
|
gokhlayeh@186
|
1949 done
|
gokhlayeh@186
|
1950
|
gokhlayeh@204
|
1951 # Use cookorder.txt to sort cooklist.
|
gokhlayeh@204
|
1952 if [ -s $tmp/cooklist ]; then
|
gokhlayeh@204
|
1953 cat $PACKAGES_REPOSITORY/cookorder.txt | while read PACKAGE; do
|
gokhlayeh@204
|
1954 if grep -q ^$PACKAGE$ $tmp/cooklist; then
|
gokhlayeh@204
|
1955 sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@204
|
1956 echo $PACKAGE >> $tmp/cooklist.tmp
|
gokhlayeh@204
|
1957 fi
|
gokhlayeh@204
|
1958 done
|
gokhlayeh@204
|
1959
|
paul@430
|
1960 # Remaining packages in cooklist are those without compile_rules.
|
gokhlayeh@204
|
1961 # They can be cooked first in any order.
|
gokhlayeh@204
|
1962 if [ -f $tmp/cooklist.tmp ]; then
|
gokhlayeh@204
|
1963 cat $tmp/cooklist.tmp >> $tmp/cooklist
|
gokhlayeh@204
|
1964 rm $tmp/cooklist.tmp
|
gokhlayeh@204
|
1965 fi
|
gokhlayeh@204
|
1966
|
gokhlayeh@204
|
1967 cat $tmp/cooklist
|
gokhlayeh@204
|
1968 [ "$cooklist" = "$PACKAGES_REPOSITORY/cooklist" ] && \
|
gokhlayeh@204
|
1969 cat $tmp/cooklist > $cooklist
|
gokhlayeh@204
|
1970 fi
|
gokhlayeh@204
|
1971
|
gokhlayeh@186
|
1972 report end-step
|
gokhlayeh@186
|
1973 }
|
gokhlayeh@186
|
1974
|
gokhlayeh@284
|
1975 look_for_missing_pkg()
|
gokhlayeh@284
|
1976 {
|
gokhlayeh@284
|
1977 for pkg in $(cat $PACKAGES_REPOSITORY/$1); do
|
gokhlayeh@284
|
1978 grep -q ^$pkg$ $INCOMING_REPOSITORY/packages.txt \
|
gokhlayeh@284
|
1979 $PACKAGES_REPOSITORY/packages.txt || \
|
gokhlayeh@284
|
1980 continue
|
gokhlayeh@284
|
1981 echo $pkg
|
gokhlayeh@284
|
1982 done
|
gokhlayeh@284
|
1983 }
|
gokhlayeh@284
|
1984
|
gokhlayeh@186
|
1985 check_for_incoming()
|
gokhlayeh@186
|
1986 {
|
paul@430
|
1987 report step "Checking that all packages were cooked OK"
|
gokhlayeh@204
|
1988 [ -s $INCOMING_REPOSITORY/packages.desc ] || {
|
gokhlayeh@204
|
1989 echo "No packages in $INCOMING_REPOSITORY."
|
gokhlayeh@307
|
1990 report end-step; return; }
|
gokhlayeh@204
|
1991 if [ -s $PACKAGES_REPOSITORY/broken ]; then
|
gokhlayeh@290
|
1992 missingpkg=$(look_for_missing_pkg broken)
|
gokhlayeh@290
|
1993 if [ "$missingpkg" ]; then
|
paul@430
|
1994 echo "Don't move incoming packages to main repository because these ones are broken:" >&2
|
gokhlayeh@290
|
1995 echo "$missingpkg"
|
gokhlayeh@307
|
1996 report end-step
|
gokhlayeh@307
|
1997 return 1
|
gokhlayeh@290
|
1998 fi
|
gokhlayeh@186
|
1999 fi
|
gokhlayeh@204
|
2000 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
2001 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
2002 if [ "$missingpkg" ]; then
|
paul@430
|
2003 echo "Don't move incoming packages to main repository because these ones need to be cooked:" >&2
|
gokhlayeh@290
|
2004 echo "$missingpkg"
|
gokhlayeh@307
|
2005 report end-step
|
gokhlayeh@307
|
2006 return 1
|
gokhlayeh@290
|
2007 fi
|
gokhlayeh@204
|
2008 fi
|
gokhlayeh@306
|
2009 incoming_pkgs="$(cut -f 1 -d '|' $INCOMING_REPOSITORY/packages.desc)"
|
gokhlayeh@214
|
2010 if ! [ "$forced" ]; then
|
gokhlayeh@214
|
2011 cooklist=$PACKAGES_REPOSITORY/cooklist
|
gokhlayeh@313
|
2012 pkg="$incoming_pkgs"
|
gokhlayeh@214
|
2013 gen_cook_list
|
gokhlayeh@214
|
2014 if [ -s $PACKAGES_REPOSITORY/cooklist ]; then
|
gokhlayeh@290
|
2015 missingpkg=$(look_for_missing_pkg cooklist)
|
gokhlayeh@290
|
2016 if [ "$missingpkg" ]; then
|
paul@430
|
2017 echo "Don't move incoming packages to main repository because these ones need to be cooked:" >&2
|
gokhlayeh@290
|
2018 echo "$missingpkg"
|
gokhlayeh@307
|
2019 report end-step
|
gokhlayeh@307
|
2020 return 1
|
gokhlayeh@290
|
2021 fi
|
gokhlayeh@214
|
2022 fi
|
gokhlayeh@204
|
2023 fi
|
gokhlayeh@313
|
2024
|
gokhlayeh@204
|
2025 report step "Moving incoming packages to main repository"
|
gokhlayeh@204
|
2026 unset EXTRAVERSION
|
gokhlayeh@306
|
2027 for PACKAGE in $incoming_pkgs; do
|
gokhlayeh@186
|
2028 prev_VERSION=$(get_pkg_version $PACKAGES_REPOSITORY)
|
gokhlayeh@204
|
2029 VERSION=$(get_pkg_version $INCOMING_REPOSITORY)
|
gokhlayeh@186
|
2030 remove_previous_package $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
2031 echo "Moving $PACKAGE..."
|
gokhlayeh@204
|
2032 mv -f $INCOMING_REPOSITORY/$PACKAGE-$VERSION.tazpkg $PACKAGES_REPOSITORY
|
gokhlayeh@204
|
2033 touch $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg
|
gokhlayeh@266
|
2034 previous_tarball=$(grep ^$PACKAGE:main $SOURCES_REPOSITORY/sources.list | cut -f2)
|
gokhlayeh@266
|
2035 sed -e "/^$PACKAGE:main/d" \
|
slaxemulator@275
|
2036 -e "s/^$PACKAGE:incoming/$PACKAGE:main/" \
|
gokhlayeh@266
|
2037 -i $SOURCES_REPOSITORY/sources.list
|
gokhlayeh@266
|
2038 if [ "$previous_tarball" ]; then
|
gokhlayeh@266
|
2039 grep -q $'\t'$previous_tarball$ $SOURCES_REPOSITORY/sources.list || \
|
gokhlayeh@266
|
2040 rm -f $SOURCES_REPOSITORY/$previous_tarball
|
gokhlayeh@266
|
2041 fi
|
gokhlayeh@204
|
2042 done
|
gokhlayeh@204
|
2043 for file in packages.list packages.equiv packages.md5 packages.desc \
|
gokhlayeh@204
|
2044 packages.txt; do
|
gokhlayeh@204
|
2045 echo -n "" > $INCOMING_REPOSITORY/$file
|
gokhlayeh@204
|
2046 done
|
gokhlayeh@204
|
2047 rm -r $INCOMING_REPOSITORY/files.list.lzma
|
gokhlayeh@186
|
2048 pkg_repository=$PACKAGES_REPOSITORY && update_packages_db
|
gokhlayeh@313
|
2049
|
gokhlayeh@313
|
2050 report step "Updating flavors"
|
gokhlayeh@313
|
2051 if [ -x /usr/bin/tazlito ] || [ -x /usr/bin/clean-chroot ]; then
|
gokhlayeh@313
|
2052 if ! [ -x /usr/bin/tazlito ]; then
|
gokhlayeh@313
|
2053 tazpkg get-install tazlito
|
gokhlayeh@313
|
2054 fi
|
gokhlayeh@313
|
2055
|
gokhlayeh@313
|
2056 # Handle cases where tazwok is used into main system;
|
gokhlayeh@313
|
2057 # Handle cases where SLITAZ_DIR is not /home/slitaz.
|
gokhlayeh@313
|
2058 [ -L /home/slitaz/flavors ] && rm /home/slitaz/flavors
|
gokhlayeh@313
|
2059 mkdir -p /home/slitaz
|
gokhlayeh@313
|
2060 ln -s $LOCAL_REPOSITORY/flavors /home/slitaz/flavors
|
pascal@495
|
2061 cd /home/slitaz/flavors
|
pascal@495
|
2062 [ -d .hg ] && hg pull -u
|
gokhlayeh@313
|
2063
|
gokhlayeh@313
|
2064 cd $LOCAL_REPOSITORY/packages
|
gokhlayeh@313
|
2065 for i in $LOCAL_REPOSITORY/flavors/*; do
|
gokhlayeh@331
|
2066 [ -d "$i" ] || continue
|
gokhlayeh@313
|
2067 tazlito pack-flavor ${i##*/}
|
gokhlayeh@313
|
2068 done
|
gokhlayeh@313
|
2069
|
gokhlayeh@313
|
2070 noheader=""
|
gokhlayeh@313
|
2071 for i in *.flavor; do
|
gokhlayeh@313
|
2072 tazlito show-flavor $i --brief $noheader
|
gokhlayeh@313
|
2073 noheader="--noheader"
|
gokhlayeh@313
|
2074 done > flavors.list
|
gokhlayeh@313
|
2075 [ -x /usr/bin/clean-chroot ] && clean-chroot
|
gokhlayeh@313
|
2076 else
|
paul@430
|
2077 echo "Can't create up-to-date flavors because the tazlito package is missing." >&2
|
gokhlayeh@313
|
2078 fi
|
gokhlayeh@313
|
2079 report end-step
|
gokhlayeh@186
|
2080 }
|
gokhlayeh@186
|
2081
|
gokhlayeh@186
|
2082 ########################################################################
|
gokhlayeh@186
|
2083 # TAZWOK MAIN FUNCTIONS
|
gokhlayeh@186
|
2084 ########################
|
gokhlayeh@186
|
2085
|
gokhlayeh@186
|
2086 clean()
|
gokhlayeh@186
|
2087 {
|
gokhlayeh@186
|
2088 cd $WOK/$PACKAGE
|
gokhlayeh@186
|
2089 ls -A $WOK/$PACKAGE | grep -q -v -e ^receipt$ -e ^description.txt$ \
|
gokhlayeh@186
|
2090 -e ^stuff$ || return
|
gokhlayeh@186
|
2091
|
gokhlayeh@249
|
2092 [ "$COMMAND" = clean-wok ] || report step "Cleaning $PACKAGE"
|
gokhlayeh@186
|
2093 # Check for clean_wok function.
|
gokhlayeh@186
|
2094 if grep -q ^clean_wok $RECEIPT; then
|
gokhlayeh@186
|
2095 clean_wok
|
gokhlayeh@186
|
2096 fi
|
gokhlayeh@186
|
2097 # Clean should only have a receipt, stuff and optional desc.
|
gokhlayeh@186
|
2098 for f in `ls .`
|
gokhlayeh@186
|
2099 do
|
gokhlayeh@186
|
2100 case $f in
|
gokhlayeh@250
|
2101 receipt|stuff|description.txt|md5)
|
gokhlayeh@186
|
2102 continue ;;
|
gokhlayeh@186
|
2103 *)
|
gokhlayeh@263
|
2104 rm -rf $f ;;
|
gokhlayeh@186
|
2105 esac
|
gokhlayeh@186
|
2106 done
|
gokhlayeh@262
|
2107 [ "$COMMAND" != clean-wok ] && report end-step
|
gokhlayeh@186
|
2108 }
|
gokhlayeh@186
|
2109
|
gokhlayeh@186
|
2110 # Configure and make a package with the receipt.
|
gokhlayeh@186
|
2111 compile_package()
|
gokhlayeh@186
|
2112 {
|
gokhlayeh@186
|
2113 check_for_package_on_cmdline
|
gokhlayeh@186
|
2114
|
gokhlayeh@186
|
2115 # Include the receipt to get all needed variables and functions
|
gokhlayeh@186
|
2116 # and cd into the work directory to start the work.
|
gokhlayeh@186
|
2117 check_for_receipt
|
gokhlayeh@186
|
2118 source_receipt
|
gokhlayeh@186
|
2119
|
gokhlayeh@186
|
2120 # Log the package name and date.
|
gokhlayeh@186
|
2121 echo "date `date +%Y%m%d\ \%H:%M:%S`" >> $LOG
|
gokhlayeh@186
|
2122 echo "package $PACKAGE (compile)" >> $LOG
|
gokhlayeh@186
|
2123
|
gokhlayeh@186
|
2124 # Set wanted $src variable to help compiling.
|
gokhlayeh@186
|
2125 [ ! "$src" ] && set_src_path
|
gokhlayeh@186
|
2126 check_for_build_depends || return 1
|
gokhlayeh@186
|
2127 check_for_wanted
|
gokhlayeh@186
|
2128 unset target
|
gokhlayeh@186
|
2129 check_for_tarball && check_for_compile_rules
|
gokhlayeh@186
|
2130 }
|
gokhlayeh@186
|
2131
|
gokhlayeh@186
|
2132 # Cook command also include all features to manage lists which keep
|
gokhlayeh@186
|
2133 # track of wok/packages state.
|
gokhlayeh@186
|
2134 cook()
|
gokhlayeh@186
|
2135 {
|
gokhlayeh@186
|
2136 cook_code=
|
gokhlayeh@186
|
2137 set_common_path
|
gokhlayeh@186
|
2138 check_for_receipt
|
gokhlayeh@186
|
2139 source_receipt
|
gokhlayeh@186
|
2140
|
gokhlayeh@186
|
2141 # Define log path and start report.
|
gokhlayeh@186
|
2142 [ -f $LOCAL_REPOSITORY/log/$PACKAGE.html ] && rm $LOCAL_REPOSITORY/log/$PACKAGE.html
|
gokhlayeh@186
|
2143 report sublog $LOCAL_REPOSITORY/log/$PACKAGE.html
|
pascal@349
|
2144 echo "$PACKAGE" > $LOCAL_REPOSITORY/log/package
|
gokhlayeh@186
|
2145 report step "Cooking $PACKAGE"
|
gokhlayeh@186
|
2146 report open-bloc
|
gokhlayeh@186
|
2147
|
gokhlayeh@186
|
2148 clean $PACKAGE
|
gokhlayeh@186
|
2149 [ -s $tmp/cooklist ] && sed "/^$PACKAGE$/d" -i $tmp/cooklist
|
gokhlayeh@381
|
2150
|
gokhlayeh@186
|
2151 if compile_package; then
|
gokhlayeh@215
|
2152 remove_src
|
gokhlayeh@186
|
2153 refresh_packages_from_compile
|
gokhlayeh@186
|
2154 gen_package
|
gokhlayeh@186
|
2155
|
gokhlayeh@186
|
2156 # Update packages-incoming repository.
|
gokhlayeh@186
|
2157 store_pkgname=$PACKAGE
|
gokhlayeh@186
|
2158 pkg_repository=$INCOMING_REPOSITORY
|
gokhlayeh@186
|
2159 update_packages_db
|
gokhlayeh@186
|
2160
|
gokhlayeh@186
|
2161 PACKAGE=$store_pkgname
|
gokhlayeh@186
|
2162 unset store_pkgname
|
gokhlayeh@186
|
2163
|
gokhlayeh@186
|
2164 # Upgrade to cooked packages if it was previously installed.
|
paul@430
|
2165 report step "Looking for package(s) to upgrade"
|
gokhlayeh@186
|
2166 for pkg in $(look_for_rwanted) $PACKAGE; do
|
gokhlayeh@186
|
2167 if [ -d $INSTALLED/$pkg ]; then
|
gokhlayeh@186
|
2168 tazpkg get-install $pkg --forced
|
gokhlayeh@186
|
2169 fi
|
gokhlayeh@186
|
2170 done
|
gokhlayeh@186
|
2171 report end-step
|
gokhlayeh@186
|
2172 else
|
gokhlayeh@490
|
2173 for PACKAGE in $(look_for_wanted) $PACKAGE; do
|
gokhlayeh@490
|
2174 set_pkg_broken
|
gokhlayeh@490
|
2175 done
|
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@475
|
2675 sort -o $dep_db $dep_db
|
gokhlayeh@475
|
2676 sort -o $wan_db $wan_db
|
gokhlayeh@470
|
2677 if [ "$db_md5" != "$(md5sum $dep_db $wan_db)" ]; then
|
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
|