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