On 05/19/2010 01:58 PM, Jason Oster wrote:
Hi list, [snip]Seems like a cross-compiling problem! According to [1] "If you specify just ‘--build’, |configure| will get confused." So I changed it to use --host in the Makefile. To cross-compile gclibc properly, the -m32 argument must be passed to gcc. After that, I hit another problem [2]. Finally, I came up with the attached patch. (Yeah, it's ugly ... I tried setting those options in CFLAGS and CXXFLAGS where they belong, but it doesn't work ... ?!) I'm curious what else needs some similar cross-compiler fixes to get linuxboot to build properly? Finally, I tried the linuxboot-4.9 iso from SF. The kernel won't boot from the CD on a Dell Inspiron 400 (Zino HD); it says "cannot find `image`" or some similar error. That's why I was trying to build my own. ;( [1] http://www.gnu.org/s/libc/manual/html_node/Configuring-and-compiling.html [2] http://ubuntuforums.org/showthread.php?t=1001811
Update on this, for the list;I've successfully built linuxboot, now. I ran into a DOSEMU bug [1], and including that patch in the Makefile worked. I also updated my patch to place the -m32 flag into the CC and CXX vars. All of that is attached.
Some other fixes that went into this patch include: * Missing menu.c32 in the final iso * Remove *.tmp files on the tidy target* Set the CXX variable when building libusb (else the link will fail because it compiles C++ for the native architecture)
That gets the whole thing to completion (assuming you have all of the build dependencies! I was missing some 32-bit libs, libsndfile, g++-multilib, ...)
Hmm, do you really want menu.s32? It's ugly and silly that it makes you press enter instead of just booting the kernel automagically.
diff --git a/trunk/linuxboot/Makefile b/trunk/linuxboot/Makefile
--- a/trunk/linuxboot/Makefile
+++ b/trunk/linuxboot/Makefile
@@ -44,18 +44,18 @@ cwd:=$(shell pwd)
packages=$(bash) $(busybox) $(convert-asn1) $(dbd-mysql) $(dbd-pgpp) $(dbi) \
$(dmidecode) $(dosemu) $(e2fsprogs) $(expat) $(glibc) $(kbd) \
$(linux) $(module-init-tools) $(mysql) $(nano) \
$(ncurses) $(parted) $(perl) $(perl-ldap) $(perl-xml-parser) \
$(perl-xml-xpath) $(pciutils) $(pmtools) \
$(samba) $(slang) $(syslinux) $(libusb) $(usbutils) \
$(wireless_tools) $(zlib)
-CC=gcc
-CXX=g++
+CC=gcc -m32
+CXX=g++ -m32
# Debian/Ubuntu systems likely use genisoimage to create iso files
# otherwise try to use mkisofs
ifneq ("$(strip $(wildcard /usr/bin/genisoimage))","")
mkisofs=genisoimage
else
mkisofs=mkisofs
endif
@@ -92,57 +92,57 @@ copy_lib= \
build-$(glibc)/elf/ldconfig -r stage1
all: iso tftpboot
## module-init-tools (depmod et. al.)
$(module-init-tools)/build/depmod:
- cd $(module-init-tools) && CC=$(CC) ./configure --prefix=/ \
+ cd $(module-init-tools) && CC="$(CC)" ./configure --prefix=/ \
--build=i586-linux && $(MAKE)
[ -e $@ ]
stage1/sbin/depmod: $(module-init-tools)/build/depmod
$(MAKE) -C $(module-init-tools) DESTDIR=$(cwd)/stage1 install
rm stage1/sbin/insmod.static
[ -e $@ ]
stage1 += stage1/sbin/depmod
## Linux
$(linux)/.config: misc/linux-config
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(linux) mrproper
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(linux) mrproper
cp -f $< $@
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(linux) ARCH=i386 oldconfig
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(linux) ARCH=i386 oldconfig
$(linux)/arch/x86/boot/bzImage: $(linux)/.config
rm -f $@
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(linux) ARCH=i386
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(linux) INSTALL_HDR_PATH=dest ARCH=i386 headers_install
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(linux) ARCH=i386
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(linux) INSTALL_HDR_PATH=dest ARCH=i386 headers_install
[ -e $@ ]
stage1/.stamp-modules: $(linux)/arch/x86/boot/bzImage stage1/sbin/depmod
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(linux) \
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(linux) \
INSTALL_MOD_PATH=$(cwd)/stage1 \
DEPMOD=$(cwd)/stage1/sbin/depmod \
ARCH=i386 \
modules_install
touch $@
stage1 += stage1/.stamp-modules
## bash
## FIXME configure loading emacs shared files from system
$(bash)/bash: fakeinclude/stdio.h
cd $(bash) \
- && CC=$(CC) CFLAGS="$(fakelib_cflags)" \
+ && CC="$(CC)" CFLAGS="$(fakelib_cflags)" \
bash_cv_termcap_lib=gnutermcap ./configure --prefix=/ \
--build=i586-linux \
&& $(MAKE)
[ -e $@ ] && touch $@
$(call copy_exe, $(bash)/bash, stage1/bin/bash)
stage1/bin/sh: stage1/bin/bash
@@ -154,46 +154,50 @@ stage1 += stage1/bin/bash stage1/bin/sh
## BusyBox
# This patch makes udhcpc fetch option 233 from the dhcp server
$(busybox)/.stamp-busybox-patch: misc/busybox-patch
cd $(busybox) && patch -b -p1 < $(cwd)/$<
touch $@
$(busybox)/.config: misc/busybox-config $(busybox)/.stamp-busybox-patch
cp -f $< $@
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(busybox) oldconfig
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(busybox) oldconfig
# BusyBox has some broken dependencies (changing CONFIG_INIT to off
# does not rebuild reboot.o), hence the "make clean" here.
$(busybox)/busybox: $(busybox)/.config fakeinclude/stdio.h
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(busybox) clean
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(busybox) CFLAGS_EXTRA="$(fakelib_cflags)" LDFLAGS="$(fakelib_cflags)"
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(busybox) clean
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(busybox) CFLAGS_EXTRA="$(fakelib_cflags)" LDFLAGS="$(fakelib_cflags)"
stage1/bin/busybox: $(busybox)/busybox
- $(MAKE) CC=$(CC) HOSTCC=$(CC) -C $(busybox) CONFIG_PREFIX=$(cwd)/stage1 install
+ $(MAKE) CC="$(CC)" HOSTCC="$(CC)" -C $(busybox) CONFIG_PREFIX=$(cwd)/stage1 install
cmp $< $@
stage1 += stage1/bin/busybox
## dmidecode
$(dmidecode)/dmidecode:
- $(MAKE) CC=$(CC) -C $(dir $@)
+ $(MAKE) CC="$(CC)" -C $(dir $@)
[ -e $@ ]
$(call copy_exe,$(dmidecode)/dmidecode,stage1/usr/sbin/dmidecode)
stage1 += stage1/usr/sbin/dmidecode
$(dosemu)/.stamp-dosemu-nolock-patch: misc/dosemu-nolock-patch
cd $(dosemu) && patch -b -p1 < $(cwd)/$<
touch $@
$(dosemu)/.stamp-dosemu-configure-patch: misc/dosemu-configure-patch
cd $(dosemu) && patch -b -p1 < $(cwd)/$<
touch $@
+$(dosemu)/.stamp-dosemu-dexeconfig-patch: misc/dosemu-dexeconfig-patch
+ cd $(dosemu) && patch -b -p1 < $(cwd)/$<
+ touch $@
+
fakeinclude/slang.h: $(slang)/src/slang.h
mkdir -p $(dir $@)
cp $< $@
[ -e $@ ] && touch $@
$(slang)/src/objs/libslang.a: stage1/lib/libdl.so $(slang)/configure
rm -f $@
cd $(slang) \
@@ -207,16 +211,17 @@ fakeinclude/slang.h: $(slang)/src/slang.
fakelib/libslang.a)
# dosemu:
# - use slang of build environment (not system's one): patched
# configure script to create our custom options (--with-slangdir
# option does not work for us).
build-$(dosemu)/config.status: $(dosemu)/.stamp-dosemu-nolock-patch \
$(dosemu)/.stamp-dosemu-configure-patch \
+ $(dosemu)/.stamp-dosemu-dexeconfig-patch \
$(dosemu)/configure fakelib/libslang.a \
fakeinclude/slang.h
rm -f $@
mkdir -p $(dir $@)
cd $(dir $@) \
&& CC="$(CC) $(fakelib_cflags)" $(cwd)/$(dosemu)/configure \
--with-slang-inc=$(cwd)/fakeinclude \
--with-slang-lib=$(cwd)/fakelib \
@@ -288,17 +293,17 @@ stage1/var/lib/dosemu/drives/dosboot.img
rm $$tmpfile
mv [email protected] $@
stage1 += stage1/var/lib/dosemu/drives/dosboot.img
## e2fsprogs (just libuuid.so, required for parted)
$(e2fsprogs)/lib/libuuid.so:
cd $(e2fsprogs) \
- && CC=$(CC) ./configure --enable-elf-shlibs --build=i586-linux \
+ && CC="$(CC)" ./configure --enable-elf-shlibs --build=i586-linux \
&& $(MAKE)
[ -e $@ ]
$(call copy_lib,$(e2fsprogs)/lib/libuuid.so,stage1/lib/libuuid.so)
stage1 += stage1/lib/libuuid.so
$(glibc)/.stamp-glibc-gen-translit.pl-patch:
@@ -306,25 +311,26 @@ stage1 += stage1/lib/libuuid.so
touch $@
## glibc
# Configure switches cheerfully stolen from LFS project
# (http://www.linuxfromscratch.org/lfs/view/development/chapter05/glibc.html).
build-$(glibc)/libc.so: $(linux)/arch/x86/boot/bzImage \
$(glibc)/.stamp-glibc-gen-translit.pl-patch
mkdir -p build-$(glibc)
- cd build-$(glibc) && CC=$(CC) $(cwd)/$(glibc)/configure \
+ cd build-$(glibc) && CC="$(CC)" CFLAGS="-O2 -U_FORTIFY_SOURCE -fno-stack-protector $(CFLAGS)" \
+ $(cwd)/$(glibc)/configure \
--prefix=/usr \
--disable-profile --enable-add-ons \
--enable-kernel=2.6.18 \
--without-gd --without-cvs \
--without-selinux \
--includedir=$(cwd)/$(linux)/dest/include \
--with-headers=$(cwd)/$(linux)/dest/include \
- --build=i586-linux \
+ --host=i586-linux \
&& find . -name \*.d -print0 | xargs -0 -r rm -f \
&& $(MAKE)
touch -c $@
$(call copy_lib, build-$(glibc)/libc.so, stage1/lib/libc.so)
# "Fake" library to link against
$(call copy_file, build-$(glibc)/libc_nonshared.a, \
@@ -410,18 +416,18 @@ stage1 += \
libm.so libutil.so libpthread.so librt.so \
)
## kbd
$(kbd)/src/loadkeys: fakeinclude/stdio.h
rm -f $@
cd $(kbd) \
&& export CFLAGS="$(fakelib_cflags) -O2" \
- && CC=$(CC) ./configure --prefix=/ \
- && $(MAKE) CC=$(CC) CFLAGS="$$CFLAGS"
+ && CC="$(CC)" ./configure --prefix=/ \
+ && $(MAKE) CC="$(CC)" CFLAGS="$$CFLAGS"
[ -e $@ ]
## TODO: get more info about why we are deleting some files
stage1/bin/loadkeys: $(kbd)/src/loadkeys
rm -f $@
cd $(kbd) \
&& $(MAKE) DESTDIR=$(cwd)/stage1 install
rm -rf stage1/usr/share/locale
@@ -430,31 +436,31 @@ stage1/bin/loadkeys: $(kbd)/src/loadkeys
setkeycodes setleds setmetamode showconsolefont showkey
[ -e $@ ]
stage1 += stage1/bin/loadkeys
## nano
$(nano)/src/nano: fakeinclude/stdio.h fakeinclude/curses.h
cd $(nano) \
- && CC=$(CC) CFLAGS="$(fakelib_cflags)" \
+ && CC="$(CC)" CFLAGS="$(fakelib_cflags)" \
./configure --prefix=/usr \
--disable-browser --disable-mouse --disable-speller \
--build=i586-linux \
&& $(MAKE)
[ -e $@ ] && touch $@
$(call copy_exe, $(nano)/src/nano, stage1/usr/bin/nano)
stage1 += stage1/usr/bin/nano
## ncurses
$(ncurses)/lib/libncursesw.so: fakeinclude/stdio.h
cd $(ncurses) \
- && CC=$(CC) CXX=$(CXX) CFLAGS="$(fakelib_cflags)" \
+ && CC="$(CC)" CXX="$(CXX)" CFLAGS="$(fakelib_cflags)" \
LDFLAGS="$(fakelib_cflags)" CXXFLAGS="$(fakelib_cflags)" \
./configure --prefix=/usr --with-shared \
--without-normal --without-debug \
--disable-database --with-fallbacks=linux \
--build=i586-linux --without-hashed-db \
--enable-widec \
&& $(MAKE)
[ -e $@ ] && touch $@
@@ -470,17 +476,17 @@ stage1 += stage1/usr/lib/libncursesw.so
## parted
#FIXME: --disable-Werror added to compile parted 1.8.8 with gcc 4.2.1 and later
# This will probably be fixed in a later version of parted
$(parted)/parted/.libs/parted: fakeinclude/stdio.h stage1/lib/libuuid.so \
stage1/lib/libdl.so
cd $(parted) \
- && CC=$(CC) CXX=$(CXX) \
+ && CC="$(CC)" CXX="$(CXX)" \
CFLAGS="$(fakelib_cflags) -I$(cwd)/$(e2fsprogs)/lib" \
./configure --disable-nls --without-readline \
--build=i586-linux --disable-Werror \
&& $(MAKE)
[ -e $@ ]
$(parted)/libparted/.libs/libparted.so: $(parted)/parted/.libs/parted
[ -e $@ ] && touch $@
@@ -488,41 +494,41 @@ stage1 += stage1/usr/lib/libncursesw.so
$(call copy_exe, $(parted)/parted/.libs/parted, stage1/usr/sbin/parted)
$(call copy_lib, $(parted)/libparted/.libs/libparted.so, \
stage1/lib/libparted.so)
stage1 += stage1/usr/sbin/parted stage1/lib/libparted.so
## pciutils
$(pciutils)/lspci:
- $(MAKE) CC=$(CC) -C $(pciutils) PREFIX=/usr HOST="i586--linux" \
+ $(MAKE) CC="$(CC)" -C $(pciutils) PREFIX=/usr HOST="i586--linux" \
RELEASE="$(subst linux-,,$(linux))" OPT="$(fakelib_cflags)"
[ -e $@ ]
$(call copy_exe, $(pciutils)/lspci, stage1/sbin/lspci)
$(call copy_file,$(pciutils)/pci.ids,stage1/usr/share/pci.ids)
stage1 += stage1/sbin/lspci stage1/usr/share/pci.ids
## pmtools (acpidump, for diagnostics)
$(pmtools)/acpidump/acpidump: fakeinclude/stdio.h $(linux)/arch/x86/boot/bzImage
cd $(dir $@) \
&& $(MAKE) clean \
- && $(MAKE) CC=$(CC)
+ && $(MAKE) CC="$(CC)"
[ -e $@ ]
$(call copy_exe,$(pmtools)/acpidump/acpidump,stage1/sbin/acpidump)
stage1 += stage1/sbin/acpidump
## Perl
$(perl)/perl: fakeinclude/stdio.h
rm -f $@
cd $(perl) \
- && ./Configure -Dcc=$(CC) -Dusethreads -Dprefix=/opt/perl \
+ && ./Configure -Dcc="$(CC)" -Dusethreads -Dprefix=/opt/perl \
-Dlibpth="$(cwd)/fakelib $(cwd)/stage1/lib" \
-Ud_sethostent_r -Ud_setprotoent_r -Ud_setservent_r \
-Ud_endhostent_r -Ud_endprotoent_r -Ud_endservent_r \
-Darchname=i586-linux -Ud_eaccess \
-Accflags="$(fakelib_cflags)" \
-deO \
&& $(MAKE)
[ -e $@ ]
@@ -541,17 +547,17 @@ stage1 += stage1/opt/perl/bin/perl
perllib=$(cwd)/stage1/opt/perl/lib/$(patsubst perl-%,%,$(perl))
perlrun=$(cwd)/stage1/opt/perl/bin/perl -I$(cwd)/stage1/opt/perl/lib/site_perl -I$(perllib)
## mysql
# It has a dependency on ncurses-dev fakeinclude/curses.h could fixed
$(mysql)/Makefile: stage1/opt/perl/bin/perl fakeinclude/zlib.h
cd $(dir $@) \
- && CC=$(CC) CXX=$(CXX) \
+ && CC="$(CC)" CXX="$(CXX)" \
CFLAGS="$(fakelib_cflags)" CXXFLAGS="$(fakelib_cflags)" \
./configure --prefix=/ --without-server --build=i586-linux
$(mysql)/libmysql/.libs/libmysqlclient.so: $(mysql)/Makefile
rm -f $@
cd $(mysql) \
&& $(MAKE) \
&& $(MAKE) -C include includedir=$(cwd)/fakeinclude install
@@ -698,17 +704,17 @@ stage1 += stage1/.stamp-perl-xml-xpath
## Samba
# Without -rdynamic, CP850.so craps out with "undefined symbol:
# smb_register_charset".
# so ensure that the kernel is built first
$(samba)/source/config.status: stage1/.stamp-modules
cd $(samba)/source \
- && CC=$(CC) LDFLAGS=-rdynamic ./configure --prefix=/usr \
+ && CC="$(CC)" LDFLAGS=-rdynamic ./configure --prefix=/usr \
--disable-cups --without-readline \
--without-ldap --without-krb5 --without-ads \
--without-utmp --with-included-popt \
--build=i586-linux
# Without "make installmodules" (which installs CP850.so), smbmount
# prints a tremendous number of "convert_string_internal: Conversion
# not supported" errors.
@@ -737,77 +743,77 @@ stage1 += stage1/usr/lib/smb.conf
stage1 += stage1/sbin/mount.cifs
## wireless_tools
$(wireless_tools)/iwconfig: fakeinclude/stdio.h $(linux)/arch/x86/boot/bzImage
cd $(wireless_tools) \
&& $(MAKE) clean \
&& $(MAKE) KERNEL_SRC=$(cwd)/$(linux) \
- CC=$(CC) CFLAGS="$(fakelib_cflags) -O2 -Wall"
+ CC="$(CC)" CFLAGS="$(fakelib_cflags) -O2 -Wall"
[ -e $@ ]
$(wireless_tools)/iwlist: $(wireless_tools)/iwconfig
$(call copy_exe,$(wireless_tools)/iwconfig,stage1/sbin/iwconfig)
$(call copy_exe,$(wireless_tools)/iwlist,stage1/sbin/iwlist)
stage1 += stage1/sbin/iwconfig stage1/sbin/iwlist
## zlib (required by libmysqlclient.so)
zlib_ver := $(patsubst zlib-%,%,$(zlib))
zlib_so := libz.so.$(zlib_ver)
$(zlib)/$(zlib_so): fakeinclude/stdio.h
rm -f $@
cd $(zlib) \
- && $(MAKE) CC=$(CC) CFLAGS="-O $(fakelib_cflags)" \
+ && $(MAKE) CC="$(CC)" CFLAGS="-O $(fakelib_cflags)" \
LDSHARED="$(CC) -shared -Wl,-soname,libz.so.1" \
$(zlib_so)
fakeinclude/zlib.h: $(zlib)/zlib.h $(zlib)/zconf.h
mkdir -p $(dir $@)
cp -f $^ $(dir $@)
$(call copy_lib,$(zlib)/$(zlib_so),stage1/lib/libz.so)
stage1 += stage1/lib/libz.so
## libexpat
$(expat)/.libs/libexpat.so.1.5.2:
cd $(expat) \
- && CC=$(CC) ./configure --prefix=/ \
+ && CC="$(CC)" ./configure --prefix=/ \
&& $(MAKE)
$(call copy_lib,$(expat)/.libs/libexpat.so.1.5.2,stage1/lib/libexpat.so)
$(call copy_file,$(expat)/lib/expat.h,fakeinclude/expat.h)
$(call copy_file,$(expat)/lib/expat_external.h,fakeinclude/expat_external.h)
stage1 += stage1/lib/libexpat.so
## libusb
$(libusb)/.libs/libusb-0.1.so.4.4.4:
cd $(libusb) \
- && CC=$(CC) ./configure --disable-static \
+ && CC="$(CC)" CXX="$(CXX)" ./configure --disable-static \
--build=i586-linux \
--disable-dependency-tracking \
&& $(MAKE)
[ -e $@ ]
$(call copy_lib,$(libusb)/.libs/libusb-0.1.so.4.4.4,stage1/lib/libusb.so)
$(call copy_file,$(libusb)/usb.h,fakeinclude/usb.h)
stage1 += stage1/lib/libusb.so
## usbutils
## use LIBUSB_CFLAGS and LIBUSB_LIBS to avoid pkg-config usage.
## FIXME '-lusb' is sufficient since usage of fakelib_cflags for CFLAGS.
$(usbutils)/lsusb: stage1/lib/libusb.so fakeinclude/usb.h
cd $(usbutils) \
- && CC=$(CC) CFLAGS="$(fakelib_cflags)" \
+ && CC="$(CC)" CFLAGS="$(fakelib_cflags)" \
LIBUSB_CFLAGS="-I$(cwd)/fakeinclude" LIBUSB_LIBS="-lusb" \
./configure --prefix=/usr \
&& $(MAKE)
$(call copy_exe, $(usbutils)/lsusb, stage1/sbin/lsusb)
stage1 += stage1/sbin/lsusb
@@ -913,17 +919,18 @@ initrd: devices.cpio .stamp-stage2
$(call copy_file,misc/isolinux.cfg,iso/isolinux/isolinux.cfg)
$(call copy_file,$(syslinux)/com32/menu/menu.c32,iso/isolinux/menu.c32)
$(call copy_file,$(syslinux)/core/isolinux.bin,iso/isolinux/isolinux.bin)
linuxboot.iso: iso/isolinux/bzImage iso/isolinux/initrd \
- iso/isolinux/isolinux.cfg iso/isolinux/isolinux.bin
+ iso/isolinux/isolinux.cfg iso/isolinux/isolinux.bin \
+ iso/isolinux/menu.c32
$(mkisofs) -quiet -o [email protected] -m CVS \
-b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
iso > /dev/null
mv [email protected] $@
iso: linuxboot.iso
@@ -1083,16 +1090,17 @@ symlink_targets=$(addprefix symlink-,$(p
symlinks: $(symlink_targets)
# Blow away everything we do not want to ship.
tidy:
rm -rf $(patsubst symlink-%,%,$(symlink_targets))
rm -rf dosboot iso
rm -rf .stamp-stage1 stage2 .stamp-stage2
rm -f devices.cpio initrd
+ rm -f *.tmp
# Clean up all the stuff we built so we can build again
clean: tidy
rm -rf tftpboot
rm -rf linuxboot.iso
rm -rf ../install/linuxaux
FORCE:
diff --git a/trunk/linuxboot/misc/dosemu-dexeconfig-patch b/trunk/linuxboot/misc/dosemu-dexeconfig-patch
new file mode 100644
--- /dev/null
+++ b/trunk/linuxboot/misc/dosemu-dexeconfig-patch
@@ -0,0 +1,12 @@
+diff -ur dosemu-1.4.0.1/src/tools/periph/dexeconfig.c dosemu-1.4.0.1-dev1/src/tools/periph/dexeconfig.c
+--- dosemu-1.4.0.1/src/tools/periph/dexeconfig.c 2007-05-04 06:59:48.000000000 +0100
++++ dosemu-1.4.0.1-dev1/src/tools/periph/dexeconfig.c 2009-05-17 11:09:27.000000000 +0100
+@@ -238,7 +238,7 @@
+ exit(1);
+ }
+ close(fd);
+- fc = open(cfile, O_WRONLY | O_CREAT | O_TRUNC);
++ fc = open(cfile, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+ if (fc < 0) {
+ perror("cannot open config file");
+ exit(1);
<<attachment: jason_oster.vcf>>
------------------------------------------------------------------------------
_______________________________________________ unattended-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/unattended-devel
