Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[EBUILD] pmg - gérer les paquets instables [MAJ-30-05-2006]
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Wed May 03, 2006 6:25 pm    Post subject: [EBUILD] pmg - gérer les paquets instables [MAJ-30-05-2006 Reply with quote

ChangeLog (dernière mise-à-jour le [30-05-2006])
révision 63 (ici présente):

  • corrigé une mauvaise mise-à-jour de la fonction split_pkg... :oops:
  • quelques corrections, à plusieurs niveaux -- pas eu le temps de tester à fond...
  • premier jet des fonctions de la version suivante:

    • recherche exhaustive des dépendances masquées/instables et inclusion automatique ou manuelle
    • affichage des USEs d'une ou de plusieurs versions d'un paquet (option -su de -U; "brutal", pour le moment...)

  • mise-à-jour des message d'aide


Note: Les prochaines versions seront publiées sur la partie "Anglaise" du forum (http://forums.gentoo.org/viewtopic.php?p=3331388#3331388) -- je placerai toutefois toujours un lien et le ChangeLog ici
La dernière version et le ebuild se trouvent aussi sur mon serveur.



Récapitulatif:
Code:

pmg <CONFIG> [OPTIONS] <ACTION> <pkg> [FLAGS]
pmg-{use,cflags,keywords,mask,unmask,provided} <ACTION> <pkg> [FLAGS]

les CONFIG sont:
-U, package.use
-K, keywords
-UM, unmask
-M, mask
-C, clfags
-P, provided

les ACTIONS sont:
-d (delete) pour effacer l'entrée
-s (show) pour l'afficher
-ss (simply show) afficher le contenu du package.* en cours
-u (update) pour mettre à jour (mpg-use -u vim -acl)
-r (replace) pour remplacer
-a (add) pour ajouter

les OPTIONS sont:
-y effectue l'opération sans confirmation
-q n'affiche que les informations essentielles et les messages d'erreur
-qq n'affiche rien (n'effectue aucune action interactive si -y n'est pas activé)
-h affiche l'aide
-V affiche les informations de version et sort
-- fin des options


------------------------

Hello!

A force d'en avoir assez de faire des echo dans les fichiers /etc/portage/package.{use,keywords,etc}, j'ai fini par écrire un script qui me permet d'y faire des modifs en une seule commande: afficher une entrée existente, la modifier, la supprimer ou la réécrire.

Je le poste ici, si ça intéresse quelqu'un, j'attends des retours avec plaisir ;)

L'utilisation est assez simple, et l'installation, un simple coup de main:
le programme principal s'appelle pmg
on en tire des liens correspondant à la config, de la sorte: "ln -s pmg pmg-use pour package.use" ... Simple, non ?
Il faut placer le fichier "messages" dans /usr/share/pmg/ ; celui-ci permet d'afficher les messages selon la localisation (français et anglais, pour le moment)

Voila!

Voici maintenant les codes:

le script principal pmg

Code:


#!/bin/bash
# distances.dbdl -- MMVI
# $Id: pmg 63 2006-05-30 16:49:36Z root $
# $Rev: 63 $
# $Author: root $
# $URL: file:///var/svn_root/admin/pmg-tools/branches/pmg-tools-br-0-29-1/pmg $
#
# pmg -- tool to manage packages in /etc/portage/config.files
# Usage: pmg <CONFIG> <ACTION> <pkg> [FLAGS]
#        pmg[-CONFIG] <action> <pkg> [FLAGS]
#
shopt -s extglob

#
# init config#
[ -f /etc/pmg/pmgrc ] && . /etc/pmg/pmgrc
[ -f $HOME/.pmgrc ] && . $HOME/.pmgrc
COLORS=${COLORS:=1}
LIBRARIES_PATH=${LIBRARIES_PATH:=/usr/share/pmg}
. $LIBRARIES_PATH/messages 2>/dev/null || { echo -ne "Error: LIBRARIES_PATH not found! Can't go on!\n"; exit 1; }
. /etc/make.globals
. /etc/make.conf
 

#set -x
#
# vars #
VERSION='0.9 # $Rev 63 $'
AUTHOR="distances -- s.distances.dbdl - at - free fr"
LICENCE=GPL
DATE=20063005

DEFAULT_ARCH=${DEFAULT_ARCH:=~x86}
DEBUG=${DEBUG:=0}

ADD_ENTRIE=0
ADD_COMMENTS=0
DELETE_CONFIG=0
SHOW_CONFIG_FILE=0
SHOW_ONLY=0
REPLACE_CONFIG=0
UPDATE_CONFIG=0
QUIET=0
REALLYQUIET=0
PKG_REPOS="null"
MIN_ARGS=1
DONT_ASK=0

# how will we speak, today?...
LG=${LANG%@*}; LG=${LG%_*}; LG=$(echo $LG | tr '[a-z]' '[A-Z]'); LG=${LG:=EN}
if [ ! "$LG" = "EN" ] && [ ! "$LG" = "FR" ]; then
   LG="EN"; fi

# this array and the VARs fallowing are used to parse valid options for programs that invoque us, as these
#+are sym. links and don't all have the same exact functions, they don't have the same exact options neither...
# the array contains all the options and their descritions (a VAR, that'll be sent to 'mess')
# the VARs below this array contain only indexes from the array that represent valid options for the invoking program
DESCRIPTIONS=(\
-d "OPT_DELETE_ENTRY" \
-s "OPT_SHOW_CONFIG" \
-r "OPT_REPLACE_CONFIG" \
-u "OPT_UPDATE_CONFIG" \
-a "OPT_ADD_ENTRY" \
-h "OPT_HELP" \
-q "OPT_BE_QUIET" \
-qq "OPT_REALLYQUIET" \
-y "OPT_DONT_ASK" \
-ss "OPT_SHOW_CONFIG_FILE" \
-c "OPT_COMMENTS" \
-V "OPT_VERSION" \
-K "OPT_KEYWORDS" \
-U "OPT_USE" \
-UM "OPT_UNMASK" \
-M "OPT_MASK" \
-C "OPT_CFLAGS" \
-P "OPT_PROVIDED" \
-su "OPT_SHOW_EUSES" \
)

VALID_FOR_all="1 3 5 9 11 13 15 17 19 21 23" # -d -s -r -a -h -q -qq -ss -c -V
VALID_FOR_keywords="$VALID_FOR_all"
VALID_FOR_use="$VALID_FOR_all 7 37"
VALID_FOR_unmask="$VALID_FOR_all"
VALID_FOR_mask="$VALID_FOR_all"
VALID_FOR_cflags="$VALID_FOR_all"
VALID_FOR_provided="${VALID_FOR_all}"
VALID_FOR_pmg="$VALID_FOR_all 7 23 25 27 29 31 33 35 37" # everything :)

#
# functions ##

# usage: version [-v|-a]
version() {
    case $1 in
   -a)
       echo "${0##*/} -- licence $LICENCE -- version $VERSION - $DATE -- $AUTHOR"
       ;;
   *)
       echo "$VERSION"
       ;;
    esac
}

usage() {
    local myuse=VALID_FOR_${ME}
    mess -e "${CY}Usage: ${0##*/} ${BL}<CONFIG> [OPTIONS] <ACTION> ${GR}PKG ${YL}[PKG_CONFIG]${NO}\n"
    local -a new_DESC
    for opt_usage in ${!myuse}
      do
      mess -e "\t"${BL}${DESCRIPTIONS[$((${opt_usage}-1))]}${NO}"\t"${CY} ${DESCRIPTIONS[$opt_usage]} ${NO}
    done
    mess -e ""
    exit 1
}

# check if options are valid for this program
# do this by parsing with the array we talked about before (DESCRIPTORS)
# usage: check_options OPT
check_options() {
    local LOPT=$1; shift
    local LLINE=$@
    local myuse=VALID_FOR_${ME}
      #-a|-s|-h|-q|-d|-r)
    case $LOPT in
      *)
      for opt in ${!myuse}
      do
      if [ x${LOPT} = x${DESCRIPTIONS[$((opt-1))]} ]; then
         return 0
         fi
      done
      return 1
      ;;
   esac
      return 0
}

# check for possible package(s) in portage repositories
# usage: c_i_p_e PKG CATEGORY
check_if_pkg_exists() {
   local LPKG=$1
   local LREPOS=$2
   local LPKG_VERSION=${3:-null}
   local LPKG_MODIF=${4:-null}
   local LPKG_REPOS="null"
   if [ "$LREPOS" = "null" -o "$LREPOS" = "" ]; then
      for ovl in ${PORTDIR} ${PORTDIR_OVERLAY}
      do
         pushd $ovl >/dev/null
         for rep in *
         do
            if [ -d ${rep}/${LPKG} ]; then
               LPKG_REPOS=${rep}
               break
            fi
         done
         popd >/dev/null
      done
      if [ ! "$LPKG_REPOS" = "null" ]; then
         PKG_REPOS=$LPKG_REPOS
         #get_ebuild $LPKG_REPOS $LPKG
         return 0
      fi
   else
      for rep in $PORTDIR $PORTDIR_OVERLAY
      do
         if [ -d ${rep%/}/${LREPOS%/}/${LPKG} ]; then
            return 0
         fi
      done
   fi
   return 1
}

# split pkg name in version, repository, etc.
# usage: split_pkg PKG (PKG not necessarilly in the form repos/pkg; can be only pkg -- for external use, however, it should be repos/pkg...)
# usage split_pkg [M][REPOS/]PKG[-VERSION] [DEST_VAR]
split_pkg() {
    local LDEST_VAR=PKG
        [ "$1" = "-d" ] && { LDEST_VAR=$2; shift 2; }
    local LUSER_PKG=${1%.ebuild}
    local LPKG=${LUSER_PKG##*/}
    local LREPOS=${LUSER_PKG%%/*}
    case $LREPOS in
        ">="*|"<="*)
        LDEST_GLE="\${LREPOS:0:2}"
                ldgle="${LDEST_VAR}_GLE"
        LDEST_NAME=${LPKG%%-[0-9]*}
        LDEST_VERSION=${LPKG/${LDEST_NAME}}
        LDEST_REPOS=${LREPOS:2}
        ;; 
        '='*)
        LDEST_GLE='='
        LDEST_NAME=${LPKG%%-[0-9]*}
        LDEST_VERSION=${LPKG/${LDEST_NAME}}
        LDEST_REPOS=${LREPOS:1}
        ;; 
        '<'*|'>'*)
        LDEST_GLE="\${LREPOS:0:1}"=
        LDEST_NAME=${LPKG%%-[0-9]*}
        LDEST_VERSION=${LPKG/${LDEST_NAME}}
        LDEST_REPOS=${LREPOS:1}
        ;; 
      *)
      LDEST_GLE=null
      LDEST_NAME=${USER_PKG##*/}
      LDEST_LNAME=$LDEST_NAME
      LDEST_NAME=${LDEST_NAME%%-[0-9]*}
      LDEST_VERSION=${LDEST_LNAME/${LDEST_NAME}}
      LDEST_REPOS=${USER_PKG%%/*}
      [ x"$LDEST_REPOS" = x"${USER_PKG}" ] && LDEST_REPOS=null
      ;;
   esac
   [ "$LDEST_GLE" == "null" ] && LDEST_GLE=""
   [ "$LDEST_VERSION" == "null" ] && LDEST_VERSION=""
   [ "$LDEST_REPOS" == "$USER_PKG" ] && LDEST_REPOS="null"
   # fill DEST_VAR
   eval $"$LDEST_VAR"_GLE=${LDEST_GLE}
   eval $"$LDEST_VAR"_REPOS=${LDEST_REPOS}
   eval $"$LDEST_VAR"_NAME=${LDEST_NAME}
   eval $"$LDEST_VAR"_VERSION=${LDEST_VERSION}
}

# calls split_pkg and chech_if_pkg_exits then build PKG var, according to which config is managed
# for exemple, package.use doesn't support [><]=repos/pkg-VERSION as a valid atom
# usage: g_r_p_n PKG
get_real_pkg_name() {
    local USER_PKG=$1
    #split PKG in PKG_VERSION, PKG_REPOS, etc.
    split_pkg $USER_PKG
    if ((SHOW_ONLY)); then
      [ ! x"${PKG_REPOS}" = x"null" ] && PKG=${PKG_GLE}${PKG_REPOS}/${PKG_NAME}${PKG_VERSION} || PKG=${PKG_NAME}${PKG_VERSION}
    elif check_if_pkg_exists $PKG_NAME $PKG_REPOS; then
      case $ME in
         use|cflags)
         # package.use don't want of a versionned package...
         # nor my hacked packaged.cflags
         PKG=${PKG_REPOS}/${PKG_NAME}
         ;;
         mask|unmask)
         PKG=${PKG_GLE}${PKG_REPOS}/${PKG_NAME}${PKG_VERSION}
         # don't need FLAGS for these ones
         USER_CFG=""
         PKG_CFG=""
         MIN_ARGS=1
         ;;
         keywords)
         PKG=${PKG_GLE}${PKG_REPOS}/${PKG_NAME}${PKG_VERSION}
         USER_CFG=${USER_CFG:=${DEFAULT_ARCH}}
         ;;
         provided)
         if [ "$PKG_VERSION" = "" ]; then
            # mess ERR_VERSION_REQUIRED FOR $LPORTAGE_CONFIG
            # exit 1
            return 1
         fi
         PKG=${PKG_REPOS}/${PKG_NAME}${PKG_VERSION}
         MIN_ARGS=1
         ;;
         *)
         PKG=${PKG_GLE}${PKG_REPOS}/${PKG_NAME}${PKG_VERSION}
         ;;
      esac
   # all found repositories are separated by spaces, then if we find one, that means there's more than one possible package...
        if [ ! "${PKG_REPOS/ /}" = "${PKG_REPOS}" ]; then
         #mess -e $RD TOO_MANY_REPOS FOR_PKG \"${NO}${GR}${USER_PKG}${NO}\":
         #for atom in $PKG_REPOS
         #do
         #   mess -e "\t${GR}${atom}/${PKG_NAME}${NO}"
         #done
         #exit 1
         return 2
      fi
    else
      #mess -e ERR_PKG_NOT_FOUND FOR_PKG ${GR}${USER_PKG}${NO}
      #exit 1
      return 3
    fi
    return 0
}

# get multiple RE lines
grep_mlines() {
    local LRE="$1"; shift
    local LFILE="$@"
    LOUT="$(sed -n -e '/^'$LRE'/ {
    /.*\"$/ !b label
    b out
    :label
    N
    /\n.*\"$/ !b label
    :out
    p
}' $LFILE)"
   if [ x"${LOUT}" = "" ]; then
      return 1
   else
       echo "$LOUT"
      return 0
   fi
return 1
}

# get package dependencies
# usage: PKG_EBUILD [DEST_VAR]
get_dependencies() {
   local LPKG_EBUILD=${1:-${PKG_EBUILD}}
   [ x"${LPKG_EBUILD}" = x"" ] && return 1
   local LDEST_VAR=${2:-${PKG_DEPEND}}
   local LMDEPENDS=""
   if LMDEPENDS="$(grep_mlines DEPENDS ${LPKG_EBUILD})"; then
      LMDEPENDS=${LMDEPENDS/#DEPENDS=\"}
      LMDEPENDS=${LMDEPENDS/%\"}
   fi
   echo $LMDEPENDS
}

check_dependencies() {
   return 0
}

# get best ebuild for PKG
# usage: get_ebuild [-d DEST_VAR] [PKG_REPOS [PKG_NAME [PKG_VERSION [PKG_LGE]]]]
get_ebuild() {
   local LDEST_VAR=PKG
   [ "$1" = "-d" ] && { LDEST_VAR=$2; shift 2; }
   local LPKG_REPOS=${1:-${PKG_REPOS}}
   local LPKG_NAME=${2:-${PKG_NAME}}
   local LPKG_VERSION=${3:-${PKG_VERSION}}
   local LPKG_LGE=${4:-${PKG_LGE}}
   local LEBUILD=$(equery w ${LPKG_GLE}${PKG_REPOS}${PKG_NAME}${PKG_VERSION})
   # equery doesn't return error code... Why, but why
   [ x"${LEBUILD%%.ebuild}" = x"${LEBUILD}" ] && LEBUILD=""
   eval $"$DEST_VAR"_EBUILD=\$LEBUILD
}

# create backup of given or current config file
# usage: backup_config [PORTAGE_CONFIG]
backup_config() {
    LCFG_FILE=${1:-${LPORTAGE_CONFIG}}
    \cp -f ${LCFG_FILE} $LCFG_FILE.bak && return 0 || cant_write
}

# get values for pkg withing actual or given config file
# usage: get_pkg_config PKG [CONFIG_FILE]
get_pkg_config() {
    local LPKG=${1:-${PKG}}; shift
   local LPKG_REPOS=${PKG_REPOS}
    local LLPORTAGE_CONFIG=${@:-${LPORTAGE_CONFIG}}
   local LPATTERN
   #split_pkg LPKG LDEST_PKG
   # temporary solution while split_pkg's not achieved
   if [ ! "$PKG_REPOS" = "" -a ! "$PKG_REPOS" = "null" ]; then
      LPATTERN=${LPKG_REPOS}/${LPKG/${LPKG_REPOS}\/}
      if [ ! "$PKG_GLE" = "" -a ! "$PKG_GLE" = "null" ]; then
         LPATTERN="${PKG_GLE}${LPATTERN/${PKG_GLE}}"
      fi
   else
      if [ ! "$PKG_GLE" = "" -a ! "$PKG_GLE" = "null" ]; then
         LPATTERN="^${PKG_GLE}.*/${LPKG}"
      else
         LPATTERN="^.*/${LPKG}"
      fi
   fi
   if [ ! "$PKG_VERSION" = "" ]; then
      LPATTERN=${LPATTERN/${PKG_VERSION}}${PKG_VERSION}
   fi
   ((DEBUG)) && echo $LPATTERN
    # if something's found for PKG, then PKG_CFG contains something
    if PKG_CFG=$(grep -w "${LPATTERN}" $LLPORTAGE_CONFIG); then
      ((DEBUG)) && echo -ne "first found:\n$PKG_CFG\n"
      LPKG=${PKG_CFG%% *}; PKG=$LPKG
      PKG_CFG=${PKG_CFG/$LPKG}; PKG_CFG=${PKG_CFG/# }; return 0
   # didn't find something? try to expand a little bit...
   elif PKG_CFG=$(grep -w "${LPATTERN}.*[0-9] " $LLPORTAGE_CONFIG); then
      ((DEBUG)) && echo -ne "second found:\n$PKG_CFG\n"
      LPKG=${PKG_CFG%% *}; PKG=$LPKG
      PKG_CFG=${PKG_CFG/$LPKG}; PKG_CFG=${PKG_CFG/# }; return 0
   # really found nothing ? (package.provided case)
    elif PKG_CFG=$(grep -w "${LPATTERN}" $LLPORTAGE_CONFIG); then
      ((DEBUG)) && echo -ne "first found:\n$PKG_CFG\n"
      LPKG=${PKG_CFG%% *}; PKG=$LPKG
      PKG_CFG=${PKG_CFG/$LPKG}; PKG_CFG=${PKG_CFG/# }; return 0
   elif PKG_CFG=$(grep "${LPKG}.*\$" $LLPORTAGE_CONFIG); then
      ((DEBUG)) && echo -ne "third found:\n$PKG_CFG\n"
      LPKG=${PKG_CFG%% *}; PKG=$LPKG
      PKG_CFG=${PKG_CFG/$LPKG}; PKG_CFG=${PKG_CFG/# }; return 0
   fi
   ((DEBUG)) && echo "lpkg.config: $(grep "${LPKG}" $LLPORTAGE_CONFIG)"
   return 1
}

#
# usage: show_ebuild_uses [ -d DEST_VAR ] PKG_ALL
show_ebuild_uses() {
   local LDEST_VAR=PKG
   [ "$1" = "-d" ] && { DEST_VAR=$2; shift 2; }
   local LPKG_ALL=$1
   local LPKG_EUSES
   LPKG_EUSES="$(equery -N uses -a $LPKG_ALL)"
   eval $"$LDEST_VAR"_EUSES=\$LPKG_EUSES
}

# show actual or given config with plenty of colors :)
# usage: show_config [-i|-e] [PKG [PKG_CFG]]
show_config() {
    [ "$1" = "-e" -o "$1" = "-i" ] && { local MOPT=$1; shift; }
    local LPKG=${1:-${PKG}}; shift
    local LPKG_CFG=${@:-${PKG_CFG}}
   use_msg=$(echo " $LPKG_CFG" | sed -e "s:\([+\ ][a-z]*[-]*[0-9a-z]*\):"$BL"\1"$NO":g;s:\(\ -[a-z]*[-]*[0-9a-z]*\):"$RD"\1"$NO":g;s:~amd64\|~hppa\|~ia64\|~mips\|~ppc\|~ppc64\|~sparc\|~x86\|\-\*\|~\*:${RD}&${NO}:g;s:\ \+: :g;s:^\ ::;s:\ $::")
    mess $MOPT "${GR}${LPKG}${NO}${use_msg}"
}

# here we are, the big stuff!
update_config() {
   # is there really a change ?
    if [ ! x${USER_CFG// } = x${PKG_CFG// } ]; then
   local NEW_PKG_CFG=" $PKG_CFG "

        # look inside the users given flags
   for u in $USER_CFG
     do
     local tmp_NP=$NEW_PKG_CFG
     local REPLACED=0
          # to manage signs +- and space in front of flag
     usign="${u:0:1}"
     case $usign in
              +)
        u=${u:1}
        usign=""
        ;;
         -)
        u=${u:1}
        usign="-"
        ;;
         *)
        usign=""
        ;;
     esac

     # do we have a "no sign" in USEs matching our FLAG?
     if [ ! "${tmp_NP}" = "${NEW_PKG_CFG// ${u} }" ]; then
         # if then, is our $sign$flag is the same ?
         if [ "${tmp_NP}" = "${NEW_PKG_CFG// ${u} / ${usign}${u} }" ]; then
        # yes, it is... No change, then
        REPLACED=1
         else
        # ok, let me put my sign into you :/
        NEW_PKG_CFG=${NEW_PKG_CFG// ${u} / ${usign}${u} }; REPLACED=1; fi
     fi
     # or do we have a sign ?
       if ((!$REPLACED)) && [ ! "${tmp_NP}" = "${NEW_PKG_CFG// [-+]${u} }" ]; then
         if [ "${tmp_NP}" = "${NEW_PKG_CFG// [-+]${u} / ${usign}${u} }" ]; then
        REPLACED=1
         else
        # let's exchange signs, together...
        NEW_PKG_CFG=${NEW_PKG_CFG// [-+]${u} / ${usign}${u} }; REPLACED=1; fi
     fi
     if ((! $REPLACED)) && [ x"${NEW_PKG_CFG// }" = x"${tmp_NP// }" ]; then
         NEW_PKG_CFG="${NEW_PKG_CFG/% } ${usign}${u/# }"; fi
   done
   # has something changed?
   if [ ! x"${NEW_PKG_CFG// }" = x"${PKG_USE// }" ]; then
            # question users about their real motivations...
       if ((! $DONT_ASK)); then
      mess -i ABOUT_TO_UPDATE FOR_PKG ${GR}${PKG} IN ${YL}${LPORTAGE_CONFIG}${NO}"\n" FROM
      show_config -i
      mess -i TO
      show_config -i $PKG $NEW_PKG_CFG
      if ! ask_user; then mess -e ERR_ABORTED_BY_USER; exit 1; fi
       fi
            # make a safety backup
       backup_config
            # sed here is much more efficient
       sed -i "s:${PKG_CFG}:${NEW_PKG_CFG/# }:" $LPORTAGE_CONFIG >/dev/null || cant_write
       mess CONFIG_CHANGED FOR_PKG ${GR}$PKG${NO}
      fi
   else
      mess NOTHING_TO_CHANGE FOR_PKG ${GR}${PKG} IN ${YL}${LPORTAGE_CONFIG}${NO}
    fi

}

# the easy-with-sed-in-place replace string function
replace_config() {
    if [ ! x${USER_CFG// } = x${PKG_CFG// } ]; then
      if ((! $DONT_ASK)); then
         mess -e ABOUT_TO_REPLACE ${GR}${PKG}${NO}
         show_config
         mess -e FROM
         mess -e ${YL}${LPORTAGE_CONFIG}
         mess -e TO
         show_config $PKG $USER_CFG
         if ! ask_user; then
            mess ERR_ABORTED_BY_USER && exit 1
         fi
      fi
      backup_config
      sed -i "s:^"$PKG".*$:${PKG} ${USER_CFG}:" $LPORTAGE_CONFIG || cant_write
      mess CONFIG_CHANGED FOR_PKG ${GR}$PKG"\n"
   else
      mess NOTHING_TO_CHANGE FOR_PKG ${GR}${PKG} IN ${YL}${LPORTAGE_CONFIG}${NO}
      exit 0
   fi
}

# and the real-still-with-sed-easy delete function
delete_config() {
    if ((! $DONT_ASK)); then
   mess -e ABOUT_TO_DELETE ${GR}${PKG} FROM ${YL}${LPORTAGE_CONFIG}${NO}
   if ! ask_user; then mess ERR_ABORTED_BY_USER; exit 1; fi
    fi
    backup_config
    sed -i 's:^'$PKG'.*$::;/^$/ d' $LPORTAGE_CONFIG >/dev/null || cant_write
    show_config
    mess HAS_BEEN_DELETED FROM ${YL}${LPORTAGE_CONFIG}${NO}
}

# this one is so easy it does even not use sed :)
# usage add_entrie [PKG[PKG_CFG]]
add_entrie() {
    local LPKG=${1:-${PKG}}; shift
    local LUSER_CFG=${@:-${USER_CFG}}
    echo -ne "${LPKG} ${LUSER_CFG}\n" >> $LPORTAGE_CONFIG || cant_write
    mess ${GR}${LPKG} HAS_BEEN_ADDED IN ${YL}${LPORTAGE_CONFIG}${NO}
}

# oops... some kinda write access problem!... Are you root?...
cant_write() {
    mess -e ERR_CANT_WRITE_TO_CONFIG ${YL}${LPORTAGE_CONFIG}${NO}
    exit 1
}

# ask only one but strict thing: are you still ok ?
ask_user() {
    ((REALLYQUIET)) && return 1
    local LMSG=$(mess -i REALLY_WANNA_DO_THAT)
    echo -ne ${LMSG}
    resp='N'; read resp
    [ "$resp" = "Y" -o "$resp" = "y" ] && return 0
    return 1
}
   
#
# main ############################

#
# init ##

# first of all,
# tell me my name, I'll tell you what I'll manage...
ME=${0##*/}; ME=${ME##*-}
((DEBUG)) && echo "me: $ME"
if [ x"${0##*/}" = x"${ME}" ]; then
   ((DEBUG)) && echo "looking for my name..."
   unset ME
   # parse command line options
   case $1 in
      -U|--use|use)
      ME=use
      shift
      ;;
      -K|--keywords|--keyword|--keywor|--keywo|--keyw|--key|key)
      ME=keywords
      shift
      ;;
      -C|[--]cflags|[--]cflag|[--]cfla|[--]cfl)
      ME=cflags
      shift
      ;;
      -UM|--unmask|--unmas|--unma|--unm)
      ME=unmask
      shift
      ;;
      -M|--mask|--mas)
      ME=mask
      shift
      ;;
      -P|--provided|--provide|--provid|--provi|--prov|--pro)
      ME=provided
      shift
      ;;
      -h|--help)
      ME=pmg
      usage
      shift
      ;;
      -V)
      version
      shift
      exit 0
      ;;
      --version|--versio|--versi|--vers|--ver)
      version -a
      shift
      exit 0
      ;;
   esac
fi

# I feel like I'm nobody...
[ -z $ME ] && { mess -e ERR_MISSING_CONFIG; ME=pmg; usage; }

PORTAGE_CONFIG=${PORTAGE_CONFIG:=/etc/portage}
case $ME in
   provided)
   LPORTAGE_CONFIG=${PORTAGE_CONFIG}/profile/package.${ME}
   ;;
   *)
   LPORTAGE_CONFIG=${PORTAGE_CONFIG}/package.${ME}
   ;;
esac

# check if ACTION is valid
i=0; END_OPTIONS=0
while [ $i -lt $# ] || ((! $END_OPTIONS))
do
   # the check option will let us know if given arguments are corrects
   case $1 in [a-z]*|'<='[a-z]*|'>='[a-z]*|'='[a-z]*)break;;esac
   if check_options $1; then
      case $1 in
         -y) DONT_ASK=1; shift;;
         -h) usage;;
         -su) SHOW_EUSES=1; shift; MIN_ARGS=1;;
         -ss) cat $LPORTAGE_CONFIG; exit 0;;
         -s) SHOW_ONLY=1; shift;;
         -r) REPLACE_CONFIG=1;MIN_ARGS=2;shift;;
         -u) UPDATE_CONFIG=1;MIN_ARGS=2;shift;;
         -d) DELETE_CONFIG=1;shift;;
         -q) QUIET=1;shift;;
         -qq) REALLYQUIET=1;shift;;
         -c) ADD_COMMENTS=1; shift; MIN_ARGS=1;;
         -a) ADD_ENTRIE=1; MIN_ARGS=2
         case $ME in
            unmask|mask|keywords|provided) MIN_ARGS=1
         esac
         shift
         ;;
         -V)
         version
         shift
         exit 0
         ;;
         --version|--versio|--versi|--vers|--ver)
         version -a
         shift
         exit 0
         ;;
         --) END_OPTIONS=1; shift;;
         *) END_OPTIONS=1; break;;
         #'.'[a-z]|'>='[a-z]*|'<='[a-z]*|'='[a-z]*) END_OPTIONS=1; break;;
         #*)
         #    mess -e ERR_MISSING_ACTION; usage;;
      esac
   else
      usage
   fi
done

# MIN_ARGS is 1 by default; however, some options, like the '-r' one, need at least two arguments to work
# this is done by the case-select, just up-there
[ -z "$1" ] && { mess -e ERR_MISSING_PKG; usage; }
[ $# -lt $MIN_ARGS ] && { mess -e ERR_MISSING_FLAGS; usage; }

USER_PKG=$1
shift
USER_CFG=$@

#get_real_pkg_name $USER_PKG
get_real_pkg_name $USER_PKG
resp=$?
if ! ((ADD_COMMENTS)); then
   case $resp in
      1)
      mess ERR_VERSION_REQUIRED FOR $LPORTAGE_CONFIG
      exit 1
      ;;
      2)
      mess -e $RD TOO_MANY_REPOS FOR_PKG \"${NO}${GR}${USER_PKG}${NO}\":
      for atom in $PKG_REPOS
      do
         mess -e "\t${GR}${atom}/${PKG_NAME}${NO}"
      done
      exit 1
      ;;
      3)
      mess -e ERR_PKG_NOT_FOUND FOR_PKG ${GR}${USER_PKG}${NO}
      exit 1
      ;;
      *)
      ((DEBUG)) && echo "autre sortie ($?)"
      ;;
   esac
fi
# in the check down-there, SHOW_ONLY is absent as it is the default
# that means one can use pmg-use vim,
# it'll show the config for vim
# ADD_ENTRIE is both in pkg_cfg found and not found, to check config's not already present
if get_pkg_config $PKG && ! ((ADD_COMMENTS)) && ! ((SHOW_EUSES)); then
   # we check that only one config exists for that package...
   if [ $(echo "$PKG_CFG" | wc -l) -gt 1 ] || [ $(echo "$PKG" | wc -l) -gt 1 ]; then
      USER_PKG=${USER_PKG//.\*}
      mess -e ERR_TOO_MANY_PKG FOR_REQUEST ${YL}${USER_PKG}${NO}:"\n${PKG} ${PKG_CFG//${USER_PKG}/${RD}${USER_PKG}${NO}}";  exit 1; fi
   if ((ADD_ENTRIE)); then
      mess -e ERR_PKG_EXISTS ${GR}$PKG IN ${YL}${LPORTAGE_CONFIG}${NO} ; exit 1
   elif ((UPDATE_CONFIG)); then
      update_config $PKG "$PKG_CFG" || exit 1
   elif ((REPLACE_CONFIG)); then
      replace_config $PKG "$PKG_CFG" || exit 1
   elif ((DELETE_CONFIG)); then
      delete_config $PKG "$PKG_CFG" || exit 1
   else
      # default -- show_config
      mess CONFIG_FOUND FOR_REQUEST ${GR}${PKG} IN ${YL}${LPORTAGE_CONFIG}${NO}:
      show_config -i ${PKG} "$PKG_CFG" && exit 0
   fi
elif ((ADD_COMMENTS)); then
   add_entrie "# COMMENT " "$USER_PKG $USER_CFG" || exit 1
elif ((SHOW_EUSES)); then
   mess MSG_PLEASE_WAIT
   if ! show_ebuild_uses ${PKG_GLE}${PKG_REPOS}/${PKG_NAME}${PKG_VERSION}; then
      mess ERR_EQUERY
   else
      echo "$PKG_EUSES"
   fi
elif ((ADD_ENTRIE)); then
   if ! check_dependencies; then
      mess DEPENDENCIES_FOUND
   fi
   add_entrie $PKG "$USER_CFG" || exit 1
else
   mess ERR_CONFIG_NOT_FOUND IN ${YL}${LPORTAGE_CONFIG} FOR_PKG ${GR}$PKG${NO}
   exit 1
fi

exit 0
bye! bye!



la bibliothèque "messages" (à placer dans /usr/share/mpg)

Code:


#!/bin/bash
# distances.dbdl -- MMVI
# $Author: root $
# $Id: messages 61 2006-05-30 16:50:10Z root $
# $Rev: 61 $
# $URL: file:///var/svn_root/admin/pmg-tools/branches/pmg-tools-br-0-29-1/messages $

# localized messages and some colors
if ((COLORS)); then
NO=$'\x1b[0;0m'
BR=$'\x1b[0;01m'
RD=$'\x1b[31;01m'
GR=$'\x1b[32;01m'
YL=$'\x1b[33;01m'
BL=$'\x1b[34;01m'
FC=$'\x1b[35;01m'
CY=$'\x1b[36;01m'
fi

LG_VARS=(\
"BY" \
"IN" \
"FOR" \
"FOR_PKG" \
)

EN_VARS=(\
"by" \
"in" \
"for" \
"for package" \
)

FR_VARS=(\
"par" \
"dans" \
"pour" \
"pour le paquet" \
)

index_of() {
   imax=${#LG_VARS[@]}
   [ -z $1 ] && return 1
   XVAR=${1}
   for ((i=0; i<imax;i++))
   do
      if [ "$XVAR" = "${LG_VARS[$i]}" ]; then
         echo $i
         return 0
      fi
   done
   return 1
}

lg_mess() {
local ERROR=0 INFO=0
local msg show_msg
case "$1" in
   error|-e) ERROR=1; shift;;
   infos|-i) INFO=1; shift;;
esac

if ((INFO)) || ((! QUIET)) || ((ERROR)); then
   if ((! REALLYQUIET)); then
      for m in $@
      do
         #if [ ! x"${!msg}" = x"" ]; then
         if idx=$(index_of $m); then
            msg="${LG}_VARS[$idx]"
            if [ ! "${msg}" = "" ]; then
               if ((COLORS)); then
                  case $m in
                     OPT_*) msg="${CY}${!msg}${NO}";;
                     ERR_*|WARNING) msg="${RD}${!msg}${NO}";;
                     ABOUT_*) msg="${RD}${!msg}${NO}";;
                     *) msg="${CY}${!msg}${NO}";;
                  esac
               else
                  msg="${!msg}"
               fi
               [ x"$show_msg" = x"" ] && show_msg="${msg}" || show_msg="${show_msg} ${msg}"
            else
               [ x"$show_msg" = x"" ] && show_msg="${1}" || show_msg="${show_msg} ${1}"
            fi
         fi
         shift
      done
   fi
fi

if ((! REALLYQUIET)); then
   if ((ERROR)); then
      echo -ne "${show_msg}\n" >&2
   elif ((INFO)) || ((!QUIET)); then
      echo -ne "${show_msg}\n"
   fi
fi
}


# EN -- English
EN_BY="by"
EN_IN="in"
EN_FOR="for"
EN_FOR_PKG="for package"
EN_FOR_REQUEST="for request"
EN_TO="to"
EN_WARNING="Warning!"
EN_ERR_CONFIG_NOT_FOUND="Config not found"
EN_ERR_BAD_EXEC="Please do not use ${0##*/} directly; use one of ${0##*/}-{use,package,mask,...} instead."
EN_ERR_CANT_WRITE_TO_CONFIG="Can't write in config file"
EN_ERR_PKG_NOT_FOUND="No valid package were found in portage tree"
EN_ERR_TOO_MANY_REPOS="Many reposotories were found"
EN_ERR_PKG_EXISTS="Package already exists"
EN_ERR_TOO_MANY_PKG="Many entries found"
EN_ERR_ABORTED_BY_USER="Aborted by user"
EN_ERR_MISSING_CONFIG="Target config missing"
EN_ERR_MISSING_ACTION="Action parameter missing"
EN_ERR_MISSING_PKG="Missing package name"
EN_ERR_MISSING_FLAGS="Missing flags parameters"
EN_ERR_VERSION_REQUIRED="Version required"
EN_CONFIG_FOUND="Found config"
EN_CONFIG_CHANGED="Congiguration changed with success"
EN_FROM="from"
EN_NOTHING_TO_CHANGE="Nothing to change"
EN_HAS_BEEN_DELETED="has been deleted"
EN_HAS_BEEN_ADDED="has been added"
EN_OPT_DELETE_ENTRY="Delete entrie from config file"
EN_OPT_SHOW_CONFIG="Show actual config for PKG"
EN_OPT_REPLACE_CONFIG="Replace actual config with PKG_CFG"
EN_OPT_UPDATE_CONFIG="Update config after PKG_CFG"
EN_OPT_ADD_ENTRY="Add new entrie to config"
EN_OPT_HELP="Show this help"
EN_OPT_DONT_ASK="Perform actions without prompting"
EN_OPT_REALLYQUIET="Print nothing -- Warning: if -a (don't ask) is not set, won't perform any action!"
EN_OPT_BE_QUIET="Execute actions silently, only show errors"
EN_OPT_SHOW_CONFIG_FILE="Show config file and exit"
EN_OPT_VERSION="Show version informations"
EN_OPT_USE="manage package.use"
EN_OPT_UNMASK="manage package.unmask"
EN_OPT_MASK="manage package.mask"
EN_OPT_CFLAGS="manage package.cflags"
EN_OPT_KEYWORDS="manage package.keywords"
EN_OPT_PROVIDED="manage package.provided"
EN_ABOUT_TO_DELETE="Config will be deleted"
EN_ABOUT_TO_REPLACE="Config will be replaced"
EN_ABOUT_TO_UPDATE="Config will be updated"
EN_MSG_PLEASE_WAIT="Please, wait while processing..."
EN_REALLY_WANNA_DO_THAT="Are you sure you wan't to perform this action ? [N/y]"


# FR -- Français
FR_BY="par"
FR_IN="dans"
FR_FOR="pour"
FR_FROM="de"
FR_TO="vers"
FR_WARNING="Attention!"
FR_FOR_PKG="pour le paquet"
FR_FOR_REQUEST="pour la recherche"
FR_ERR_CONFIG_NOT_FOUND="Aucune configuration trouvée"
FR_ERR_PKG_NOT_FOUND="Aucun paquet trouvé dans l'arbre portage"
FR_ERR_TOO_MANY_REPOS="Plusieurs paquets on été trouvés"
FR_ERR_CANT_WRITE_TO_CONFIG="Ne peut pas écrire dans le fichier de configuration"
FR_ERR_ABORTED_BY_USER="Opération interrompue par l'utilisateur!"
FR_ERR_PKG_EXISTS="Le paquet existe déjà"
FR_ERR_TOO_MANY_PKG="Plusieurs entrées existent"
FR_ERR_MISSING_CONFIG="Configuration cible manquante"
FR_ERR_MISSING_ACTION="Paramètres d'action manquants pour la commande"
FR_ERR_MISSING_PKG="Nom du paquet manquant"
FR_ERR_MISSING_FLAGS="Paramètres de configuration manquants"
FR_ERR_VERSION_REQUIRED="Une version est requise"
FR_CONFIG_FOUND="Configuration trouvée"
FR_CONFIG_CHANGED="La configuration a été changée avec succès"
FR_NOTHING_TO_CHANGE="Rien à modifier"
FR_HAS_BEEN_DELETED="a été effacé"
FR_HAS_BEEN_ADDED="a été ajouté"
FR_OPT_DELETE_ENTRY="Effacer l'entrée du fichier de configuration"
FR_OPT_SHOW_CONFIG="Affiche la configuration actuelle du paquet"
FR_OPT_REPLACE_CONFIG="Remplace la configuration actuelle par PKG_CFG"
FR_OPT_UPDATE_CONFIG="Modifie la configuration actuelle selon PKG_CFG"
FR_OPT_ADD_ENTRY="Ajoute une nouvelle entrée dans la configuration"
FR_OPT_HELP="Affiche cet écran"
FR_OPT_VERSION="Affiche les informations de version"
FR_OPT_DONT_ASK="Effectue les actions sans confirmation"
FR_OPT_BE_QUIET="Exécute les actions silencieusement, n'affiche que les erreurs"
FR_OPT_REALLYQUIET="N'affiche absolument aucune sortie -- Attention: si -y (\"sans confimation\") n'est pas activé, n'effectue aucune action!"
FR_OPT_SHOW_CONFIG_FILE="Affiche le fichier de configuration en cours"
FR_OPT_USE="gère package.use"
FR_OPT_UNMASK="gère package.unmask"
FR_OPT_MASK="gère package.mask"
FR_OPT_CFLAGS="gère package.cflags"
FR_OPT_KEYWORDS="gère package.keywords"
FR_OPT_PROVIDED="gère package.provided"
FR_ERR_BAD_EXEC="Veuillez ne pas utiliser ${0##*/} directement: utilisez plutôt l'un des ${0##*/}-{use,package,mask,...}."
FR_ABOUT_TO_DELETE="La configuration va être effacée"
FR_ABOUT_TO_REPLACE="La configuration va être écrasée"
FR_ABOUT_TO_UPDATE="La configuration va être modifiée"
FR_MSG_PLEASE_WAIT="Veuillez patienter..."
FR_REALLY_WANNA_DO_THAT="Voulez-vous poursuivre ? [N/y] \"y\" pour \"oui\""


# Show localized messages
# usage: mess [-e] [LOCALE_VAR] [text]
# -e: show message despite of QUIET but not of REALLYQUIET (use to print errors)
# ex. mess Attention: PKG_NOT_FOUND FOR_PKG $PKG

messinfo() { mess info $@; }
messerror() { mess error $@; }
mess() {
    local ERROR=0 INFO=0
    local msg show_msg
    case "$1" in
   error|-e) ERROR=1; shift;;
   infos|-i) INFO=1; shift;;
    esac
   
    if ((INFO)) || ((! QUIET)) || ((ERROR)); then
   if ((! REALLYQUIET)); then
       for m in $@
         do
         msg="${LG}_$m"
         if [ ! x"${!msg}" = x"" ]; then
          if ((COLORS)); then
            case $m in
           OPT_*) msg="${CY}${!msg}${NO}";;
           ERR_*|WARNING) msg="${RD}${!msg}${NO}";;
           ABOUT_*) msg="${RD}${!msg}${NO}";;
           *) msg="${CY}${!msg}${NO}";;
            esac
        else
            msg="${!msg}"
        fi
        [ x"$show_msg" = x"" ] && show_msg="${msg}" || show_msg="${show_msg} ${msg}"
         else
        [ x"$show_msg" = x"" ] && show_msg="${1}" || show_msg="${show_msg} ${1}"
         fi
         shift
       done
   fi
    fi

    if ((! REALLYQUIET)); then
   if ((ERROR)); then
       echo -ne "${show_msg}\n" >&2
   elif ((INFO)) || ((!QUIET)); then
       echo -ne "${show_msg}\n"
   fi
    fi
}



Well, j'espère que ça servira à quelqu'un :?:


-------------------
ChangeLog (dernière mise-à-jour le [20-05-2006])
révision 60 (ici présente):

  • quelques corrections, à plusieurs niveaux -- pas eu le temps de tester à fond...
  • premier jet des fonctions de la version suivante

    • recherche exhaustive des dépendances et inclusion automatique ou manuelle
    • affichage des USEs d'une ou de plusieurs versions d'un paquet (option -su de -U; "brutal", pour le moment...)

  • mise-à-jour des message d'aide


révision 57 (13-05-2006):

  • ajout du support pour package.provided (-P ou pmg-provided)
  • show-config (-s): correction de quelques effets de bord dûs aux expressions régulières; la recherche porte d'abord sur les paquets lorsqu'aucune expression régulière n'est donnée -- semble fonctionner correctement maintenant
  • simplification de l'affichage de sortie (suppression des messages intempestifs récapitulant les modifications)
  • mise-à-jour du message d'aide


