Bug 5662 - Дублирование куска спека в выводе rpm -bE
: Дублирование куска спека в выводе rpm -bE
Status: CLOSED FIXED
: Sisyphus
(All bugs in Sisyphus/librpmbuild)
: unstable
: all Linux
: P4 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2004-12-09 17:40 by
Modified: 2008-06-14 21:40 (History)


Attachments
Патчик, который исправляет проблемму (1.78 KB, patch)
2004-12-10 16:13, Kirill A. Shutemov
no flags Details | Diff
Теперь используется ftruncate (2.12 KB, patch)
2004-12-15 15:13, Kirill A. Shutemov
no flags Details | Diff


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2004-12-09 17:40:45
Если в спеке присутствует тэг BuildArch то в выводе rpm -bE дублируется кусок
спека находящийся до этого тэга. Пример спека:
Name: test
Version: test
Release: test
Summary: test
License: GPL
Group: test
BuildArch: noarch
%description
------- Comment #1 From 2004-12-09 17:54:49 -------
It's a known story.
------- Comment #2 From 2004-12-09 17:56:28 -------
*** Bug 5573 has been marked as a duplicate of this bug. ***
------- Comment #3 From 2004-12-10 16:13:54 -------
Created an attachment (id=664) [details]
Патчик, который исправляет проблемму
------- Comment #4 From 2004-12-10 16:19:47 -------
блин, орфографическая ошибка в патче - s/tempory/temporary/
------- Comment #5 From 2004-12-10 16:21:54 -------
(From update of attachment 664 [details])
>--- rpm-4_0-4.0.4-orig/build/parseSpec.c	2002-03-26 01:09:32 +0200
>+++ rpm-4_0-4.0.4/build/parseSpec.c	2004-12-10 15:13:44 +0200
>@@ -16,6 +16,8 @@
> 
> /*@access FD_t @*/	/* compared with NULL */
> 
>+static FILE* temp_file;/*temporary file to output preprocessing spec*/
>+
> /**
>  */
> /*@unchecked@*/
>@@ -362,7 +364,7 @@
> 
> 	if ( '\n' == chomped[len-1] ) 
> 	    chomped[len-1] = '\0';
>-	puts( chomped );
>+	fprintf(temp_file, "%s\n", chomped );
> 	chomped = _free( chomped );
>     }
> 
>@@ -396,6 +398,10 @@
> {
>     rpmParseState parsePart = PART_PREAMBLE;
>     int initialPackage = 1;
>+    char temp_filename_pattern[25]="preprocessed-spec.XXXXXX";
>+    int temp_fd;
>+    char line[255];
>+
> #ifdef	DYING
>     const char *saveArch;
> #endif
>@@ -416,6 +422,23 @@
>     spec->fileStack = newOpenFileInfo();
>     spec->fileStack->fileName = xstrdup(spec->specFile);
>     spec->preprocess_mode = preprocess;
>+
>+    if (spec->preprocess_mode){
>+      temp_fd = mkstemp(temp_filename_pattern);
>+      if (temp_fd == -1) {
>+	rpmError(RPMERR_CREATE, _("Cannot open temporary file"));
>+	return RPMERR_CREATE;
>+      }
>+      if (!(temp_file = fdopen(temp_fd, "w+b"))) {
>+	rpmError(RPMERR_CREATE, _("Cannot create temporary file descriptor"));
>+	return RPMERR_CREATE;
>+      }
>+      if (unlink(temp_filename_pattern) == -1) {
>+	rpmError(RPMERR_UNLINK, _("Cannot delete temporary file"));
>+	return RPMERR_UNLINK;
>+      }
>+    }
>+
>     if (buildRootURL) {
> 	const char * buildRoot;
> 	(void) urlPath(buildRootURL, &buildRoot);
>@@ -636,5 +659,15 @@
>     closeSpec(spec);
>     *specp = spec;
> 
>+    if (spec->preprocess_mode){
>+      if (!fseek(temp_file,0,SEEK_SET))
>+	while(fgets(line,255,temp_file))
>+	  printf("%s",line);
>+      else{
>+	rpmError(RPMERR_FSEEK, _("Cannot seek temporary file"));
>+	return RPMERR_FSEEK;
>+      }
>+    }
>+
>     return 0;
> }
------- Comment #6 From 2004-12-14 13:17:36 -------
Ввиду повышенной активности reporter'а.
------- Comment #7 From 2004-12-14 13:20:22 -------
1. в таких случаях необъодимо использовать ftruncate(2).
2. в rpmlib работа с временными файлами отличается от обычной.
------- Comment #8 From 2004-12-14 13:59:16 -------
(In reply to comment #7)
> 1. в таких случаях необъодимо использовать ftruncate(2).
ok
> 2. в rpmlib работа с временными файлами отличается от обычной.
Вы имеете ввиду использование makeTempFile?
------- Comment #9 From 2004-12-15 15:13:50 -------
Created an attachment (id=671) [details]
Теперь используется ftruncate

А по поводу использования временных файлов в rpmlib - прошу разъяснить
по-подробней...
------- Comment #10 From 2007-06-04 14:16:01 -------
Эта бага до сих пор актуальна? (сегодня вечером проверю дома)

И, думаю, что это не major, а normal.
------- Comment #11 From 2007-06-04 14:37:25 -------
Воспроизводиться, но для мня не актуальна.
------- Comment #12 From 2008-06-14 21:40:27 -------
Fixed in 4.0.4-alt77.M40.1-39-g63d7ecd