Aaron Lwe reported that v2 build fails if /tmp and the build directory
are on different file systems.
That's due to the rename being performed in build_opt_tbl. Renames can't
be done across filesystems. I saw that problem in the original patch,
but I didn't want to ruin the mood by complaining.
Anyway, here is a patch to fix it.
Signed-off-by: Carl-Daniel Hailfinger <[EMAIL PROTECTED]>
Index: LinuxBIOSv2-build_opt_tbl/util/options/build_opt_tbl.c
===================================================================
--- LinuxBIOSv2-build_opt_tbl/util/options/build_opt_tbl.c (Revision 3788)
+++ LinuxBIOSv2-build_opt_tbl/util/options/build_opt_tbl.c (Arbeitskopie)
@@ -11,7 +11,7 @@
#define INPUT_LINE_MAX 256
#define MAX_VALUE_BYTE_LENGTH 64
-#define TMPFILE_TEMPLATE "/tmp/build_opt_tbl_XXXXXX"
+#define TMPFILE_TEMPLATE ".XXXXXX"
static unsigned char cmos_table[4096];
@@ -215,7 +215,7 @@
char *header=0;
FILE *fp;
int tmpfile;
- char tmpfilename[32];
+ char *tmpfilename;
struct cmos_option_table *ct;
struct cmos_entries *ce;
struct cmos_enums *c_enums, *c_enums_start;
@@ -485,7 +485,9 @@
/* See if we want to output a C source file */
if(option) {
- strcpy(tmpfilename, TMPFILE_TEMPLATE);
+ tmpfilename = malloc(strlen(option) + strlen(TMPFILE_TEMPLATE)
+ 1);
+ strcpy(tmpfilename, option);
+ strcat(tmpfilename, TMPFILE_TEMPLATE);
tmpfile = mkstemp(tmpfilename);
if(tmpfile == -1) {
perror("Error - Could not create temporary file");
@@ -535,7 +537,9 @@
struct cmos_option_table *hdr;
struct lb_record *ptr, *end;
- strcpy(tmpfilename, TMPFILE_TEMPLATE);
+ tmpfilename = malloc(strlen(header) + strlen(TMPFILE_TEMPLATE)
+ 1);
+ strcpy(tmpfilename, header);
+ strcat(tmpfilename, TMPFILE_TEMPLATE);
tmpfile = mkstemp(tmpfilename);
if(tmpfile == -1) {
perror("Error - Could not create temporary file");
--
http://www.hailfinger.org/
--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot