# Softwarevorstellung gcac

## TheCurse

Hallo!

Ich habe die erste Testversion von gcac released!

Zur Zeit prüft das Programm alle Einträge in der /etc/portage/package.keywords und gibt eine bereinigte package.keywords auf dem Bildschirm aus. Alle nicht mehr benötigten Einträge sollten entfernt sein.

Ich wäre sehr dankbar, wenn irgendwer das Programm testen und Feedback sowie Verbesserungsvorschläge/Kritik geben könnte!

Syntax um eine bereinigte package.keywords zu bekommen wäre also

```
gcac > package.keywords.new
```

Anschließend kann man die package.keywords durch die package.keywords.new ersetzen. Macht bitte vorher ein backup von eurer package.keywords!!! Wahrscheinlich sind noch nicht alle Bugs gefunden (Ist quasi ein Alpha-Release).

Wenn ihr also merkt, dass ein veralteter Eintrag nicht gelöscht wurde oder ein noch aktueller Eintrag gelöscht wurde, bitte eine [url=mailto:tim.heinrich@gmx.de]Mail an mich[/url] + der package.keywords im Anhang, über die das Programm gelaufen ist!

Vorschau: In der Version 0.2 sollte über schalter das ganze auch mit der package.unmask funktionieren. package. use kommt irgendwann später.

MfG

TheCurse

P.S.: Hoffe, ich  habe mir klar ausgedrückt, was das Programm macht, ansonsten fragt einfach!

----------

## TheCurse

Version 0.2 Released!

Jetzt wird auch die package.mask und die package.unmask unterstützt!

Einfach 

```
gcac --unmask
```

 bzw. 

```
gcac --mask
```

 benutzen.

Zu finden unter http://www.sourceforge.net/projects/gcac

Ich würde mich über Tester freuen!

Vorschau auf Version 0.3:

-Support für package.use

-Entfernen redundanter Einträge

MfG

TheCurse

----------

## ian!

Beim flüchtigen Blick über die Quellen ist mir aufgefallen, daß die Pfade hartcodiert sind. Diese solltest du über die Konfigurationsdateien beziehen.

Ansonsten eine nette Idee! An sowas hatte ich auch mal gedacht.

BTW: Warum C und nicht eine Scriptsprache?

----------

## beejay

 *ian! wrote:*   

> BTW: Warum C und nicht eine Scriptsprache?

 

Sind wir etwa Mädchen und skripten in Perl!!!!!!!!!!??????????? *duck* *renn* *kreisch*  :Twisted Evil:   :Wink: 

----------

## TheCurse

Mit den Pfaden werde ich mir mal für das nächste (oder übernächste) Release überlegen (gleiches für die Architektur).

C++ und keine Scriptsprache, weil ich ein klein wenig Programmierpraxis in C++ bekommen wollte und ich da zumindest so die Grundlagen kenne (und kein allzu großer Fan von Python mehr bin).

----------

## Lenz

Wie schaut's mit 'nem ebuild aus? Gibt's das schon?

----------

## ian!

 *Lenz wrote:*   

> Wie schaut's mit 'nem ebuild aus? Gibt's das schon?

 

http://sourceforge.net/project/showfiles.php?group_id=142274&package_id=156221

----------

## Lenz

Danke ian!!

----------

## TheCurse

Man muss aber dabei sagen, dass ich überhaupt keine Ahnung von ebuilds habe, also wer es verbessern mag kann das gerne tun.

MfG

TheCurse

----------

## Lenz

Schon getan, die URL war hardcoded. Das macht man eigentlich nicht, hab's mal geändert, sodass man das ebuild jetzt problemlos bei neuen Versionen umbenennen kann.

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

DESCRIPTION="Tool to automatically clean up files in /etc/portage/"

HOMEPAGE="http://www.sf.net/projects/gcac"

SRC_URI="http://www.sf.net/projects/gcac/${P}.tar.gz"

LICENSE="GPL"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND=""

RDEPEND=""

src_unpack() {

    unpack ${A}

    cd ${S}

}

src_compile() {

    econf || die

    emake || die

}

src_install() {

    einstall || die

}
```

Mir gefällt dein Programm sehr gut, es scheint aber noch nicht 100% richtig zu funktionieren. Jedenfalls hat es bei mir auch einige noch benötigte Einträge entfernt...

----------

## TheCurse

Kannst du vielleicht sagen, welche Einträge entfernt wurden, welche eigentlich noch benötigt wurden? Ich bräuchte also die genaue Zeile in der Datei (z.B. "=media-gfx/gimp-2.2.8-r1"), in welcher Datei die Zeile stand und nach Möglichkeit das ebuild aus /var/db/pkg/paketname-versionnummer/, bzw. den Grund, warum der Eintrag nicht hätte gelöscht werden dürfen.

MfG

TheCurse

----------

## schmutzfinger

Habe das Tool gerade getestet.

Das hier sollte im ebuild stehen

```

...

SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"

...

```

----------

## TheCurse

Vielen Dank! Ich werde gleich mal ein aktualisiertes ebuild hochladen.

MfG

TheCurse

----------

## TheCurse

Hab auch mal ein kleines Bugfix-Release hochgeladen. Wer Probleme mit einem Abbruch hatte oder --mask benutzt sollte das mal ausprobieren.

MfG

TheCurse

----------

## TheCurse

Version 0.2.2 ist da!

Habe zwei neue Schalter hinzugefügt und das Verhalten geringfügig geändert. 

Per Standardeinstellung werden alle Kommentare und Leerzeilen gelöscht. Dies kann mit --preserve verhindert werden (Kommentare und Leerzeilen bleiben erhalten).

Der zweite Schalter --comment sorgt dafür, dass nicht benötigte Zeilen nicht gelöscht, sondern auskommentiert werden. Viel Spaß beim testen!

MfG

TheCurse

----------

## TheCurse

Version 0.2.5 ist da!

Neuerungen:

- Doppelte Einträge werden jetzt entfernt

----------

## TheCurse

Version 0.3.1 erschienen!

Neuerungen:

* package.keywords, package.unmask, package.mask und package.use werden voll unterstützt

* Doppelte Einträge werden gelöscht

* Zeilen für das gleiche Paket werden zusammengeführt (wenn möglich)

Viel Spaß beim testen!

----------

## tobidope

Hi The Curse,

sieht ja ganz nett aus dein Programm, jedoch glaube ich, dass du dir viel Arbeit sparen würdest,

wenn du dir den Standard-Header <algorithm> anschautest und dort insbesondere std::unique,std::transform, std::remove_if. Das heißt nicht, dass dein Programm schlecht ist, sondern relativ unidiomatisch geschrieben. Sieht mehr nach C mit Klassen als nach C++ aus. Vielleicht komme ich ja noch dazu mal ein Codestück zu schreiben, wie ich es meine.

MfG Tobias

----------

## TheCurse

Hi!

Danke für den Tipp, werde ich mir mal anschauen, wenn ich Zeit habe. Ein Beispiel ist natürlich immer gut!

Btw. wollte ich noch sagen, dass mittlerweile Version 0.4 erschienen ist. Jetzt werden endlich alle architekturen unterstützt, ist aber etwas langsam geworden (wird dann in 0.4.1 wieder schneller).

MfG

TheCurse

----------

## Thargor

Sorry, dass ich den Thread hier ausgrab, aber wird der gcac noch entwich´kelt?

Und kommt er mit den in portage-2.1 eingeführten /etc/portage/* Verzeichnissen klar?

Die Aktuellste Version, die ich auf Sourceforge gefunden hab ist nämlich schon ein bisschen älter und sonderlich viel stehen tut da nicht.

----------

## TheCurse

Naja, ich habe z.Z. wegen meiner Arbeit nicht viel Zeit mich groß darum zu kümmern. Das heißt, dass es im Moment NICHT die Dateien in den Subfoldern von /etc/portage/ berücksichtigt. Die Dateien /etc/portage/package.keywords/mask/unmask/use funktionieren weiterhin, allerdings werden einige features nicht berücksichtigt (z.B. ~). Falls du konkret irgendetwas implementiert haben möchtest, was nicht funktioniert kannst du mir ne mail schreiben und ich schau mal, ob ich da auf die schnelle was machen kann. Oder wahlweise, wenn du ein bisschen c++ kannst kannst du natürlich auch den code anschauen und selbst dran rumbasteln (patches mir dann am besten auch per mail zuschicken).

Bye

Btw.: Die letzte Version auf sourceforge (0.6.3) ist vom 2.4.2006, ich finde nicht, dass das besonders lange her ist...

----------

## Finswimmer

 *TheCurse wrote:*   

> 
> 
> Syntax um eine bereinigte package.keywords zu bekommen wäre also
> 
> ```
> ...

 

Das klappt irgendwie nicht. Hat sich in der neuen Version was geändert?

Die Datei ist immer leer.

Tobi

----------

## mkr

 *Finswimmer wrote:*   

> 
> 
> Das klappt irgendwie nicht. Hat sich in der neuen Version was geändert?
> 
> Die Datei ist immer leer.
> ...

 

Bei mir hat es ohne Probleme funktioniert.

----------

## Finswimmer

Es wird nur aufm Bildschirm ausgegeben, aber nicht umgeleitet...

Tobi

----------

## mkr

 *Finswimmer wrote:*   

> Es wird nur aufm Bildschirm ausgegeben, aber nicht umgeleitet...
> 
> 

 

Ist die Umleitung in eine Datei nicht eine Funktion der Shell?

Geht "echo test > /tmp/test.txt"?

----------

## Finswimmer

Japp, geht. Ich bin irritiert.

Tobi

----------

## Hilefoks

 *mkr wrote:*   

> Ist die Umleitung in eine Datei nicht eine Funktion der Shell?

 

Ja - das ist kein Feature eines jeden Programms, sondern der Shell. Finswimmer sucht wohl einfach im falschem Verzeichnis.  :Wink: 

EDIT: Okay - zu spät!  :Wink: 

----------

