# HG changeset patch # User Christophe Lincoln # Date 1393853951 -3600 # Node ID 686faffdd9d0453c13ab098d455a532d38bb27ed # Parent 490947b1da1a8476316746eab4fe5fd217cd8f3b Handle flavor.conf and rm old libtaz.sh from ARM rootfs diff -r 490947b1da1a -r 686faffdd9d0 flavors/base/flavor.conf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flavors/base/flavor.conf Mon Mar 03 14:39:11 2014 +0100 @@ -0,0 +1,8 @@ +# SliTaz ARM Flavor configuration file. +# + +FLAVOR="base" +VERSION="20140303" +MAINTAINER="pankso@slitaz.org" +SHORT_DESC="SliTaz ARM text mode base system" +WEB_SITE="http://arm.slitaz.org" diff -r 490947b1da1a -r 686faffdd9d0 rootfs/lib/libtaz.sh --- a/rootfs/lib/libtaz.sh Mon Mar 03 13:44:20 2014 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,172 +0,0 @@ -#!/bin/sh -# -# SliTaz Base functions used from boot scripts to end user tools. Use -# gettext and not echo for messages. Keep output suitable for GTK boxes -# and Ncurses dialog. LibTaz should not depend on any configuration file. -# No bloated code here, functions must be used by at least 3-4 tools. -# -# Documentation: man libtaz or /usr/share/doc/slitaz/libtaz.txt -# -# Copyright (C) 2012 SliTaz GNU/Linux - BSD License -# - -# Internationalization. We can't export TEXTDOMAIN because this script -# includes to other scripts with other TEXTDOMAIN exported -. /usr/bin/gettext.sh - -# xgettext (from Makefile) can't extract strings from above example: -# gettext -d 'slitaz-base' 'Done' -# so, I defined own function (and added it as option to xgettext in Makefile) -lgettext() { - gettext -d 'slitaz-base' $1 -} - -# Internal variables. -okmsg="$(lgettext 'Done')" -ermsg="$(lgettext 'Failed')" -: ${okcolor=32} -: ${ercolor=31} -: ${decolor=36} - -# Parse cmdline options and store values in a variable. -for opt in "$@" -do - case "$opt" in - --*=*) export ${opt#--} ;; - --*) export ${opt#--}="yes" ;; - esac -done -[ "$HTTP_REFERER" ] && output="html" - -# Get terminal columns -get_cols() { - stty -a 2>/dev/null | head -n 1 | cut -d ";" -f 3 | awk '{print $2}' -} - -# Return command status. Default to colored console output. -status() { - local check=$? - case $output in - raw|gtk) - done=" $okmsg" - error=" $ermsg" ;; - html) - done=" $okmsg" - error=" $ermsg" ;; - *) - local cols=$(get_cols) - [ "$cols" ] || cols=80 - local scol=$(($cols - 10)) - done="\\033[${scol}G[ \\033[1;${okcolor}m${okmsg}\\033[0;39m ]" - error="\\033[${scol}G[ \\033[1;${ercolor}m${ermsg}\\033[0;39m ]" ;; - esac - if [ $check = 0 ]; then - echo -e "$done" - else - echo -e "$error" - fi -} - -# Line separator. -separator() { - local sepchar="=" - [ "$HTTP_REFERER" ] && local sepchar="
" - case $output in - raw|gtk) local sepchar="-" && local cols="8" ;; - html) local sepchar="
" ;; - *) - local cols=$(get_cols) - [ "$cols" ] || cols=80 ;; - esac - for c in $(seq 1 $cols); do - echo -n "$sepchar" - done && echo "" -} - -# New line for echo -n or gettext. -newline() { - echo "" -} - -# Display a bold message. GTK Yad: Works only in --text="" -boldify() { - case $output in - raw) echo "$@" ;; - gtk) echo "$@" ;; - html) echo "$@" ;; - *) echo -e "\\033[1m$@\\033[0m" ;; - esac -} - -# Better to keep messages unsplitted -# Example: unboldify "My pretty function ;)" -unboldify() { - case $output in - raw) echo "$@" | sed -e 's|||g;s|||g' ;; - gtk) echo "$@" ;; - html) echo "$@" | sed -e 's|||g;s|||g' ;; - *) echo -e "$(echo "$@" | sed -e 's||\\033[1m|g;s||\\033[0m|g')" ;; - esac -} - -# Usage: colorize "Message" colorNB or use --color=NB option -# when running a tool. Default to white/38 and no html or gtk. -colorize() { - : ${color=$1} - shift - local content="$@" - case $output in - raw|gtk|html) echo "$content" ;; - *) - [ "$color" ] || color=38 - echo -e "\\033[1;${color}m${content}\\033[0;39m" ;; - esac - unset color -} - -# Indent text $1 spaces. -indent() { - local in="$1" - shift - echo -e "\033["$in"G $@"; -} - -# Check if user is logged as root. -check_root() { - if [ $(id -u) != 0 ]; then - lgettext "You must be root to execute:" && echo " $(basename $0) $@" - exit 1 - fi -} - -# Display debug info when --debug is used. -debug() { - [ "$debug" ] && echo "$(colorize $decolor "DEBUG:") $1" -} - -# Gettextize yes/no. -translate_query() { - case $1 in - y) lgettext "y" ;; - Y) lgettext "Y" ;; - n) lgettext "n" ;; - N) lgettext "N" ;; - # Support other cases but keep them untranslated. - *) echo "$1" ;; - esac -} - -# Usage: echo -n "The question" && confirm -confirm() { - [ "$yes" ] && true - echo -n " ($(translate_query y)/$(translate_query N)) ? " - read answer - [ "$answer" == "$(translate_query y)" ] -} - -# Log activities. $activity should be set by the script. The log format -# is suitable for web interfaces like cook. Usage: log "String" -log() { - [ "$activity" ] || activity=/var/log/slitaz/libtaz.log - echo "$(date '+%Y-%m-%d %H:%M') : $@" >> $activity -} diff -r 490947b1da1a -r 686faffdd9d0 sat --- a/sat Mon Mar 03 13:44:20 2014 +0100 +++ b/sat Mon Mar 03 14:39:11 2014 +0100 @@ -17,6 +17,7 @@ distro="$work/distro" flavors="$work/flavors" rootfs="$distro/rootfs" +data="$distro/data" # http://mirror.slitaz.org/packages/cooking/arm/ mirror="http://cook.slitaz.org/cross/arm/packages/" @@ -37,7 +38,7 @@ mirror Download or sync the SliTaz ARM mirror $(boldify "Options:") - --spk Include Spk package manager in the distro + --spk Clean or include Spk package manager in the distro --kmap Include the system keymap config in the distro --work= Path to work dir with packages and rootfs --size= Specify optional vdisk size (default 20Mb) @@ -75,25 +76,26 @@ check_root newline && boldify "Generating SliTaz ARM distro" separator - rm -rf $distro && mkdir -p ${rootfs} + rm -rf $distro && mkdir -p ${rootfs} ${data} # Get --flavor= packages lists if [ "$flavor" ]; then echo -n "Getting $flavor packages.list..." - cp -f $flavors/$flavor/packages.list $distro 2>/dev/null + cp $flavors/$flavor/packages.list ${data} 2>/dev/null && + cp $flavors/$flavor/flavor.conf ${data} 2>/dev/null status fi # Packages - rm -f $distro/packages.full - if [ -f "$distro/packages.list" ]; then - for pkg in $(cat $distro/packages.list) + rm -f ${data}/packages.full + if [ -f "${data}/packages.list" ]; then + for pkg in $(cat ${data}/packages.list) do IFS="|" grep "^$pkg |" $work/mirror/packages.desc | while read pkg version desc do echo ${pkg}-${version}-arm.tazpkg | sed s'/ //'g \ - >> $distro/packages.full + >> ${data}/packages.full done unset IFS done @@ -104,13 +106,13 @@ echo "" && exit 1 fi echo -n "Using packages directory..." - cd $packages && ls -1 > $distro/packages.full + cd $packages && ls -1 >${data}/packages.full status fi # Deps install is not well handled by tazpkg/spk actually. # So simply install all packages and don't resolve deps. - for pkg in $(cat $distro/packages.full) + for pkg in $(cat ${data}/packages.full) do pkgdir=$(basename $pkg .tazpkg) db=${rootfs}/var/lib/tazpkg @@ -138,19 +140,24 @@ fi # Move kernel outside the distro - if [ -d "$distro/rootfs/boot" ]; then + if [ -d "$rootfs/boot" ]; then mv -f ${rootfs}/boot/linux-* ${distro}/linux-arm chmod -x ${distro}/linux-arm else - echo -n "Missing: ${rootfs}/boot"; false - status && exit 1 + echo -n "Missing Kernel directory: rootfs/boot/"; false + status fi # SLITAZ_ARCH - echo -n "Setting SliTaz arch to: arm" - sed -i s"/SLITAZ_ARCH=.*/SLITAZ_ARCH=\"arm\"/" \ - ${rootfs}/etc/slitaz/slitaz.conf - status + if [ -f "${rootfs}/etc/slitaz/slitaz.conf" ]; then + echo -n "Setting SliTaz arch to: arm" + sed -i s"/SLITAZ_ARCH=.*/SLITAZ_ARCH=\"arm\"/" \ + ${rootfs}/etc/slitaz/slitaz.conf + status + else + echo -n "Missing distro: /etc/slitaz/slitaz.conf"; false + status && exit 1 + fi # Mirror echo "$mirror" > ${rootfs}/var/lib/tazpkg/mirror @@ -161,12 +168,15 @@ mkdir -p run # Update modules.dep - . var/lib/tazpkg/installed/linux/receipt - depmod -b . ${VERSION}-slitaz + if [ -f "var/lib/tazpkg/installed/linux/receipt" ]; then + . var/lib/tazpkg/installed/linux/receipt + depmod -b . ${VERSION}-slitaz + fi # Custom rootfs: make sure all files belong to root if [ -d "$work/rootfs" ]; then - echo -n "Copying custom ARM: rootfs" + size=$(du -sh $work/rootfs | awk '{print $1}') + echo -n "Copying custom ARM rootfs: $size" tmp=$distro/tmp-$$ mkdir -p $tmp cp -r $work/rootfs/* $tmp @@ -176,11 +186,15 @@ fi # Custom flavor rootfs - if [ -d "$flavors/$flavor/rootfs" ]; then - echo -n "Copying $flavor ARM: rootfs" + if [ -f "${data}/flavor.conf" ]; then + . ${data}/flavor.conf + fi + if [ -d "$flavors/${FLAVOR}/rootfs" ]; then + size=$(du -sh $flavors/${FLAVOR}/rootfs | awk '{print $1}') + echo -n "Copying ${FLAVOR} ARM rootfs: $size" tmp=$distro/tmp-$$ mkdir -p $tmp - cp -r $flavors/$flavor/rootfs/* $tmp + cp -r $flavors/${FLAVOR}/rootfs/* $tmp chown -R root.root $tmp cp -a $tmp/* ${rootfs} && rm -rf $tmp status @@ -207,20 +221,30 @@ boldify "SliTaz ARM distro summary" separator time=$(($(date +%s) - $time)) - echo -n "Build time : " && echo "${time}s" - echo -n "Initramfs size : " && du -sh $distro/$initramfs | awk '{print $1}' - echo -n "Rootfs size : " && du -sh ${rootfs} | awk '{print $1}' - echo -n "Packages : " && ls $db/installed | wc -l + initramfs_size="$(du -sh $distro/$initramfs | awk '{print $1}')" + rootfs_size="$(du -sh ${rootfs} | awk '{print $1}')" + pkgs_count="$(ls $db/installed | wc -l)" + [ "$FLAVOR" ] && echo "Flavor name : $FLAVOR" + echo "Build time : ${time}s" + echo "Initramfs : $initramfs" + echo "Initramfs size : $initramfs_size" + echo "Rootfs size : $rootfs_size" + echo "Packages : $pkgs_count" separator && newline ;; flavors) newline - echo -n "$(boldify 'Flavor')" && indent 14 "$(boldify 'Packages')" + echo -n "$(boldify 'Flavor')" && + echo -n "$(indent 12 $(boldify 'Packages'))" + indent 24 $(boldify 'Description') separator for flavor in $(ls $flavors) do + . $flavors/$flavor/flavor.conf pkgs=$(cat $flavors/$flavor/packages.list | wc -l) - echo -n "$flavor" && indent 14 "$pkgs" + echo -n "$flavor" && + echo -n "$(indent 12 $pkgs)" && indent 24 "$SHORT_DESC" + unset SHORT_DESC done newline ;;