staging.inyokaproject.org

Hat jemand Interesse an (m)einem simplen qt-shutdown - Programm?

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Hi Leute!
Ich habe da ein kleines Problem... In der .pro-Datei kann man alle Dateien (außer die Binary) mittels 'make install' in ein Zielverzeichnis kopieren lassen. Die Binary wird im DESTDIR oder Default im aktuellen Verzeichnis kompiliert. Für DESTDIR brauche ich Rootrechte. Wenn ich nun das Debian-Paket mittels 'sudo pbuilder build qt-shutdown-p_1.5-all~karmic0.dsc' bauen möchte, tritt folgender Fehler auf: 'mkdir: cannot create directory `/usr/share/qt-shutdown-p/': Permission denied'
Wie bekomme ich also die Binary ins destdir ohne in der .pro-Datei DESTDIR anzugeben? - BIN.file += qt-shutdown-p und BIN.path += /usr/share/qt-shutdown/ funktionieren nicht, da die Datei noch nicht existiert...

Gruß
Hakaishi

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Stell solche speziellen Fragen besser in einem eigenen Beitrag im "Shell und Programmieren"-Forum. Wie gesagt, ich kann Dir mit qmake nicht helfen, und auf der dritten Seite einer Diskussion im Projekte-Forum ist die Wahrscheinlichkeit, dass jemand mit Ahnung vorbei schaut, wohl eher gering.

domachine

Anmeldungsdatum:
16. Mai 2007

Beiträge: 562

hakaishi schrieb:

Hi Leute! Ich habe da ein kleines Problem... In der .pro-Datei kann man alle Dateien (außer die Binary) mittels 'make install' in ein Zielverzeichnis kopieren lassen. Die Binary wird im DESTDIR oder Default im aktuellen Verzeichnis kompiliert. Für DESTDIR brauche ich Rootrechte. Wenn ich nun das Debian-Paket mittels 'sudo pbuilder build qt-shutdown-p_1.5-all~karmic0.dsc' bauen möchte, tritt folgender Fehler auf: 'mkdir: cannot create directory /usr/share/qt-shutdown-p/': Permission denied' Wie bekomme ich also die Binary ins destdir ohne in der .pro-Datei DESTDIR anzugeben? - BIN.file += qt-shutdown-p und BIN.path += /usr/share/qt-shutdown/ funktionieren nicht, da die Datei noch nicht existiert... Gruß Hakaishi

wenn du nur die zu bauende Binary unter destdir installieren willst, würd ich das so machen:

isEmpty(DESTDIR) {
    DESTDIR = /usr
}

target.path = $$DESTDIR/bin
INSTALLS += target

Damit kann der User dann mit

qmake DESTDIR=/pfad/


bestimmen, wo die Binary hinsoll.
Gruß Domi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

51L3NT_5P3CT3R schrieb:

wenn du nur die zu bauende Binary unter destdir installieren willst, würd ich das so machen:

isEmpty(DESTDIR) {
    DESTDIR = /usr
}

target.path = $$DESTDIR/bin
INSTALLS += target

Damit kann der User dann mit

qmake DESTDIR=/pfad/


bestimmen, wo die Binary hinsoll.
Gruß Domi

Das geht leider auch nicht. Um das Binary in /whatever/ zu kompilieren braucht man Root-Rechte.
Ich möchte, dass die Binary im aktuellen Verzeichnis erstellt wird und danach (per make install) erst in sein Verzeichnis /usr/share... kopiert (oder verschoben) wird. Hierzu könnte ich die Makefile anpassen, jedoch wäre es günstiger, wenn qmake das Makefile gleich so erstellt, dass die Regel 'install:' das Binary kopiert (od. verschiebt). Das Gleiche gilt für Verknüpfungen. Was muss ich tun, damit beim erstellen der Makefile in der Regel 'install:' eine Verknüpfung einer noch nicht vorhandenen Datei, nämlich der Binary, erzeugt wird (die Binary existiert erst nachdem 'make' ausgeführt wurde)?

Hierfür habe ich gerade einen neuen Thread aufgemacht: http://forum.ubuntuusers.de/topic/qt-projekt-erstellen-einer-pro-datei/

Gruß
Hakaishi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Lösung gefunden(siehe vorigen Link von mir), aber wie lasse ich die Verknüpfung bei 'make install' erzeugen?

Gruß, Hakaishi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Die Übersetztungsdatei und das Icon sind jetzt compiled-in. /usr/share/qt-shutdown-p/ (und die Verknüpfung zum Programm) existiert nicht mehr. Das Icon kommt zusätzlich wegen dem Menüeintrag und dem Autostart in /usr/share/pixmap/. Das Makefile kann per qmake generiert werden. Von Source installieren erfolgt mit "make && make install clean". Bis auf die ~/.qt-shutdown-p/qt-shutdown-p.conf wird alles restlos mit "make uninstall" entfernt. Die Fenstergröße (und Steuerelement-Größe) ist von nun an variabel. Beim Schließen des Programms wird die Fenstergröße gespeichert.

Gruß
Hakaishi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

@noisefloor
Die Wiki ist jetzt endlich fertig. Den Link für die Source werde ich allerdings noch ein- oder zweimal noch updaten müssen. Ansonsten kann es jetzt aus der Baustelle raus.

Gruß
Hakaishi

noisefloor Team-Icon

Ehemaliger
Avatar von noisefloor

Anmeldungsdatum:
6. Juni 2006

Beiträge: 28316

Hallo,

erstmal sorry für die Verspätung, aber irgendwie ist mir der Thread "durchgerutscht".

IMHO ist der Artikel ok.

Rein Interesse halber: Das Programm ist für GNOME ausgelegt - warum nimmst du dann die Qt-Libs und nicht die GTK-Libs? ☺

Gruß, noisefloor

BodomBeachTerror

Anmeldungsdatum:
24. März 2008

Beiträge: 788

noisefloor schrieb:

Hallo,

erstmal sorry für die Verspätung, aber irgendwie ist mir der Thread "durchgerutscht".

IMHO ist der Artikel ok.

Rein Interesse halber: Das Programm ist für GNOME ausgelegt - warum nimmst du dann die Qt-Libs und nicht die GTK-Libs? ☺

Gruß, noisefloor

Weil Qt schöner ist 😛

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

noisefloor schrieb:

Rein Interesse halber: Das Programm ist für GNOME ausgelegt - warum nimmst du dann die Qt-Libs und nicht die GTK-Libs? ☺

Für QT gibt's mehr Dokus und außerdem ... 'it'd be a hussle', um mich da (jetzt wo ich mit Gui-Programmieren Erfahrungen gesammelt habe) noch hinein zu arbeiten... Des Weiteren wüsste ich keine Entwicklungsumgebung für GTK.

Würde mein Programm eigentlich auch unter Kubuntu korrekt ausgeführt werden (mit dem Icon und dem Autostart)? - Ich schätze, das teste ich morgen gleich mal ^^
Ach stimmt, ich muss erst noch herausfinden, was für einen Shutdown-Befehl Kubuntu standardmäßig benutzt (wenn es auch zur Not mit sudo shutdown geht)...

Gruß
Hakaishi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Ich glaube, ich habe den ultimativen Shutdown-Befehl gefunden - jedenfalls funktioniert es unter Ubuntu-Karmic. Ich melde mich nachher noch mal und stelle den Befehl dann hier rein.

Gruß
Hakaishi

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Also hier nun der Befehl:

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown 

Er funktioniert sogar unter Kubuntu Intrepid.
Ich muss den Artikel also doch noch mal überarbeiten...

Gruß
Hakaishi

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Im Programm verwendet man aber besser QtDBus für solche Aufrufe.

hakaishi

(Themenstarter)
Avatar von hakaishi

Anmeldungsdatum:
28. April 2008

Beiträge: 525

Lunar schrieb:

Im Programm verwendet man aber besser QtDBus für solche Aufrufe.

Wie sieht das dann aus? - Ich habe das mit QProcess::startDetached(...) gemacht.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#include <QtDBus/QDBusInterface>
#include <QtDBus/QDBusMessage>
#inlcude <QtCore/QDebug>

// …

QDBusInterface powermanagement(
    "org.freedesktop.Hal", "/org/freedesktop/Hal/devices/computer",
    "org.freedesktop.Hal.Device.SystemPowerManagement",
    QDBusConnection::systemBus());
QDBusMessage response = powermanagement.call("Shutdown");
if (response.type() = QDBusMessage::ErrorMessage) {
    qWarning() << response.errorName() << ":" << response.errorMessage();
}