révision 48:

  • lors d'un ajout dans keywords (pmg -K -a pkg), il n'est plus nécessaire de préciser l'architecture: par défaut, ~x86 ou la variable DEFAULT_ARCH dans /etc/pmg/pmgrc
  • show-config (-s) ne vérifie plus au préalable l'existence du packet dans l'arbre portage, mais seulement dans le fichier de config
  • show-config (-s) recherche désormais des valeurs selon des expressions régulières et ne se limite plus aux noms de paquets
    Code:

    ~# pmg-use -s ssl
    cherchera d'abord ssl, puis .*ssl.* si ssl n'est pas trouvé
    ~# pmg-use -s .*ssl.*
    cherchera tout ce qui contient ssl

  • la sortie en erreur lors du lancement (problèmes de paramètres) est un plus précise
  • affichage les informations de version avec -V ou --version
  • les sorties sont plus respectueuses des choix de silence (-q) et de tranquillité (-qq) de l'utilisateur
  • la mise-à-jour (-u) ne crée plus de sauvegardes intempestives lorsque l'utilisateur annule l'action
  • il reste encore un problème lors de la mise-à-jour (-u): lorsqu'il n'y a aucun changement à éffectuer, l'utilisateur est tout de même sollicité pour confirmation... Mais l'opération est saine et peut-être validée, quoi qu'il en soit (n'en ai pas encore vraiment cherché la raison :oops: )


révision 41:

  • options sur la ligne de commande pour se dispenser des liens symboliques:

    • -U -> use
    • -K -> keywords
    • -M -> mask
    • -UM -> unmask
    • -C -> cflags

  • les problèmes de mise-à-jour (-u) sont définitivement corrigés
  • si plusieurs entrées existent pour un paquet, les affiche et sort
  • nouvelle option -ss pour afficher le contenu du fichier de config en cours
  • l'affichage de sortie a été légèrement modifié
  • affiche l'aide générale depuis la commande pmg -h et l'aide spécifique depuis pmg-{CONFIG} -h ou pmg CONFIG -h


révision 29.1: corrige une erreur importante (rapportée par PabOu, thanks ;) )

  • les premieres entrées des fichiers n'étaient pas manipulées correctement par le script (rapporté par PabOu)
  • corrigé certaines erreurs dans le procédé de mise-à-jour (-u), qui n'était finalement pas très efficace... La prochaine mouture règle entièrement le problème des duplications
  • corrections mineures sur la coloration des USEs dans la sortie


révision 29: corrige quelques erreurs, dont une importante:

  • l'affichage de sortie est un peu plus soigné (c'est un point de vue... :) )
  • avant d'ajouter une entrée, on vérifie qu'elle n'existe pas déjà !! :oops:
  • du coup, on vérifie aussi qu'il n'y ait pas de doublons, au cas où l'utilisateur n'ait modifié le fichier à la main... Ou ne se soit servi de la version boguée :D


à venir:

  • FAIT - options sur la ligne de commande dispensant de l'utilisation des liens - FAIT
  • EN COURS - effacer (choix interactif) les entrées dupliquées dans le fichier de config - EN COURS
  • EN COURS - signaler les USEs, dupliqués et/ou contradictoires, sur la ligne de commande et dans le fichier de config. - EN COURS
  • EN COURS - réécriture de la routine de traitement des drapeaux (USEs et autres) lors de la mise-à-jour (première étape d'une version très-très future qui vérifiera la validité des USEs d'après ceux que contient l'ebuild du paquet; cela servira aussi à les afficher, voire à les selctionner à la volée) -EN COURS
  • --- ce qu'il vous semblera bon d'implémenter :)


Last edited by distances on Tue May 30, 2006 8:49 pm; edited 18 times in total
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Wed May 03, 2006 7:27 pm    Post subject: Reply with quote

Eh bien, pour une premier message, on ne peut pas dire que c'est pour rien.
Ça semble être du gros boulot ton truc.
Par contre, je pense que tu pourrais développer un peu plus sur le fonctionnement.
Par exemple, je n'ai pas très bien compris l'histoire des liens...

En tous cas, bienvenue et merci !
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Wed May 03, 2006 8:37 pm    Post subject: utilisations Reply with quote

kopp wrote:
Eh bien, pour une premier message, on ne peut pas dire que c'est pour rien.
Ça semble être du gros boulot ton truc.
Par contre, je pense que tu pourrais développer un peu plus sur le fonctionnement.
Par exemple, je n'ai pas très bien compris l'histoire des liens...

En tous cas, bienvenue et merci !


Merci pour cet accueil, je reviendrai :)

Pour ne pas avoir à créer un outil pour chaque fichier de config ou entrer une floppée d'arguments sur la ligne de commande, j'ai préféré créer un seul outil qui réagit selon la façon dont on l'appelle; d'où l'intérêt des liens symboliques;
c'est la dernière partie du nom qui importe (après le "-"):

  • si tu crées un lien depuis mpg que tu nommes mpg-use (le -use est essentiel), il s'occupera du fichier /etc/portage/package.use

  • De même, un lien nommé mpg-keywords s'occupera de package.keywords.

  • Etc.


Pour créer tous les liens d'un coup, tu peux entrer:

Code:

/usr/local/bin # for m in use keywords mask unmask; do ln -s mpg mpg-${m}; done


Pour ce qui est du fonctionnement ou de l'utilité du script à proprement parler,
ça permet juste d'éviter d'avoir à éditer ces fichiers à la main -- il m'arrive assez fréquemment d'installer des applis instables sans chercher pour autant à les réduire à un brutal ACCEPT_KEYWORDS="~x86" :D

Pour ajouter un paquet instable (par exemple gimp),
avec une version spécifique (2.2.9)
et seulement celle-ci,

on tapera

Code:

~# gmp-keywords -a =media-gfx/gimp-2.2.9
=media-gfx/gimp-2.2.9 a été ajouté dans /etc/portage/package.keywords
~#


Mais j'ai surtout écrit ce script pour gérer le fichier package.use (avec la commande mpg-use, donc)

avec l'option -a, on va ajouter un paquet et ses USEs personnalisés:
Code:

~# mpg-use -a gimp jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf wmf
media-gfx/gimp a été ajouté dans /etc/portage/package.use


on peut ensuite afficher la config de gimp avec l'option -s ...
Code:

~# mpg-use -s gimp
Configuration trouvée pour le paquet media-gfx/gimp dans /etc/portage/package.use:
media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf wmf
~#


... et modifier ces USEs avec l'option -u:
Code:

~# mpg-use -u gimp -wmf
La configuration va être modifiée pour le paquet media-gfx/gimp dans /etc/portage/package.use
de
    media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf wmf
vers
    media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf -wmf

 Voulez-vous poursuivre ? [N/y] "y" pour "oui"
y

 La configuration a été changée pour le paquet media-gfx/gimp:
de
    media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf wmf
vers
    media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf -wmf
~#


et l'option -s à nouveau, si l'on veut vérifier que tout s'est bien passé:
Code:

~# mpg-use -s gimp
Configuration trouvée pour le paquet media-gfx/gimp dans /etc/portage/package.use:
media-gfx/gimp  jpeg mmx png python sse aalib -debug gimpprint gtkhtml -hardened lcms mng scanner -smp svg tiff pdf -wmf


l'option -s est d'ailleurs facultative:
Code:

~# mpg-use gimp


produira le même effet.

Et voilà!

Comme tu l'as bien remarqué, c'est mon premier post sur le forum... En fait, c'est mon premier post -- tout court :)
D'où l'effet brouillon de mes explications, sans doute :oops:

Si ce n'est toujours pas clair, je compte sur toi pour me le faire remarquer ;)

Bon emerge, en attendant!...




P.S. Ai corrigé un petit bug oublié dans la fonction update_config...
Back to top
View user's profile Send private message
p0uLp3
n00b
n00b


Joined: 26 May 2005
Posts: 14
Location: /dev/proc

PostPosted: Wed May 03, 2006 9:18 pm    Post subject: Reply with quote

salut,

Juste une remarque sur ton outil, ca va te sembler derisoire, par rapport a la quantité de boulot que tu as fait, mais tu devrais changer le nom assez rapidement, avant que l'outil devienne utilisé, car j'ai peur qu'il y ait confusion avec un outil pour la gestion de fichiers MPEG (video)

Sinon super boulot :-)

++
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Wed May 03, 2006 9:37 pm    Post subject: Reply with quote

p0uLp3 wrote:
salut,

Juste une remarque sur ton outil, ca va te sembler derisoire, par rapport a la quantité de boulot que tu as fait, mais tu devrais changer le nom assez rapidement, avant que l'outil devienne utilisé, car j'ai peur qu'il y ait confusion avec un outil pour la gestion de fichiers MPEG (video)

Sinon super boulot :-)

++


:lol:

Ca ne me semble pas dérisoire du tout, je me suis fait la même remarque :D

De toute façon, mpg, c'est d'une part, pas facile à taper, et d'autre part, ça ne veut rien dire (management-portage...)
--- pmg me semble mieux approprié... En plus, y'a rien qui corresponde dans le portage :D

