# Nightmerge: Resume bei Erststart

## Finswimmer

Hi!

Ich würde sagen, hier reden wir weiter über Nightmerge.

Also:

Wenn ich "nightmerge -uDav world --tree  --newuse $1" ausführe, er aber bei dem Berechnen der Abhängigkeiten Probleme bekommt (geblocktes Paket etc.), bricht er ab, nightmerge erkennt dies, und führt ein "emerge --resume" durch. 

Habe ich vorher aber was anderes installiert, ist "--resume" nicht leer, und er installiert die Pakete nochmal.

Man müsste also das Resumen erst aufrufen lassen, nachdem wirklich das erste Paket abgebrochen ist.

Evtl geht das über die Überprüfung, welches Paket gerade gemerged wird?

Die Frage vom Klaus noch:

 *Quote:*   

> Also, was hast am nightmerge geändert?

 

Tobi

----------

## l3u

@finswimmer: In der neuen Version sollte nightmerge wirklich abbrechen, wenn was beim Abhängigkeitenberechnen schiefgeht, oder der User Strg+C drückt. Sollte dem nicht so sein, dann werd ich mir das mal anschauen müssen ;-) Ansonsten müßte man vielleicht die resume-Informationen beim Start von nightmerge löschen, weil das kann ja eigentlich nicth wissen, daß die nicht aktuell sein könnten ... dazu müßte man dann bloß noch wissen, wo das gespeichert wird ...

@Klaus Meier: Die neue Version loggt stderr von emerge mit (in /tmp/nightmerge_err.log). Man kann sich also anschauen, was genau schiefgegangen ist. Außerdem schickt es jetzt seine Fehlermeldungen auch über stderr.

----------

## Finswimmer

Ich nutze schon 0.2 und da ist der "Fehler" noch enthalten.

Ich bin nicht so der Skript Crack, aber was ist, wenn du es einfach so machst:

Emerge Befehl starten ohne Nightmerge

Wenn dann ein Fehler kommt, das Paket loggen, und mit dem Rest bei Nightmerge weitermachen.

Hätte den Vorteil, dass der erste Emerge Befehl ganz normal läuft.

Tobi

----------

## l3u

Naja, der erste emerge-Befehl läuft ohnehin schon "einfach so" ... interessanter wäre, wie man die --resume-Information löscht, so daß nightmerge mit einer leeren --resume-Liste anfängt ...

----------

## l3u

Folgendes Script sollte die --resume-Liste löschen (basierend auf dem hier gefundenen Script: https://forums.gentoo.org/viewtopic-t-534240.html ) ...

Es wäre aber echt super, wenn irgendwer, der ne Ahnung davon hat, das "absegnen" und bestätigen würde, daß das so okay ist und auch funktioniert, bevor ich das in nightmerge integriere, damit ich nicht irgendwas kaputtmache ... also bei mir hat's zumindest funktioniert.

```
#!/bin/env python

# Based on the "Script to edit portage resume list"

# by Jordan Callicoat < MonkeeSage at gmail dot com >

# public domain

import os, pickle

print ">>> Cleaning emerge's resume list ...",

fhand = open("/var/cache/edb/mtimedb", "rb")

data = pickle.load(fhand)

fhand.close()

data['resume']['mergelist'] = []

fhand = open("/var/cache/edb/mtimedb", "wb")

pickle.dump(data, fhand)

fhand.close()

print "done"
```

Edit: Ich hab mal ne Anfrage im Portage-&-Programming-Forum gestellt :-)

----------

## Finswimmer

Na? Wie ist denn der Stand?

Tobi

----------

## l3u

Jetzt hat tatsächlich mal einer geantwortet! Den Vorschlag setz ich einfach um und stell die neue Version von clean_resume auf meine Homepage. Cool wär halt, wenn das "einwandfrei" wäre, dann würd ich's einfach in nightmerge integrieren und standardmäßig immer erstmal die resume-Liste löschen.

----------

## Finswimmer

 *Libby wrote:*   

> Jetzt hat tatsächlich mal einer geantwortet! Den Vorschlag setz ich einfach um und stell die neue Version von clean_resume auf meine Homepage. Cool wär halt, wenn das "einwandfrei" wäre, dann würd ich's einfach in nightmerge integrieren und standardmäßig immer erstmal die resume-Liste löschen.

 

Hast du es denn schon integriert?

Dann würde ich es gerne mal testen.

Tobi

----------

## l3u

Integriert hab ich's noch nicht, aber mittlerweile korrigiert. Steht als extra Download clean_resume online, mit dem Vermerk, daß es für die Verwendung mit nightmerge gedacht ist. Also bei mir hat's bisher keinen Schaden angerichtet ;-)

----------

## Klaus Meier

Noch ein Hinweis. Wenn ich emerge mache, dann bekomme ich unter KDE im Terminal angezeigt, was gerade passiert. Bei nightmerge leider nicht. Also wenn du da mal Bock drauf hast, fände ich toll, wenn du das hinbekommen würdest. Und wenn nicht, naja, ich nutze es trotzdem. Heißt ja auch nighmerge und nicht schaudraufmerge.

----------

## l3u

Jetzt hab ich ja glatt den passenden Thread gefunden ;-)

Okay, das ist mir bisher noch gar nicht aufgefallen. Aber ich denke, daß das an folgendem liegt:

nightmerge-0.1 benutzt folgende Schleife:

```
while ! emerge $par; do

   ...
```

während nightmerge-0.2 da etwas anders vorgeht:

```
while [[ $finished == 0 ]]; do

   ...

   ((emerge $par; echo $? > $exitlog) 3>&1 1>&2 2>&3 | tee -a $errlog) 3>&1 1>&2 2>&3
```

Dieser ziemlich abgefahrene Befehl ist notwendig, damit man STDERR einzeln rausfischen und loggen kann. Wenn man das so macht, dann hat das allerdings auch zur Konsequenz, daß emerge in einer Subshell läuft, und das wird wohl auch der Grund dafür sein, daß es nicht mehr den Fenstertitel anzeigt. Aber hier muß ich echt zugeben, daß ich Bash-Guru zu wenig bin, um dir sagen zu können ob oder wie man das trotzdem hinkriegen kann, daß der Fenstertitel angezeigt wird ...

Also falls das einer kann/weiß -- ich bin gern bereit nightmerge zu patchen :-)

----------

## Finswimmer

 *Libby wrote:*   

> Jetzt hab ich ja glatt den passenden Thread gefunden 
> 
> Okay, das ist mir bisher noch gar nicht aufgefallen. Aber ich denke, daß das an folgendem liegt:
> 
> nightmerge-0.1 benutzt folgende Schleife:
> ...

 

dcop konsole-17098 session-1 renameSession $(genlop -c|grep "\*"|sed s'# \* ##')

könnte helfen?

Tobi

----------

## l3u

Hmmm ... das würde aber dann nur für die KDE-3.*-Konsole funktionieren (nicht für xterm oder terminal z. B.) ... und die Zahl hinter konsole-... ist auch immer unterschiedlich ...

----------

## firefly

 *Finswimmer wrote:*   

>  *Libby wrote:*   Jetzt hab ich ja glatt den passenden Thread gefunden 
> 
> Okay, das ist mir bisher noch gar nicht aufgefallen. Aber ich denke, daß das an folgendem liegt:
> 
> nightmerge-0.1 benutzt folgende Schleife:
> ...

 

nimm lieber diese escape sequenz:

echo -ne "\033]0;$(genlop -c|grep "\*"|sed s'# \* ##')\007"

----------

