tazwok annotate tazwok @ rev 15
Fix files.list creation
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Dec 21 00:11:27 2007 +0100 (2007-12-21) |
parents | 3cee15956bd9 |
children | cb683a1ada12 |
rev | line source |
---|---|
pankso@7 | 1 #!/bin/sh |
pankso@7 | 2 # Tazwok - SliTaz source compiler and binary packages generator/cooker. |
pankso@7 | 3 # |
pankso@7 | 4 # Tazwok can compile source package and creat binary packages suitable for |
pankso@7 | 5 # Tazpkg (Tiny Autonomus zone package manager). You can build individuals |
pankso@7 | 6 # package or a list a 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@7 | 9 # (C) 2007 SliTaz - GNU General Public License. |
pankso@7 | 10 # Author : <pankso@slitaz.org> |
pankso@7 | 11 # |
pankso@7 | 12 VERSION=1.2 |
pankso@7 | 13 |
pankso@7 | 14 #################### |
pankso@7 | 15 # Tazwok variables # |
pankso@7 | 16 #################### |
pankso@7 | 17 |
pankso@7 | 18 # Packages categories. |
pankso@7 | 19 CATEGORIES="base-system base-apps x-window extra" |
pankso@7 | 20 |
pankso@7 | 21 # Use words rater than numbers in the code. |
pankso@7 | 22 COMMAND=$1 |
pankso@7 | 23 PACKAGE=$2 |
pankso@7 | 24 LIST=$2 |
pankso@7 | 25 |
pankso@7 | 26 # Include config file or exit if any file found. |
pankso@7 | 27 if [ -f "/etc/tazwok.conf" ]; then |
pankso@7 | 28 . /etc/tazwok.conf |
pankso@7 | 29 else |
pankso@7 | 30 echo -e "\nUnable to find the configuration file : /etc/tazwok.conf" |
pankso@7 | 31 echo -e "Please read the Tazwok documentation.\n" |
pankso@7 | 32 exit 0 |
pankso@7 | 33 fi |
pankso@7 | 34 |
pankso@7 | 35 # Creat Taz wok needed directories if user is root. |
pankso@7 | 36 if test $(id -u) = 0 ; then |
pankso@7 | 37 # Check for the wok directory. |
pankso@7 | 38 if [ ! -d "$WOK" ]; then |
pankso@7 | 39 echo "Creating the wok directory..." |
pankso@7 | 40 mkdir -p $WOK |
pankso@7 | 41 chmod 777 $WOK |
pankso@7 | 42 fi |
pankso@7 | 43 # Check for the packages repository. |
pankso@7 | 44 if [ ! -d "$PACKAGES_REPOSITORY" ]; then |
pankso@7 | 45 echo "Creating the packages repository..." |
pankso@7 | 46 mkdir -p $PACKAGES_REPOSITORY |
pankso@7 | 47 fi |
pankso@7 | 48 # Check for the sources repository. |
pankso@7 | 49 if [ ! -d "$SOURCES_REPOSITORY" ]; then |
pankso@7 | 50 echo "Creating the sources repository..." |
pankso@7 | 51 mkdir -p $PACKAGES_REPOSITORY |
pankso@7 | 52 fi |
pankso@7 | 53 fi |
pankso@7 | 54 |
pankso@7 | 55 # The path to the most important file used by Tazwok. |
pankso@7 | 56 # The receipt is used to compile the source code and |
pankso@7 | 57 # gen suitables packages for Tazpkg. |
pankso@7 | 58 RECEIPT="$WOK/$PACKAGE/receipt" |
pankso@7 | 59 |
pankso@7 | 60 # The path to the process log file. |
pankso@7 | 61 LOG="$WOK/$PACKAGE/process.log" |
pankso@7 | 62 |
pankso@7 | 63 #################### |
pankso@7 | 64 # Tazwok functions # |
pankso@7 | 65 #################### |
pankso@7 | 66 |
pankso@7 | 67 # Print the usage (English). |
pankso@7 | 68 usage () |
pankso@7 | 69 { |
pankso@7 | 70 echo -e "\nSliTaz sources compiler and packages generator - Version: $VERSION\n |
pankso@7 | 71 \033[1mUsage: \033[0m `basename $0` [command] [package|list|category|dir] [--option] |
pankso@7 | 72 \033[1mCommands: \033[0m\n |
pankso@7 | 73 usage Print this short usage. |
pankso@7 | 74 stats Print Tazwok statistics from the config file and the wok. |
pankso@7 | 75 list List all packages in the wok tree or by category. |
pankso@7 | 76 info Get informations about a package in the wok. |
pankso@7 | 77 check-log Check the process log file of a package. |
pankso@7 | 78 search Search for a package in the wok by pattern or name. |
pankso@7 | 79 compile Configure and build the package using the receipt rules. |
pankso@7 | 80 genpkg Generate a suitable package for Tazpkg with the rules. |
pankso@7 | 81 cook Compile and generate a package directly. |
pankso@7 | 82 cook-list Cook all packages specified in the list by order. |
pankso@7 | 83 clean Clean all generated files in the package tree. |
pankso@7 | 84 new-tree Prepare a new package tree and receipt (--interactive). |
pankso@7 | 85 gen-list Generate a packages.list and md5sum for a repository. |
pankso@7 | 86 gen-clean-wok Gen a clean wok in a dir ('clean-wok' cleans current wok). |
pankso@7 | 87 remove Remove a package from the wok.\n" |
pankso@7 | 88 } |
pankso@7 | 89 |
pankso@7 | 90 # Status function. |
pankso@7 | 91 status() |
pankso@7 | 92 { |
pankso@7 | 93 local CHECK=$? |
pankso@7 | 94 echo -en "\\033[70G[ " |
pankso@7 | 95 if [ $CHECK = 0 ]; then |
pankso@7 | 96 echo -en "\\033[1;33mOK" |
pankso@7 | 97 else |
pankso@7 | 98 echo -en "\\033[1;31mFailed" |
pankso@7 | 99 fi |
pankso@7 | 100 echo -e "\\033[0;39m ]" |
pankso@7 | 101 } |
pankso@7 | 102 |
pankso@7 | 103 # Check if user is root. |
pankso@7 | 104 check_root() |
pankso@7 | 105 { |
pankso@7 | 106 if test $(id -u) != 0 ; then |
pankso@7 | 107 echo -e "\nYou must be root to run `basename $0` with this option." |
pankso@7 | 108 echo -e "Please type 'su' and root password to become super-user.\n" |
pankso@7 | 109 exit 0 |
pankso@7 | 110 fi |
pankso@7 | 111 } |
pankso@7 | 112 |
pankso@7 | 113 # Check for a package name on cmdline. |
pankso@7 | 114 check_for_package_on_cmdline() |
pankso@7 | 115 { |
pankso@7 | 116 if [ -z "$PACKAGE" ]; then |
pankso@7 | 117 echo -e "\nYou must specify a package name on the command line." |
pankso@7 | 118 echo -e "Example : tazwok $COMMAND package\n" |
pankso@7 | 119 exit 0 |
pankso@7 | 120 fi |
pankso@7 | 121 } |
pankso@7 | 122 |
pankso@7 | 123 # Check for the receipt of a package used to cook. |
pankso@7 | 124 check_for_receipt() |
pankso@7 | 125 { |
pankso@7 | 126 if [ ! -f "$RECEIPT" ]; then |
pankso@7 | 127 echo -e "\nUnable to find the receipt : $RECEIPT\n" |
pankso@7 | 128 exit 0 |
pankso@7 | 129 fi |
pankso@7 | 130 } |
pankso@7 | 131 |
pankso@7 | 132 # Check for a specified file list on cmdline. |
pankso@7 | 133 check_for_list() |
pankso@7 | 134 { |
pankso@7 | 135 if [ -z "$LIST" ]; then |
pankso@7 | 136 echo -e "\nPlease specify the path to the list of packages to cook.\n" |
pankso@7 | 137 exit 0 |
pankso@7 | 138 fi |
pankso@7 | 139 # Check if the list of packages exist. |
pankso@7 | 140 if [ -f "$LIST" ]; then |
pankso@7 | 141 LIST=`cat $LIST` |
pankso@7 | 142 else |
pankso@7 | 143 echo -e "\nUnable to find $LIST packages list.\n" |
pankso@7 | 144 exit 0 |
pankso@7 | 145 fi |
pankso@7 | 146 } |
pankso@7 | 147 |
pankso@7 | 148 # Check for the wanted package if specified in WANTED |
pankso@7 | 149 # receipt variable. Set the $src/$_pkg variable to help compiling |
pankso@7 | 150 # and generating packages. |
pankso@7 | 151 check_for_wanted() |
pankso@7 | 152 { |
pankso@7 | 153 if [ ! "$WANTED" = "" ]; then |
pankso@7 | 154 echo -n "Checking for the wanted package..." |
pankso@7 | 155 if [ ! -d "$WOK/$WANTED" ]; then |
pankso@7 | 156 echo -e "\nWanted package is missing in the work directory.\n" |
pankso@7 | 157 exit 0 |
pankso@7 | 158 fi |
pankso@7 | 159 status |
pankso@7 | 160 # Set wanted src path. |
pankso@7 | 161 src=$WOK/$WANTED/$WANTED-$VERSION |
pankso@7 | 162 _pkg=$src/_pkg |
pankso@7 | 163 fi |
pankso@7 | 164 } |
pankso@7 | 165 |
pankso@7 | 166 # Configure and make a package with the receipt. |
pankso@7 | 167 compile_package() |
pankso@7 | 168 { |
pankso@7 | 169 check_for_package_on_cmdline |
pankso@7 | 170 # Include the receipt to get all needed variables and functions |
pankso@7 | 171 # and cd into the work directory to start the work. |
pankso@7 | 172 check_for_receipt |
pankso@7 | 173 . $RECEIPT |
pankso@7 | 174 # Log the package name and date. |
pankso@7 | 175 echo "date `date +%Y%m%d\ \%H:%M:%S`" >> $LOG |
pankso@7 | 176 echo "package $PACKAGE (compile)" >> $LOG |
pankso@7 | 177 # Set wanted $src variable to help compiling. |
pankso@7 | 178 if [ ! "$SOURCE" = "" ]; then |
pankso@7 | 179 src=$WOK/$PACKAGE/$SOURCE-$VERSION |
pankso@7 | 180 else |
pankso@7 | 181 src=$WOK/$PACKAGE/$PACKAGE-$VERSION |
pankso@7 | 182 fi |
pankso@7 | 183 check_for_wanted |
pankso@7 | 184 echo "" |
pankso@7 | 185 echo "Starting to cook $PACKAGE..." |
pankso@7 | 186 echo "================================================================================" |
pankso@7 | 187 # Check for src tarball and wget if needed. |
pankso@7 | 188 if [ ! "$TARBALL" = "" ]; then |
pankso@7 | 189 echo "Checking for source tarball... " |
pankso@7 | 190 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ]; then |
pankso@7 | 191 cd $SOURCES_REPOSITORY |
pankso@7 | 192 wget $WGET_URL |
pankso@7 | 193 # Exit if download failed to avoid errors. |
pankso@7 | 194 if [ ! -f "$SOURCES_REPOSITORY/$TARBALL" ]; then |
pankso@7 | 195 echo -e "\nDownload failed, exiting. Please check WGET_URL variable.\n" |
pankso@7 | 196 exit 1 |
pankso@7 | 197 fi |
pankso@7 | 198 else |
pankso@7 | 199 echo -n "Source tarball exit... " |
pankso@7 | 200 status |
pankso@7 | 201 fi |
pankso@7 | 202 # Untaring source if necessary. We dont need to extract source if |
pankso@7 | 203 # the package is build with a wanted source package. |
pankso@7 | 204 if [ "$WANTED" = "" ]; then |
pankso@7 | 205 if [ ! -d $src ]; then |
pankso@7 | 206 # Log process. |
pankso@7 | 207 echo "untaring $TARBALL" >> $LOG |
pankso@7 | 208 echo -n "Untaring $TARBALL... " |
pankso@7 | 209 if [ "`basename $TARBALL | grep tar.bz2`" ]; then |
pankso@7 | 210 tar xjf $SOURCES_REPOSITORY/$TARBALL -C $WOK/$PACKAGE |
pankso@7 | 211 else |
pankso@7 | 212 tar xzf $SOURCES_REPOSITORY/$TARBALL -C $WOK/$PACKAGE |
pankso@7 | 213 fi |
pankso@7 | 214 status |
pankso@7 | 215 else |
pankso@7 | 216 echo -n "Source direcory exit... " && status |
pankso@7 | 217 fi |
pankso@7 | 218 fi |
pankso@7 | 219 fi |
pankso@7 | 220 cd $WOK/$PACKAGE |
pankso@7 | 221 # Log and execute compile_rules function if it exist, to configure and |
pankso@7 | 222 # make the package if it exist. |
pankso@7 | 223 if [ `cat $RECEIPT | grep compile_rules` ]; then |
pankso@7 | 224 echo "executing compile_rules" >> $LOG |
pankso@7 | 225 compile_rules |
pankso@7 | 226 # Exit if compilation failed so the binary package |
pankso@7 | 227 # is not generated when using the cook comand. |
pankso@7 | 228 local CHECK=$? |
pankso@7 | 229 if [ $CHECK = 0 ]; then |
pankso@7 | 230 echo "================================================================================" |
pankso@7 | 231 echo "$PACKAGE compiled on : `date +%Y%m%d\ \%H:%M:%S`" |
pankso@7 | 232 echo "" |
pankso@7 | 233 echo "compilation done : `date +%Y%m%d\ \%H:%M:%S`" >> $LOG |
pankso@7 | 234 else |
pankso@7 | 235 echo "================================================================================" |
pankso@7 | 236 echo "Compilation failed. Please read the compilator output." |
pankso@7 | 237 echo "" && exit 1 |
pankso@7 | 238 fi |
pankso@7 | 239 else |
pankso@7 | 240 echo "no compile_rules" >> $LOG |
pankso@7 | 241 echo -e "No compile rules for $PACKAGE...\n" |
pankso@7 | 242 fi |
pankso@7 | 243 } |
pankso@7 | 244 |
pankso@7 | 245 # Creat a package tree and build the gziped cpio archive |
pankso@7 | 246 # to make a SliTaz (.tazpkg) package. |
pankso@7 | 247 gen_package() |
pankso@7 | 248 { |
pankso@7 | 249 check_root |
pankso@7 | 250 check_for_package_on_cmdline |
pankso@7 | 251 check_for_receipt |
pankso@7 | 252 . $RECEIPT |
pankso@7 | 253 check_for_wanted |
pankso@7 | 254 cd $WOK/$PACKAGE |
pankso@7 | 255 # Remove old Tazwok package files. |
pankso@7 | 256 if [ -d "taz" ]; then |
pankso@7 | 257 rm -rf taz |
pankso@7 | 258 rm -f $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg |
pankso@7 | 259 fi |
pankso@7 | 260 # Creat the package tree and set usful variables. |
pankso@7 | 261 mkdir -p taz/$PACKAGE-$VERSION/fs |
pankso@7 | 262 fs=taz/$PACKAGE-$VERSION/fs |
pankso@7 | 263 # Set $src for standards package and $_pkg variables. |
pankso@7 | 264 if [ "$WANTED" = "" ]; then |
pankso@7 | 265 src=$WOK/$PACKAGE/$PACKAGE-$VERSION |
pankso@7 | 266 _pkg=$src/_pkg |
pankso@7 | 267 fi |
pankso@7 | 268 if [ ! "$SOURCE" = "" ]; then |
pankso@7 | 269 src=$WOK/$PACKAGE/$SOURCE-$VERSION |
pankso@7 | 270 _pkg=$src/_pkg |
pankso@7 | 271 fi |
pankso@7 | 272 cd $WOK/$PACKAGE |
pankso@7 | 273 # Execute genpkg_rules to build the package. |
pankso@7 | 274 echo "" |
pankso@7 | 275 echo "Bulding $PACKAGE with the receipt..." |
pankso@7 | 276 echo "================================================================================" |
pankso@7 | 277 if [ `cat $RECEIPT | grep genpkg_rules` ]; then |
pankso@7 | 278 # Log process. |
pankso@7 | 279 echo "executing genpkg_rules" >> $LOG |
pankso@7 | 280 genpkg_rules |
pankso@7 | 281 else |
pankso@7 | 282 echo "No package rules to gen $PACKAGE..." |
pankso@7 | 283 fi |
pankso@7 | 284 # Copy the receipt and description (if exist) in |
pankso@7 | 285 # the binary package tree. |
pankso@7 | 286 cd $WOK/$PACKAGE |
pankso@7 | 287 echo -n "Copying the receipt..." |
pankso@7 | 288 cp receipt taz/$PACKAGE-$VERSION |
pankso@7 | 289 status |
pankso@7 | 290 if [ -f "description.txt" ]; then |
pankso@7 | 291 echo -n "Copying the description file..." |
pankso@7 | 292 cp description.txt taz/$PACKAGE-$VERSION |
pankso@7 | 293 status |
pankso@7 | 294 fi |
pankso@7 | 295 # Creat the files.list by redirecting find outpout. |
pankso@7 | 296 echo -n "Creating the list of files..." |
pascal@15 | 297 cd taz/$PACKAGE-$VERSION |
pascal@13 | 298 LAST_FILE="" |
pascal@15 | 299 ( find fs -print; echo ) | while read file; do |
pascal@13 | 300 if [ "$LAST_FILE" != "" ]; then |
pascal@15 | 301 case "$file" in |
pascal@13 | 302 $LAST_FILE/*) |
pascal@15 | 303 case "$(ls -ld "$LAST_FILE")" in |
pascal@15 | 304 drwxr-xr-x\ *\ root\ *\ root\ *);; |
pascal@15 | 305 *) echo ${LAST_FILE#fs};; |
pascal@13 | 306 esac;; |
pascal@15 | 307 *) echo ${LAST_FILE#fs};; |
pascal@13 | 308 esac |
pascal@13 | 309 fi |
pascal@15 | 310 LAST_FILE="$file" |
pascal@15 | 311 done > files.list |
pankso@7 | 312 status |
pankso@7 | 313 # Build cpio archives. Find, cpio and gzip the fs, finish by |
pankso@7 | 314 # removing the fs tree. |
pankso@7 | 315 echo -n "Compressing the fs... " |
pascal@13 | 316 find fs -print | cpio -o -H newc | gzip > fs.cpio.gz && rm -rf fs |
pankso@7 | 317 echo -n "Creating full cpio archive... " |
pankso@7 | 318 find . -print | cpio -o -H newc > $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg |
pankso@7 | 319 # Restore package tree in case we want to browse it. |
pankso@7 | 320 echo -n "Restoring original package tree... " |
pascal@14 | 321 zcat fs.cpio.gz | cpio -id |
pascal@14 | 322 rm fs.cpio.gz && cd .. |
pankso@7 | 323 # Log process. |
pankso@7 | 324 echo "$PACKAGE-$VERSION.tazpkg (done)" >> $LOG |
pankso@7 | 325 echo "================================================================================" |
pankso@7 | 326 echo "Package $PACKAGE ($VERSION) generated." |
pankso@7 | 327 echo "Size : `du -sh $PACKAGES_REPOSITORY/$PACKAGE-$VERSION.tazpkg`" |
pankso@7 | 328 echo "" |
pankso@7 | 329 } |
pankso@7 | 330 |
pankso@7 | 331 ################### |
pankso@7 | 332 # Tazwok commands # |
pankso@7 | 333 ################### |
pankso@7 | 334 |
pankso@7 | 335 case "$COMMAND" in |
pankso@7 | 336 stats) |
pankso@7 | 337 # Tazwok general statistics from the config file the wok. |
pankso@7 | 338 # |
pankso@7 | 339 echo "" |
pankso@7 | 340 echo -e "\033[1mTazwok configuration statistics\033[0m |
pankso@7 | 341 ================================================================================ |
pankso@7 | 342 Wok directory : $WOK |
pankso@7 | 343 Packages repository : $PACKAGES_REPOSITORY |
pankso@7 | 344 Sources repository : $SOURCES_REPOSITORY |
pankso@7 | 345 Packages in the wok : `ls -1 $WOK | wc -l` |
pankso@7 | 346 Cooked packages : `ls -1 $PACKAGES_REPOSITORY/*.tazpkg | wc -l` |
pankso@7 | 347 ================================================================================" |
pankso@7 | 348 echo "" |
pankso@7 | 349 ;; |
pankso@7 | 350 list) |
pankso@7 | 351 # List packages in wok directory. User can specifiy a category |
pankso@7 | 352 # |
pankso@7 | 353 if [ "$2" = "category" ]; then |
pankso@7 | 354 echo -e "\033[1m\nPackages categories :\033[0m $CATEGORIES\n" |
pankso@7 | 355 exit 0 |
pankso@7 | 356 fi |
pankso@7 | 357 # Check for an asked category. |
pankso@7 | 358 if [ -n "$2" ]; then |
pankso@7 | 359 ASKED_CATEGORY=$2 |
pankso@7 | 360 echo "" |
pankso@7 | 361 echo -e "\033[1mPackages in category :\033[0m $ASKED_CATEGORY" |
pankso@7 | 362 echo "================================================================================" |
pankso@7 | 363 for pkg in $WOK/* |
pankso@7 | 364 do |
pankso@7 | 365 . $pkg/receipt |
pankso@7 | 366 if [ "$CATEGORY" == "$ASKED_CATEGORY" ]; then |
pankso@7 | 367 echo -n "$PACKAGE" |
pankso@7 | 368 echo -e "\033[24G $VERSION" |
pankso@7 | 369 packages=$(($packages+1)) |
pankso@7 | 370 fi |
pankso@7 | 371 done |
pankso@7 | 372 echo "================================================================================" |
pankso@7 | 373 echo -e "$packages packages in category $ASKED_CATEGORY.\n" |
pankso@7 | 374 else |
pankso@7 | 375 # By default list all packages and version. |
pankso@7 | 376 echo "" |
pankso@7 | 377 echo -e "\033[1mList of packages in the wok\033[0m" |
pankso@7 | 378 echo "================================================================================" |
pankso@7 | 379 for pkg in $WOK/* |
pankso@7 | 380 do |
pankso@7 | 381 . $pkg/receipt |
pankso@7 | 382 echo -n "$PACKAGE" |
pankso@7 | 383 echo -en "\033[24G $VERSION" |
pankso@7 | 384 echo -e "\033[42G $CATEGORY" |
pankso@7 | 385 packages=$(($packages+1)) |
pankso@7 | 386 done |
pankso@7 | 387 echo "================================================================================" |
pankso@7 | 388 echo -e "$packages packages avalaible in the wok.\n" |
pankso@7 | 389 fi |
pankso@7 | 390 ;; |
pankso@7 | 391 info) |
pankso@7 | 392 # Informations about package. |
pankso@7 | 393 # |
pankso@7 | 394 check_for_package_on_cmdline |
pankso@7 | 395 check_for_receipt |
pankso@7 | 396 . $WOK/$PACKAGE/receipt |
pankso@7 | 397 echo "" |
pankso@7 | 398 echo -e "\033[1mTazwok package informations\033[0m |
pankso@7 | 399 ================================================================================ |
pankso@7 | 400 Package : $PACKAGE |
pankso@7 | 401 Version : $VERSION |
pankso@7 | 402 Category : $CATEGORY |
pankso@7 | 403 Short desc : $SHORT_DESC |
pankso@7 | 404 Maintainer : $MAINTAINER" |
pankso@7 | 405 if [ ! "$WEB_SITE" = "" ]; then |
pankso@7 | 406 echo "Web site : $WEB_SITE" |
pankso@7 | 407 fi |
pankso@7 | 408 if [ ! "$DEPENDS" = "" ]; then |
pankso@7 | 409 echo "Depends : $DEPENDS" |
pankso@7 | 410 fi |
pankso@7 | 411 if [ ! "$WANTED" = "" ]; then |
pankso@7 | 412 echo "Wanted src : $WANTED" |
pankso@7 | 413 fi |
pankso@7 | 414 echo "================================================================================" |
pankso@7 | 415 echo "" |
pankso@7 | 416 |
pankso@7 | 417 ;; |
pankso@7 | 418 check-log) |
pankso@7 | 419 # We just cat the file log to view process info. |
pankso@7 | 420 # |
pankso@7 | 421 if [ ! -f "$LOG" ]; then |
pankso@7 | 422 echo -e "\nNo process log found. The package is probably not cook.\n" |
pankso@7 | 423 exit 0 |
pankso@7 | 424 else |
pankso@7 | 425 echo "" |
pankso@7 | 426 echo -e "\033[1mPackage process log for :\033[0m $PACKAGE" |
pankso@7 | 427 echo "================================================================================" |
pankso@7 | 428 cat $LOG |
pankso@7 | 429 echo "================================================================================" |
pankso@7 | 430 echo "" |
pankso@7 | 431 fi |
pankso@7 | 432 ;; |
pankso@7 | 433 search) |
pankso@7 | 434 # Search for a package by pattern or name. |
pankso@7 | 435 # |
pankso@7 | 436 if [ -z "$2" ]; then |
pankso@7 | 437 echo -e "\nPlease specify a pattern or a package name to search." |
pankso@7 | 438 echo -e "Example : 'tazwok search gcc'.\n" |
pankso@7 | 439 exit 0 |
pankso@7 | 440 fi |
pankso@7 | 441 echo "" |
pankso@7 | 442 echo -e "\033[1mSearch result for :\033[0m $2" |
pankso@7 | 443 echo "================================================================================" |
pankso@7 | 444 list=`ls -1 $WOK | grep $2` |
pankso@7 | 445 for pkg in $list |
pankso@7 | 446 do |
pankso@7 | 447 . $WOK/$pkg/receipt |
pankso@7 | 448 echo -n "$PACKAGE " |
pankso@7 | 449 echo -en "\033[24G $VERSION" |
pankso@7 | 450 echo -e "\033[42G $CATEGORY" |
pankso@7 | 451 packages=$(($packages+1)) |
pankso@7 | 452 done |
pankso@7 | 453 echo "================================================================================" |
pankso@7 | 454 echo "$packages packages found for : $2" |
pankso@7 | 455 echo "" |
pankso@7 | 456 ;; |
pankso@7 | 457 compile) |
pankso@7 | 458 # Configure and make a package with the receipt. |
pankso@7 | 459 # |
pankso@7 | 460 compile_package |
pankso@7 | 461 ;; |
pankso@7 | 462 genpkg) |
pankso@7 | 463 # Generate a package |
pankso@7 | 464 # |
pankso@7 | 465 gen_package |
pankso@7 | 466 ;; |
pankso@7 | 467 cook) |
pankso@7 | 468 # Compile and generate a package. Just execute tazwok with |
pankso@7 | 469 # the good commands. |
pankso@7 | 470 # |
pankso@7 | 471 check_root |
pankso@7 | 472 compile_package |
pankso@7 | 473 gen_package |
pankso@7 | 474 ;; |
pankso@7 | 475 cook-list) |
pankso@7 | 476 # Cook all packages listed in a file. The path to the cooklist must |
pankso@7 | 477 # be specified on the cmdline. |
pankso@7 | 478 # |
pankso@7 | 479 check_root |
pankso@7 | 480 check_for_list |
pankso@7 | 481 for pkg in $LIST |
pankso@7 | 482 do |
pankso@7 | 483 tazwok compile $pkg |
pankso@7 | 484 tazwok genpkg $pkg |
pankso@7 | 485 done |
pankso@7 | 486 ;; |
pankso@7 | 487 clean) |
pankso@7 | 488 # Clean up a package work directory. |
pankso@7 | 489 # |
pankso@7 | 490 check_for_package_on_cmdline |
pankso@7 | 491 check_for_receipt |
pankso@7 | 492 . $RECEIPT |
pankso@7 | 493 cd $WOK/$PACKAGE |
pankso@7 | 494 echo "" |
pankso@7 | 495 echo "Cleaning $PACKAGE..." |
pankso@7 | 496 echo "================================================================================" |
pankso@7 | 497 if [ -d "taz" ]; then |
pankso@7 | 498 echo -n "Removing taz files..." |
pankso@7 | 499 rm -rf taz && status |
pankso@7 | 500 fi |
pankso@7 | 501 # Remove source tree if exist. |
pankso@7 | 502 if [ -d "$PACKAGE-$VERSION" ]; then |
pankso@7 | 503 echo -n "Removing source files..." |
pankso@7 | 504 rm -rf $PACKAGE-$VERSION && status |
pankso@7 | 505 fi |
pankso@7 | 506 if [ -d "$SOURCE-$VERSION" ]; then |
pankso@7 | 507 echo -n "Removing source files..." |
pankso@7 | 508 rm -rf $SOURCE-$VERSION && status |
pankso@7 | 509 fi |
pankso@7 | 510 # Remove an envental $PACKAGE-build directory. |
pankso@7 | 511 if [ -d "$PACKAGE-build" ]; then |
pankso@7 | 512 echo -n "Removing build tree..." |
pankso@7 | 513 rm -rf $PACKAGE-build && status |
pankso@7 | 514 fi |
pankso@7 | 515 # Remove process log file. |
pankso@7 | 516 if [ -f "process.log" ]; then |
pankso@7 | 517 echo -n "Removing process log file..." |
pankso@7 | 518 rm process.log && status |
pankso@7 | 519 fi |
pankso@7 | 520 echo "$PACKAGE is clean. You can cook it again..." |
pankso@7 | 521 echo "" |
pankso@7 | 522 ;; |
pankso@7 | 523 gen-clean-wok) |
pankso@7 | 524 # Generate a clean wok from the current wok by copying all receipt |
pankso@7 | 525 # and stuff directory. |
pankso@7 | 526 # |
pankso@7 | 527 if [ -z "$2" ]; then |
pankso@7 | 528 echo -e "\nPlease specify the destination for the new clean wok.\n" |
pankso@7 | 529 exit 0 |
pankso@7 | 530 else |
pankso@7 | 531 dest=$2 |
pankso@7 | 532 mkdir -p $dest |
pankso@7 | 533 fi |
pankso@7 | 534 echo "New wok is going to : $dest" |
pankso@7 | 535 for pkg in `ls -1 $WOK` |
pankso@7 | 536 do |
pankso@7 | 537 echo "----" |
pankso@7 | 538 echo -n "Preparing $pkg..." |
pankso@7 | 539 mkdir -p $dest/$pkg |
pankso@7 | 540 status |
pankso@7 | 541 echo -n "Copying the receipt..." |
pankso@7 | 542 cp -a $WOK/$pkg/receipt $dest/$pkg |
pankso@7 | 543 status |
pankso@7 | 544 if [ -d "$WOK/$pkg/stuff" ]; then |
pankso@7 | 545 echo -n "Copying all the stuff directory..." |
pankso@7 | 546 cp -a $WOK/$pkg/stuff $dest/$pkg |
pankso@7 | 547 status |
pankso@7 | 548 fi |
pankso@7 | 549 done |
pankso@7 | 550 echo "================================================================================" |
pankso@7 | 551 echo "Clean wok generated in : $dest" |
pankso@7 | 552 echo "Packages cleaned : `ls -1 $dest | wc -l`" |
pankso@7 | 553 echo "" |
pankso@7 | 554 ;; |
pankso@7 | 555 clean-wok) |
pankso@7 | 556 # Clean all packages in the work directory |
pankso@7 | 557 # |
pankso@7 | 558 for pkg in `ls -1 $WOK` |
pankso@7 | 559 do |
pankso@7 | 560 tazwok clean $pkg |
pankso@7 | 561 done |
pankso@7 | 562 echo "================================================================================" |
pankso@7 | 563 echo "`ls -1 $WOK | wc -l` packages cleaned." |
pankso@7 | 564 echo "" |
pankso@7 | 565 ;; |
pankso@7 | 566 gen-list) |
pankso@7 | 567 # cd in the directory to creat a packages.list and the md5sum file. |
pankso@7 | 568 # Sed is used to remove all the .tazpkg extensions from the |
pankso@7 | 569 # packages.list. The directory to move in by default is the repository |
pankso@7 | 570 # if $3 is not empty cd into $3. |
pankso@7 | 571 # |
pankso@7 | 572 if [ -z "$2" ]; then |
pankso@7 | 573 PACKAGES_REPOSITORY=$PACKAGES_REPOSITORY |
pankso@7 | 574 else |
pankso@7 | 575 if [ -d "$2" ]; then |
pankso@7 | 576 PACKAGES_REPOSITORY=$2 |
pankso@7 | 577 else |
pankso@7 | 578 echo -e "\nUnable to find directory : $2\n" |
pankso@7 | 579 exit 0 |
pankso@7 | 580 fi |
pankso@7 | 581 fi |
pankso@7 | 582 cd $PACKAGES_REPOSITORY |
pankso@7 | 583 # Remove old packages.list and md5sum, it well be soon rebuild. |
pankso@7 | 584 rm -f packages.list packages.md5 |
pankso@7 | 585 echo "" |
pankso@7 | 586 echo "Repository path : $PACKAGES_REPOSITORY" |
pankso@7 | 587 echo -n "Creating the packages list... " |
pankso@7 | 588 ls -1 > /tmp/packages.list |
pankso@7 | 589 sed -i s/'.tazpkg'/''/ /tmp/packages.list |
pankso@7 | 590 status |
pankso@7 | 591 echo -n "Building the md5sum for all packages... " |
pankso@7 | 592 md5sum * > packages.md5 |
pankso@7 | 593 status |
pankso@7 | 594 mv /tmp/packages.list $PACKAGES_REPOSITORY |
pankso@7 | 595 echo "================================================================================" |
pankso@7 | 596 pkgs=`cat $PACKAGES_REPOSITORY/packages.list | wc -l` |
pankso@7 | 597 echo "$pkgs packages in the repository." |
pankso@7 | 598 echo "" |
pankso@7 | 599 ;; |
pankso@7 | 600 new-tree) |
pankso@7 | 601 # Just creat a few directories and gen a empty receipt to prepare |
pankso@7 | 602 # the creation of a new package. |
pankso@7 | 603 # |
pankso@7 | 604 check_for_package_on_cmdline |
pankso@7 | 605 if [ -d $WOK/$PACKAGE ]; then |
pankso@7 | 606 echo -e "\n$PACKAGE package tree already exist.\n" |
pankso@7 | 607 exit 0 |
pankso@7 | 608 fi |
pankso@7 | 609 echo "Creating : $WOK/$PACKAGE" |
pankso@7 | 610 mkdir $WOK/$PACKAGE |
pankso@7 | 611 cd $WOK/$PACKAGE |
pankso@7 | 612 echo -n "Preparing the receipt..." |
pankso@7 | 613 # |
pankso@7 | 614 # Default receipt begin. |
pankso@7 | 615 # |
pankso@7 | 616 echo "# SliTaz package receipt." > receipt |
pankso@7 | 617 echo "" >> receipt |
pankso@7 | 618 echo "PACKAGE=\"$PACKAGE\"" >> receipt |
pankso@7 | 619 # Finish the empty receipt. |
pankso@7 | 620 cat >> receipt << "EOF" |
pankso@7 | 621 VERSION="" |
pankso@7 | 622 CATEGORY="" |
pankso@7 | 623 SHORT_DESC="" |
pankso@7 | 624 MAINTAINER="" |
pankso@7 | 625 DEPENDS="" |
pankso@7 | 626 TARBALL="$PACKAGE-$VERSION.tar.gz" |
pankso@7 | 627 WEB_SITE="" |
pankso@7 | 628 WGET_URL="" |
pankso@7 | 629 |
pankso@7 | 630 # Rules to configure and make the package. |
pankso@7 | 631 compile_rules() |
pankso@7 | 632 { |
pankso@7 | 633 cd $src |
pankso@7 | 634 ./configure --prefix=/usr --infodir=/usr/share/info \ |
pankso@7 | 635 --mandir=/usr/share/man $CONFIGURE_ARGS |
pankso@7 | 636 make |
pankso@7 | 637 make DESTDIR=$PWD/_pkg install |
pankso@7 | 638 } |
pankso@7 | 639 |
pankso@7 | 640 # Rules to gen a SliTaz package suitable for Tazpkg. |
pankso@7 | 641 genpkg_rules() |
pankso@7 | 642 { |
pankso@7 | 643 mkdir -p $fs/usr |
pankso@7 | 644 cp -a $_pkg/usr/bin $fs/usr |
pankso@7 | 645 strip -s $fs/usr/bin/* |
pankso@7 | 646 } |
pankso@7 | 647 |
pankso@7 | 648 EOF |
pankso@7 | 649 # |
pankso@7 | 650 # Default receipt end. |
pankso@7 | 651 # |
pankso@7 | 652 status |
pankso@7 | 653 # Interactive mode, asking and seding. |
pankso@7 | 654 if [ "$3" = "--interactive" ]; then |
pankso@7 | 655 echo "Entering in interactive mode..." |
pankso@7 | 656 echo "================================================================================" |
pankso@7 | 657 echo "Package : $PACKAGE" |
pankso@7 | 658 # Version. |
pankso@7 | 659 echo -n "Version : " ; read anser |
pankso@7 | 660 sed -i s/'VERSION=\"\"'/"VERSION=\"$anser\""/ receipt |
pankso@7 | 661 # Category. |
pankso@7 | 662 echo -n "Category : " ; read anser |
pankso@7 | 663 sed -i s/'CATEGORY=\"\"'/"CATEGORY=\"$anser\""/ receipt |
pankso@7 | 664 # Short description. |
pankso@7 | 665 echo -n "Short desc : " ; read anser |
pankso@7 | 666 sed -i s/'SHORT_DESC=\"\"'/"SHORT_DESC=\"$anser\""/ receipt |
pankso@7 | 667 # Maintainer. |
pankso@7 | 668 echo -n "Maintainer : " ; read anser |
pankso@7 | 669 sed -i s/'MAINTAINER=\"\"'/"MAINTAINER=\"$anser\""/ receipt |
pankso@7 | 670 # Web site. |
pankso@7 | 671 echo -n "Web site : " ; read anser |
pankso@7 | 672 sed -i s#'WEB_SITE=\"\"'#"WEB_SITE=\"$anser\""# receipt |
pankso@7 | 673 echo "" |
pankso@7 | 674 # Wget URL. |
pankso@7 | 675 echo "Wget URL to download source tarball." |
pankso@7 | 676 echo "Example : \$GNU_MIRROR/\$PACKAGE/\$TARBALL" |
pankso@7 | 677 echo -n "Wget url : " ; read anser |
pankso@7 | 678 sed -i s#'WGET_URL=\"\"'#"WGET_URL=\"$anser\""# receipt |
pankso@7 | 679 # Ask for a stuff dir. |
pankso@7 | 680 echo -n "Do you need a stuff directory ? (y/N) : " ; read anser |
pankso@7 | 681 if [ "$anser" = "y" ]; then |
pankso@7 | 682 echo -n "Creating the stuff directory..." |
pankso@7 | 683 mkdir stuff && status |
pankso@7 | 684 fi |
pankso@7 | 685 # Ask for a description file. |
pankso@7 | 686 echo -n "Are you going to write a description ? (y/N) : " ; read anser |
pankso@7 | 687 if [ "$anser" = "y" ]; then |
pankso@7 | 688 echo -n "Creating the description.txt file..." |
pankso@7 | 689 echo "" > description.txt && status |
pankso@7 | 690 fi |
pankso@7 | 691 echo "================================================================================" |
pankso@7 | 692 echo "" |
pankso@7 | 693 fi |
pankso@7 | 694 ;; |
pankso@7 | 695 remove) |
pankso@7 | 696 # Remove a package from the wok. |
pankso@7 | 697 # |
pankso@7 | 698 check_for_package_on_cmdline |
pankso@7 | 699 echo "" |
pankso@7 | 700 echo -n "Removing $PACKAGE..." |
pankso@7 | 701 rm -rf $WOK/$PACKAGE && status |
pankso@7 | 702 echo "" |
pankso@7 | 703 ;; |
pankso@7 | 704 usage|*) |
pankso@7 | 705 # Print usage also for all unknow commands. |
pankso@7 | 706 # |
pankso@7 | 707 usage |
pankso@7 | 708 ;; |
pankso@7 | 709 esac |
pankso@7 | 710 |
pankso@7 | 711 exit 0 |