A moins que tu n'aies une sugestion à me faire ?...

à+
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3148

PostPosted: Wed May 03, 2006 10:13 pm    Post subject: Reply with quote

'alute

bien le bonjour :)

ben dit donc... y'en a qui ont pas peur de faire du bruit en arrivant :lol: très intéressant ton script et surtout merci pour les précisions ; je teste tout ça dès que possible.
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1073
Location: Hélécine - Belgium

PostPosted: Thu May 04, 2006 6:45 am    Post subject: Reply with quote

Bienvenu à toi, et bravo pour le travail ;)
J'y jetterai un coup d'oeil ce soir, car ca m'a l'air intéressant :)
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3148

PostPosted: Thu May 04, 2006 8:12 am    Post subject: Reply with quote

Plop ! :)

Je viens de tester "succinctement" mais je sens que je vais m'y faire, avec qq alias car pour la complétion c'est pas çà... trop de "tab" pour avoir pmg-use :lol:

Juste une remarque sinon tu fais un micmac terrible avec les noms du script j'en ai noté 3 différents pour le même : pmg ; mpg-X ; gmp-X ... je sais bien que ce n'est pas une chose simple mais peut-être travailler sur une normalisation qui intègrerait un gain en complétion en même temps ? :wink:

PS: fait même le tri pour les packages à double acception... joie ! :P
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Thu May 04, 2006 3:55 pm    Post subject: Reply with quote

boozo wrote:
Plop ! :)

Je viens de tester "succinctement" mais je sens que je vais m'y faire, avec qq alias car pour la complétion c'est pas çà... trop de "tab" pour avoir pmg-use :lol:

Juste une remarque sinon tu fais un micmac terrible avec les noms du script j'en ai noté 3 différents pour le même : pmg ; mpg-X ; gmp-X ... je sais bien que ce n'est pas une chose simple mais peut-être travailler sur une normalisation qui intègrerait un gain en complétion en même temps ? :wink:

PS: fait même le tri pour les packages à double acception... joie ! :P


Merci pour tes appréciations :)

C'est un fait, la complétion n'est pas pratique... Penses-tu que des options sur la seule commande pmg (c'est le nom définitif :D ), genre -U -K -M -UM -C seraient plus pratiques, ou bien des liens nommés du genre use-pmg, unmask-pmg, etc., plus faciles d'accès ?... Cette dernière solution me parait envisageable dans la mesure où je ne connais pas de commande commençant par use-* ... Comment as-tu nommés tes alias ?

Note: j'ai modifié à nouveau le script, pour corriger une bévue -- il ne vérifiait pas que l'entrée existe déjà avant de la valider... :?
J'ai fait ces modifs' directement dans la première publication, en haut -- je ne sais pas trop si c'est l'usage :?:
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu May 04, 2006 5:24 pm    Post subject: Reply with quote

distances wrote:
Note: j'ai modifié à nouveau le script, pour corriger une bévue -- il ne vérifiait pas que l'entrée existe déjà avant de la valider... :?
J'ai fait ces modifs' directement dans la première publication, en haut -- je ne sais pas trop si c'est l'usage :?:

C'est l'usage, en plus j'ai vu que tu avais mis un petit changelog à la fin, c'est bien vu. Ce serait encore mieux si tu mettais les dates correspondant aux modifs. Voir aussi les mettres dans le script et/ou dans le titre du sujet. Comme ça les gens peuvent plus facilement suivre.
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1073
Location: Hélécine - Belgium

PostPosted: Thu May 04, 2006 9:12 pm    Post subject: Reply with quote

j'ai remarqué un petit bug d'output chez moi :

Quote:
root@chocolat ~ # ./pmg-use -s gxine
Configuration trouvée pour le paquet media-video/gxine dans /etc/portage/package.use:
media-video/gxine edia-video/gxine -mozilla



J'ai mis en gras ce qui est "buggué" ici.

Mes remarques : je n'aime pas ces ln à faire. Je pense qu'il serait plus simple de rajouter des options comme tu dis.
J'ai vu une référence au début du script à /etc/pmg/pmgrc et même $HOME/.pmgrc .. à quoi ca sert exactement ? je ne suis pas sur, mais peut-être est-ce pour enlever la couleur ? Je me dis ca parceque la ligne suivante, c'est une drole de ligne que je ne comprends pas bien... drôle de façon d'assigner une valeur :o
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Thu May 04, 2006 10:52 pm    Post subject: Reply with quote

PabOu wrote:
j'ai remarqué un petit bug d'output chez moi :

root@chocolat ~ # ./pmg-use -s gxine
Configuration trouvée pour le paquet media-video/gxine dans /etc/portage/package.use:
media-video/gxine edia-video/gxine -mozilla


Ah! Oui... C'est étrange, je n'arrive pas à le reproduire;
Mais si tu as scrupuleusement reproduit la sortie, il me semble que tu as la version publiée hier -- j'ai fait un mise-à-jour dans la journée, c'est désormais la rév. 29.

A ce propos, je vais dorénavant suivre les indications de kopp (merci pour ces conseils d'étiquette :) ), et préciser les dates et modifications de façon plus ostentatoire :D

Si tu as bien la dernière version, pourrais-tu vérifier s'il y a des entrées dupliquées dans ton portage.use, des sauts de ligne, tout ce qui pourrait te paraître anormal ?...

Quote:

Mes remarques : je n'aime pas ces ln à faire. Je pense qu'il serait plus simple de rajouter des options comme tu dis.


Ok, je vais ajouter cette possibilité, pour ceux que ça intéresse; personnellement, je préfère les liens symboliques... :)

Quote:

J'ai vu une référence au début du script à /etc/pmg/pmgrc et même $HOME/.pmgrc .. à quoi ca sert exactement ? je ne suis pas sur, mais peut-être est-ce pour enlever la couleur ?


Les emplacements au début du script sont les références possibles pour un fichier de config de pmg; je n'ai pas documenté cette possibilité, parce que pour le moment, elle ne sert pas à grand chose...
Toutefois, tu peux y placer quelques variables:
dans /etc/pmg/pmgrc ou dans ~/.pmgrc , donc:
COLOR=[1|0] -- 1 ou 0: active ou désactive l'affichage coloré (bien vu :) )
DEBUG=[1|0] -- 1 ou 0: active ou désactive les infos de débogage
LIBRARIES_PATH=/chemin/vers/messages -- l'endroit où se trouve la bibliothèque messages
PORTAGE_CONFIG=/etc/portage -- cette variable est pour le moment tout à fait inutile, car un autre emplacement ne servirait à rien... C'est l'endroit où se trouvent les fichiers de config personnalisés (package.use, .mask, etc.)... Si un jour la Gentoo devait modifier cet emplacement, cette var. prendrait alors tout son sens :)

Quote:

Je me dis ca parceque la ligne suivante, c'est une drole de ligne que je ne comprends pas bien... drôle de façon d'assigner une valeur :o


Un peu de cours Bash :D
Code:

COLORS=${COLORS:=1}


Comme tu l'as bien compris, c'est avec cette assignation que la couleur va être affichée, puisque, par défaut, elle aura la valeur "1" (c'est le "=1", à la fin)
Ce qui se passe ici, c'est que l'on assigne à la variable COLORS la valeur de la variable COLORS (celle qui est à l'intérieur des accolades... Qui est la même, je te l'accorde :) ) si et seulement si elle n'est pas vide ou inexistante; autrement, on lui assigne la valeur par défaut ("1"); mais cette valeur est aussi, et d'abord, assignée à la variable entre les accolades... Ce qui nous donne:
Code:

si {COLORS} = "" ,
alors {COLORS}=1
et
COLORS={COLORS}

Si j'avais voulu assigner une valeur à la variable NB (noir et blanc) selon l'état de de la variable COLORS, j'aurais pu écrire:
Code:

NB=${COLORS:=1} -- si COLORS est nul, alors active le noir et blanc... Ce qui est un exemple stupide, puisque COLORS serait lui aussi, du coup,  à "1"  :s


Si, dans ton fichier de config ~/.pmgrc tu places la variable COLORS=0, au moment de ce test, COLORS n'étant pas nul, il gardera sa valeur.
Tu retrouveras, plus loin dans le script, quelque chose d'assez similaire, au début de certaines fonctions:
Code:

LPKG=${1:-$PKG}


Ici, on assigne directement à LPKG la valeur, soit de $1, soit de $PKG, si $1 est nul ou non initialisé
ainsi, pour reprendre notre exemple précédent
Code:

NB=${COLORS:-1}

deviendrait du coup opérationnel, la variable COLORS demeurant dans son état initial :P
C'est le "-" qui fait la différence.

En espérant que ce mini-cours puisse te servir ;)


Last edited by distances on Thu May 04, 2006 11:18 pm; edited 1 time in total
Back to top
View user's profile Send private message
PabOu
Veteran
Veteran


Joined: 11 Feb 2004
Posts: 1073
Location: Hélécine - Belgium

PostPosted: Thu May 04, 2006 11:16 pm    Post subject: Reply with quote

distances wrote:
Mais si tu as scrupuleusement reproduit la sortie, il me semble que tu as la version publiée hier -- j'ai fait un mise-à-jour dans la journée, c'est désormais la rév. 29.

