понедельник, 30 января 2012 г.

/etc/portage/

пока я использую генту, файлы в /etc/portage всё больше и больше становятся похожи на нечто нецензурное: пакеты и их опции никак не отсортированы
а package.use - это самый шик - пакет может быть записан несколько раз с разными флагами
т.к. я ленивый, меня напрягает править файл
обычно запись в этот файл заключается в
echo "пакет юз" >> /etc/portage/package.use
дабы отсортировать всё это безобразие, сделал пару скриптов:
1. для всех package.*
2. специально для package.use
вот, собственно, и они
#!/bin/bash

for i in `find /etc/portage/ -type f -name "package*"`;do
  sort -u ${i} --output=${i}
done
да, команда простая, но я же лентяй :3
#!/bin/bash

PACKAGES="$(awk '{print $1}' /etc/portage/package.use | uniq)"

for ATOM in ${PACKAGES};do
  for option in "$(grep "^${ATOM} " /etc/portage/package.use | sed -e "s|${ATOM} ||" | tr " " "\n" | uniq | tr "\n" " ")";do
 ATOM_OPTS+="${option}"
  done
  echo "${ATOM} ${ATOM_OPTS}" | sed 's/[ \t]*$//' >> /tmp/package.use
  unset ATOM_OPTS
done

mv /tmp/package.use /etc/portage/package.use
что делает этот скрипт:
1. находит пакеты и убирает дубли - чтобы пакет был записан один раз
2. находит все юзы данного пакета и убирает дубли, если таковые имеются
ну и потом, естественно, замещает /etc/portage/package.use результатом своей работы, в котором и даёт нам
"пакет юз1 юз2 юз3 юз4 юз5"
в одной строке
да, все ">", "=" и иже с ними остаются
т.е. если есть юз для отдельной версии - никуда он не денется
P.S. все package.* у меня - файлы, ибо всё в одном месте
P.P.S не велик ли я придумал? :3