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