J'ai copié/collé le script 10 à 15minutes avant mon message. Donc j'ai bien la dernière version.

distances wrote:
Si tu as bien la dernière version, pourrais-tu vérifier s'il y a des entrées dupliquées dans ton portage.use, des sauts de ligne, tout ce qui pourrait te paraître anormal ?...

Ben non, mon package.use est normal...
Code:
net-fs/samba readline pam
media-video/gxine -mozilla
games-roguelike/nethack -qt
app-cdr/k3b vcd hal sndfile
media-sound/amarok visualization xine
x11-wm/compiz kde
kde-misc/krusader kde
net-misc/tightvnc server
app-office/openoffice mozilla
app-misc/screen multiuser
net-im/gaim startup-notification bonjour xscreensaver
games-fps/tremulous -openal
net-p2p/azureus-bin kde
dev-ml/lablgtk glade
dev-lang/python tcltk

distances wrote:
Quote:
Mes remarques : je n'aime pas ces ln à faire. Je pense qu'il serait plus simple de rajouter des options comme tu dis.

Ok, je vais ajouter cette possibilité, pour ceux que ça intéresse; personnellement, je préfère les liens symboliques... :)

Merci :)
distances wrote:
Un peu de cours Bash :D

Encore Merci ;)
C'est bien comme ca que j'avais compris (deviné) grâce à la lecture des fichiers de config AVANT l'assignation des variables, mais n'étant pas sur et n'ayant jamais vu ca auparavant (dans aucun langage... mais je ne suis pas programeur)... Tu es plus expérimenté que moi, et ca se voit.. j'utilise encore des "if [ -f ...]; then ..." et toi pas.. tu utilises simplement && ;) On en apprend tous les jours ! Merci (jamais deux sans trois) !
_________________
Mangez du poulet !
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Sat May 06, 2006 4:37 am    Post subject: Reply with quote

PabOu wrote:

j'ai remarqué un petit bug d'output chez moi :
root@chocolat ~ # ./pmg-use -s gxine
Configuration trouvée pour le paquet media-video/gxine dans /etc/portage/package.use:
media-video/gxine edia-video/gxine -mozilla


Ca, c'est réglé :D

PabOu wrote:

Mes remarques : je n'aime pas ces ln à faire. Je pense qu'il serait plus simple de rajouter des options comme tu dis.


Et ça, c'est en cours :P

N'hésite pas à me faire part de nouvelles remarques ou questions, ça fait vraiment avancer les choses plus vite ;)
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Sat May 13, 2006 1:52 pm    Post subject: un p'tit plus Reply with quote

et un ebuild pour ceux que ça intéresse :)

http://distances.ath.cx/files/pmg-tools-1.0.6.ebuild

Code:

# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

DESCRIPTION="Bash script to manage unstable packages via /etc/portage"
HOMEPAGE="http://distances.ath.cx/"
SRC_URI="http://distances.ath.cx/files/${P}.tar.bz2"

LICENSE="GPL"
SLOT="0"
KEYWORDS="~x86"

IUSE=""
DEPEND=""
RESTRICT="nomirror"

src_install() {
   exeinto /usr/bin
   dobin pmg pmg-*
   insinto /usr/share/pmg
   doins messages
   insinto /etc/pmg
   doins pmgrc
}



Last edited by distances on Mon May 15, 2006 12:34 pm; edited 1 time in total
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3148

PostPosted: Sun May 14, 2006 4:46 pm    Post subject: Reply with quote

et en plus il fait du zèle le distances :mrgreen:

non je blague là... c'est vraiment chouette avec tes modifs... et y'a même le package.provided 8)
(bon c'est d'une utilisation plus confidentielle mais c'est pour souligner le soucis du détails * d'ailleurs faudra que je fasse du ménage dans le mien un de ces 4 :roll: * )

merci bcp vraiment :wink:

PS : ah oui... encore une remarque... peut-être rajouter un RESTRICT="nomirror" dans l'ébuild et c'est parfait :wink:

[Edit] tu as ouvert un topic dans le forum tips&tricks pour ton ebuid ? p'être une bonne idée non ? d'ailleurs si tu m'autorises je te rajouterai bien dans le sand-box
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Mon May 15, 2006 12:45 pm    Post subject: à vot' service, m'sieurs-dames :) Reply with quote

Content que ça plaise :D

boozo wrote:

PS : ah oui... encore une remarque... peut-être rajouter un RESTRICT="nomirror" dans l'ébuild et c'est parfait :wink:

C'est fait... C'est sur, c'est plus efficace; on en apprend tous les jours :P

boozo wrote:

tu as ouvert un topic dans le forum tips&tricks pour ton ebuid ? p'être une bonne idée non ? d'ailleurs si tu m'autorises je te rajouterai bien dans le sand-box


Tu as toute latitude pour agir comme bon te semble :D

Thanx a lot !
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3148

PostPosted: Sun May 21, 2006 1:04 pm    Post subject: Reply with quote

je viens de tomber sur ceci tout-à-fait par hazard... c'est pas pour polémiquer le moins du monde mais bon, ce serait bien pour toute la communauté je pense que tu postes ton ebuild sur le forum Tips'n Tricks, car je suis presque certain qu'il pourrait à terme rentrer dans le gentoolkit et puis qui sait d'autres pourront peut-être te proposer des voies d'améliorations :wink:
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Sun May 21, 2006 6:48 pm    Post subject: help always welcomed... Reply with quote

Salut, salut!

Tes remarques sont décidemment très judicieuses, boozo ;)

J'ai pas eu beaucoup de temps pour moi ces derniers jours, même pas pour intégrer mes dernières modifs et corrections... :S
L'approche de ce gars pour son script est une bonne idée, je te remercie de ma l'avoir signalé :D
Je commence par m'incruster sur son sujet pour l'intéresser au mien et je crée une branche pour pmg dans le Tips 'n' Tricks... Ou plutôt l'inverse :D
Back to top
View user's profile Send private message
boozo
Advocate
Advocate


Joined: 01 Jul 2004
Posts: 3148

PostPosted: Wed May 24, 2006 10:58 pm    Post subject: Reply with quote

En faisant un man pour ajouter un use aujourd'hui je viens de préter attention à ton package.cflags ce qui, je dois le dire, m'a remis en mémoire un de mes thread qui pourrait peut-être t'intéresser pour un hypothétique futur développement de pmg-tools :P mais peut-être vis-tu aussi avec les mêmes démons qui me hantent :mrgreen:

[Edit] au fait attendu qu'il y en a un... pourrais-tu renommer ton thread stp [Ebuild] pmg-tools... :wink: merci
_________________
" Un psychotique, c'est quelqu'un qui croit dur comme fer que 2 et 2 font 5, et qui en est pleinement satisfait.
Un névrosé, c'est quelqu'un qui sait pertinemment que 2 et 2 font 4, et ça le rend malade ! "
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Tue May 30, 2006 6:13 pm    Post subject: il faut savoir se défier de ses fantômes ;) Reply with quote

Salut, salut!

J'ai réussi à trouver un peu de temps pour continuer ce script...

boozo wrote:
En faisant un man pour ajouter un use aujourd'hui je viens de préter attention à ton package.cflags ce qui, je dois le dire, m'a remis en mémoire un de mes thread qui pourrait peut-être t'intéresser pour un hypothétique futur développement de pmg-tools :P


Ah! Oui! Ca c'est une bonne idée :D
Le fil sur le package.clags qui est référencé dans ton propre fil est celui dont je me sers actuellement; quoique sommairement depuis qu'il est installé...

Quote:

mais peut-être vis-tu aussi avec les mêmes démons qui me hantent :mrgreen:

Je vais pas reprendre ton fil ici, mais la méthode utilisée exploite plutôt bien les possibilités de portage; et modifier l'environnement dans lequel il s'exécute n'est finalement rien de plus que de modifier l'environnement de l'utilisateur "portage"... Avec les risques que cela comporte, évidemment :?
Je préfère en tout cas cette solution à celle que j'ai vu dans certains ebuilds, où le CFLAG est modifié en dur... Mais c'est aussi un bon garde-fou pour certains paquets sensibles... Alors oui, je vis avec les mêmes démons que toi :D

Quote:

au fait attendu qu'il y en a un... pourrais-tu renommer ton thread stp [Ebuild] pmg-tools... :wink: merci


Yep! J'avais pas remarqué ton EDIT ;)
Back to top
View user's profile Send private message
distances
n00b
n00b


Joined: 03 May 2006
Posts: 15
Location: France

PostPosted: Tue May 30, 2006 8:27 pm    Post subject: inqualifiable! Reply with quote

Pour ceux qui ont mis le script à jour dans l'après-midi,
je suis navré de vous demander de recommencer... J'ai un peu oublié d'y include une modif' qui le rend partiellement inopérant...
Mais avec les ebuilds, ça va vite, n'est-ce pas ? :D

PS. N'oubliez pas de virer le paquet de /usr/portage/distfiles et les {files/digest-pmg-tools-20063005, Manifest} dans votre overlay portage -- je n'ai modifié que le contenu, pas le nom de l'archive... Décidément... :oops:
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum