From 1c1d0d95b3c64d045146a61f12d59183f4cf1cba Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Tue, 11 Oct 2011 15:15:00 +0200
Subject: punani: fix multi-match for packages like python

using the full path now in retiolum
using fallback for different ose
---
 punani/bin/punani | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

(limited to 'punani/bin')

diff --git a/punani/bin/punani b/punani/bin/punani
index 954eca43..2f4ce42c 100755
--- a/punani/bin/punani
+++ b/punani/bin/punani
@@ -29,6 +29,7 @@ guess_system()
   fi
 
 }
+
 arch_aur_helper()
 {
   # pacman is the last fallback helper
@@ -43,6 +44,7 @@ arch_aur_helper()
   echo "!! no helper found, this should never happen(tm)."
   return 1
 }
+
 handle_system () {
   case "$system" in
     (*arch-like*)
@@ -57,7 +59,7 @@ handle_system () {
       # get dependencies :
       # we need pkgfile 
       if ! [ `which pkgfile` ] ; then
-        pacman -S --noconfirm pkgtools 
+        pacman -S --needed --noconfirm pkgtools 
         pkgfile -u
       fi
       punani_Scientist_update() {
@@ -65,7 +67,7 @@ handle_system () {
         pkgtool -u
       }
       punani_Scientist_search() {
-        pkgfile $1
+        pkgfile -s -b $1
         if [ "${hard-}" ] ; then
           mgr=`arch_aur_helper`
           $mgr -Ss $1 
@@ -79,7 +81,7 @@ handle_system () {
         #
         # when trying harder it tries to load the package with the given name directly via yaourt
         echo "** trying to find package with given file"
-        if pacman -S `pkgfile $1` ; then
+        if pacman -S --needed $(pkgfile -s -b -r $1); then
           echo "++ finished"
           exit 0
         else
@@ -127,14 +129,14 @@ handle_system () {
       }
       
       punani_Scientist_search() {
-        apt-file search -l -x /$1\$ && exit 0
+        apt-file search -l -x $1\$ && exit 0
         if [ "${hard-}" ] ; then
           apt-cache search $1
         fi
       }
       punani_Engineer_insert() {
         echo "trying to install $1"
-        if apt-get install `apt-file search -l -x /$1\$`;then
+        if apt-get install `apt-file search -l -x $1\$`;then
           echo "++ finished"
         else
           if [ "${hard-}" ] ; then
-- 
cgit v1.2.3


From 489c78b4c92c17e06ad4f78e96742e8d8eccfc91 Mon Sep 17 00:00:00 2001
From: makefu <github@syntax-fehler.de>
Date: Tue, 11 Oct 2011 17:43:30 +0200
Subject: punani: add manual package selection

idea is to avoid installing software matching too often (e.g. installing the 'unzip' package which is in >9k packages)
it might be a good idea to just use the first package if only one is found
---
 punani/bin/punani | 31 ++++++++++++++++++++++++-------
 1 file changed, 24 insertions(+), 7 deletions(-)

(limited to 'punani/bin')

diff --git a/punani/bin/punani b/punani/bin/punani
index 2f4ce42c..058331f1 100755
--- a/punani/bin/punani
+++ b/punani/bin/punani
@@ -81,9 +81,17 @@ handle_system () {
         #
         # when trying harder it tries to load the package with the given name directly via yaourt
         echo "** trying to find package with given file"
-        if pacman -S --needed $(pkgfile -s -b -r $1); then
-          echo "++ finished"
-          exit 0
+        pkgs=$(pkgfile -s -b -r $1 | tr "\n" "|" )
+        if [ "$pkgs" ];then
+          echo "** found one or more packages matching, skip the ones you do not need!"
+          OLDIFS=$IFS
+          IFS='|'
+          for to_install in $pkgs;do
+            if pacman -S --needed "$to_install"; then
+              echo "++ finished"
+            fi
+          done
+          IFS=$OLDIFS
         else
           echo "!! nothing found in base repos"
           if [ "${hard-}" ] ; then
@@ -118,9 +126,9 @@ handle_system () {
       #  apt-get () { echo $@; }
       #fi
       if  ! which apt-file; then 
-        echo "installing dependencies: apt-file"
+        echo "** installing dependencies: apt-file"
         apt-get install --yes apt-file
-        echo "update the apt-file tool"
+        echo "** update the apt-file tool"
         apt-file update
       fi
       punani_Scientist_update() {
@@ -136,8 +144,17 @@ handle_system () {
       }
       punani_Engineer_insert() {
         echo "trying to install $1"
-        if apt-get install `apt-file search -l -x $1\$`;then
-          echo "++ finished"
+        pkgs=$(apt-file search -l -x $1\$ | tr "\n" "|" )
+        if [ "$pkgs" ];then
+          echo "** found one or more packages matching, skip the ones you do not need!"
+          OLDIFS=$IFS
+          IFS='|'
+          for to_install in $pkgs;do
+            if apt-get install $to_install;then
+              echo "++ finished"
+            fi
+          done
+          IFS=$OLDIFS
         else
           if [ "${hard-}" ] ; then
             echo "** trying harder"
-- 
cgit v1.2.3