Fedora 21 - Fehler beim Bauen des RPM

simpel

New member
Themenstarter
Registriert
13 Okt. 2011
Beiträge
611
Für F21 ist das Paket nvclock leider nicht verfügbar:
http://koji.fedoraproject.org/koji/packageinfo?packageID=5544

Nun habe ich das src.rpm aus F20 runtergeladen und wollte das Paket selbst bauen:
http://koji.fedoraproject.org/koji/buildinfo?buildID=445434

Jedoch erhalte ich Fehlermeldungen - hier ein Auszug:
Code:
make -C src install
make[1]: Entering directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src'
make[2]: Entering directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/backend'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/backend'
make[2]: Entering directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/nvcontrol'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/nvcontrol'
make[2]: Entering directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/gtk'
mkdir -p /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin; /usr/bin/install -c -c nvclock_gtk /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/nvclock_gtk
/usr/bin/install: cannot stat 'nvclock_gtk': No such file or directory
Makefile:46: recipe for target 'install' failed
make[2]: *** [install] Error 1
make[2]: Leaving directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/gtk'
make[2]: Entering directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/qt'
make[2]: Nothing to be done for 'install'.
make[2]: Leaving directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src/qt'
mkdir -p /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin
/usr/bin/install -c -c nvclock /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/nvclock
/usr/bin/install -c -c smartdimmer /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/smartdimmer
make[1]: Leaving directory '/home/adore/rpmbuild/BUILD/nvclock0.8b4/src'
+ mkdir -p /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/share/man
+ mv /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/man/man1 /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/share/man
+ desktop-file-install --delete-original --dir=/home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/share/applications /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/share/applications/nvclock.desktop
/home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/share/applications/nvclock.desktop: error: (will be fatal in the future): value "nvclock.png" for key "Icon" in group "Desktop Entry" is an icon name with an extension, but there should be no extension as described in the Icon Theme Specification if the value is not an absolute path
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 /home/adore/rpmbuild/BUILD/nvclock0.8b4
extracting debug info from /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/nvclock
extracting debug info from /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/smartdimmer
/usr/lib/rpm/sepdebugcrcfix: Updated 2 CRC32s, 0 CRC32s did match.
656 blocks
+ '[' '%{buildarch}' = noarch ']'
+ QA_CHECK_RPATHS=1
+ case "${QA_CHECK_RPATHS:-}" in
+ /usr/lib/rpm/check-rpaths
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Verarbeite Daten: nvclock-0.8-0.17.b4.fc21.x86_64
Provides: nvclock = 0.8-0.17.b4.fc21 nvclock(x86-64) = 0.8-0.17.b4.fc21
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libX11.so.6()(64bit) libXext.so.6()(64bit) libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) libc.so.6(GLIBC_2.7)(64bit) rtld(GNU_HASH)
Verarbeite Daten: nvclock-gtk-0.8-0.17.b4.fc21.x86_64
Fehler: Datei nicht gefunden: /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/nvclock_gtk

Fehler beim Bauen des RPM:
    Benutzer mockbuild existiert nicht - benutze Root
    Gruppe mockbuild existiert nicht - benutze Root
    Benutzer mockbuild existiert nicht - benutze Root
    Gruppe mockbuild existiert nicht - benutze Root
    Benutzer mockbuild existiert nicht - benutze Root
    Gruppe mockbuild existiert nicht - benutze Root
    Benutzer mockbuild existiert nicht - benutze Root
    Gruppe mockbuild existiert nicht - benutze Root
    Datei nicht gefunden: /home/adore/rpmbuild/BUILDROOT/nvclock-0.8-0.17.b4.fc21.x86_64/usr/bin/nvclock_gtk
Wo liegt der Fehler?

Hatte der Paketbauer vielleicht ähnliche Probleme und daher ist das Paket für F21 nicht verfügbar?
 
Das Paket ist in Fedora unmaintained (orphaned): https://admin.fedoraproject.org/pkgdb/package/nvclock/. Ich habs gerade auch mal versucht zu bauen, der eigentliche Fehler (endet bei mir wie bei dir auch) liegt weiter oben:

Code:
gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -m64 -mtune=generic -pthread -I/usr/include/gtk-2.0 -I/usr/lib64/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16  -I../backend -I../nvcontrol -I../..   -c -o banner.o banner.c
banner.c: In function 'banner_expose':
banner.c:58:10: warning: unused variable 'error' [-Wunused-variable]
  GError *error = NULL;
          ^
banner.c: In function 'banner_set_text':
banner.c:115:2: error: format not a string literal and no format arguments [-Werror=format-security]
  banner->text = g_strdup_printf(text);
  ^
cc1: some warnings being treated as errors
<builtin>: recipe for target 'banner.o' failed
make[2]: *** [banner.o] Error 1


Das tritt wegen dem gcc Flag -Werror=format-security auf, welches beginnend mit Fedora 21 unser Standard ist (aus Sicherheitsgründen). Der gcc steigt hier wegen unsauberem Code (der grundsätzlich geht, aber evtl angreifbar(er) ist) daher aus. Wenn es von nvclock eine neuere Version gibt: Die mal probieren, wenn da das gleiche auftritt: Die nvclock Entwickler wegen unsauberem Code nerven.

Viele Grüße
physiker91
 
Zuletzt bearbeitet:
Wie hast du den mock builder denn aufgerufen?
Das Problem ist, da das Objekt banner nicht erstellt werden kann.
Daher wird die Datei nicht erstellt die nachher angemerkt wird.
PHP:
banner.c:115:2: error: format not a string literal and no format arguments [-Werror=format-security]
  banner->text = g_strdup_printf(text);
 
Zuletzt bearbeitet:
Als normaler User führe ich einfach ein rpmbuild --rebuild ~/Pfad/Dateiname aus.
 
Das solltest du so nie tun, da da das ganze in einer undefinierten Umgebung geschieht.
Richtig wäre:
mock -r fedora-21-x86_64 nvclock-0.8-0.17.b4.fc20.src.rpm
Das erklärt die Meldungen bei dir:
Benutzer mockbuild existiert nicht - benutze Root Gruppe mockbuild existiert nicht - benutze Root Benutzer mockbuild existiert nicht - benutze Root Gruppe mockbuild existiert nicht - benutze Root Benutzer mockbuild existiert nicht - benutze Root Gruppe mockbuild existiert nicht - benutze Root Benutzer mockbuild existiert nicht - benutze Root
Aber das Hauptproblem ist der Fehler aus Kommentar #4.

Wenn du etwas fit in C/C++ bist kannst an der Stelle einen Patch schreiben.
 
Es kommt eher selten vor, dass ich mal ein Paket selbst baue. Ich habe mir sagen lassen, dass es für das Kompilieren nicht unbedingt erforderlich ist einen neuen User anzulegen.
Demnach sollte es doch genügend den User der Mock-Gruppe zuzuordnen?

Und danke für den Hinweis ;)

Edit: Habe mal überlegt, es ist das erste Paket, dass ich in Fedora selbst gebaut habe. In SL6 habe ich vor längerer Zeit mal einige Pakte gebaut. Doch da sind mir die Mock-Meldungen gar nicht aufgefallen?
 
Zuletzt bearbeitet:
Die komplette Infrastruktur von Fedora nutzt dies.
Da gerade in Verbindung mit dem ccache das eine feine Sache ist, gerade wenn du größere Sachen öfters bauen musst, ehe das Paket so ist wie du es haben willst.:)
Mock erzeugt eine Art temporäre chroot Umgebung wo dann das Paket gebaut wird. Sprich man hat bei jedem Durchlauf die gleichen Bedingungen, egal welche Pakete auf deiner Kiste installiert sind.
 
  • ok1.de
  • thinkstore24.de
  • ok2.de - Notebook Computer Server
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben