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