dosemu2 / fdpp

FreeDOS plus-plus, 64bit DOS
GNU General Public License v3.0
198 stars 18 forks source link

just run make? #245

Closed Baron-von-Riedesel closed 9 months ago

Baron-von-Riedesel commented 9 months ago

Well, that's what is written in "building and installing": Just run make. :)

When I do this, I get:

xxx-desktop:~/fdpp$ make
make nasm-segelf
make[1]: Entering directory '/home/xxx/fdpp'
nasm-segelf --version 2>/dev/null || \
    brew install /nasm-segelf.rb
/bin/sh: 2: brew: not found
make[1]: *** [makefile:18: nasm-segelf] Error 127
make[1]: Leaving directory '/home/xxx/fdpp'
make: *** [makefile:2: all] Error 2

Don't know what "brew" is supposed to do. I then copied the latest version (v1.7), which is "A very important release" and was able to run "make" and "make install" successfully ... but dosemu seems not to be too happy with that, complaining about a wrong version of fdpp.

result: a dysfunctional dosemu2 install. :)

stsp commented 9 months ago

Should now be fixed, could you please re-try?

stsp commented 9 months ago

Build instructions are now also updated.

Baron-von-Riedesel commented 9 months ago

Hm, it tells "meson: not found"

But I cloned nasm-segelf from https://git.launchpad.net/nasm-segelf and creating the binary was no problem. Then running make for fdpp was successful.

However, trying to start dosemu gives an error:

ERROR: /usr/local/lib/dosemu/libplugin_fdpp.so: /usr/local/lib/dosemu/libplugin_fdpp.so: undefined symbol: FdppKernelLoad
ERROR: can't load fdpp
...
stsp commented 9 months ago

You need to do make clean in either entire dosemu tree, or only in src/plugin/fdpp and rebuild the plugin.

stsp commented 9 months ago

But I cloned nasm-segelf

Have you checked that my patch improved an error msg first? Cause I didn't. :)

Baron-von-Riedesel commented 9 months ago

Have you checked that my patch improved an error msg first?

No - I wasn't aware of that nasm variant unil an hour ago.

make clean didn't help, still FdppKernelLoad isn't found.

stsp commented 9 months ago

Please show the full session of make clean && make inside src/plugin/fdpp.

stsp commented 9 months ago

Is it possible that you had fdpp sometime installed from ppa, and didn't uninstall?

Baron-von-Riedesel commented 9 months ago

possible that you had fdppsometime installed from ppa, and didn't uninstall?

Surely not.

Baron-von-Riedesel commented 9 months ago

show the full session of make clean && make inside src/plugin/fdpp.

xxx@xxx-desktop:~/dosemu2/src/plugin/fdpp$ make clean
rm -f *.o ../../../2.0-pre9/lib/libplugin_fdpp.a  *.d fdppconf.hh configure *~
rm -f _fdppconf.h
xxx@xxx-desktop:~/dosemu2/src/plugin/fdpp$ make
/home/sam/dosemu2/scripts/aconf.sh /home/sam/dosemu2 /home/sam/dosemu2/src/plugin/fdpp
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal -I /home/sam/dosemu2/m4 
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: /usr/bin/autoconf --include=/home/sam/dosemu2/m4
autoreconf: running: /usr/bin/autoheader --include=/home/sam/dosemu2/m4
autoreconf: configure.ac: not using Automake
autoreconf: Leaving directory '.'
./configure
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for FDPP... yes
checking for VALGRIND... no
configure: valgrind support disabled
configure: creating ./config.status
config.status: creating Makefile.conf
config.status: creating _fdppconf.h
gcc -c -imacros config.hh -MD -DCFLAGS_STR=" -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2   " -I../../../src/include -I../../../src/plugin/include -I/home/sam/dosemu2/src/base/bios/x86 -I/home/sam/dosemu2/src/include -I/home/sam/dosemu2/src/base/lib  -iquote . -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2    -fPIC  -fPIC -o fdpp.o fdpp.c
gcc -c -imacros config.hh -MD -DCFLAGS_STR=" -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2   " -I../../../src/include -I../../../src/plugin/include -I/home/sam/dosemu2/src/base/bios/x86 -I/home/sam/dosemu2/src/include -I/home/sam/dosemu2/src/base/lib  -iquote . -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2    -fPIC  -fPIC -o boot.o boot.c
gcc -c -imacros config.hh -MD -DCFLAGS_STR=" -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2   " -I../../../src/include -I../../../src/plugin/include -I/home/sam/dosemu2/src/base/bios/x86 -I/home/sam/dosemu2/src/include -I/home/sam/dosemu2/src/base/lib  -iquote . -fplan9-extensions -Wall -Wstrict-prototypes -Wmissing-declarations -Wnested-externs -fms-extensions -pthread -Wno-unused-result -Wcast-qual -Wwrite-strings -Wstrict-aliasing=2 -Wundef -Wno-address-of-packed-member -ggdb3 -fpie -O2    -fPIC  -fPIC -o hooks.o hooks.c
gcc -pthread -rdynamic -pie  -shared -o ../../../2.0-pre9/bin/libplugin_fdpp.so fdpp.o boot.o hooks.o -L/usr/local/lib/fdpp -lfdpp -lfdldr  -Wl,-rpath,/usr/local/lib/fdpp -Wl,-rpath,/usr/lib/fdpp 
stsp commented 9 months ago

Please show the output of ldd ./../../2.0-pre9/bin/libplugin_fdpp.so

stsp commented 9 months ago

I've found a serious deps breakage during build. Can you update and re-build fdpp, and see if the problem persists?

Baron-von-Riedesel commented 9 months ago

Can you update and re-build fdpp, and see if the problem persists?

It does.

However, there's a message "too many levels of symbolic links" during the build ( don't know if it's a new thing, since the make process doesn't abort because of this, I might have overseen it previously ):

clang++ -o libfdpp.so.35.10 blockio.o break.o chario.o dosfns.o dsk.o error.o fatdir.o fatfs.o fattab.o fcbfns.o hmamgr.o inthndlr.o ioctl.o memmgr.o misc.o newstuff.o network.o nls.o strings.o sysclk.o systime.o task.o config.o initoem.o main.o inithma.o dyninit.o initdisk.o initclk.o prf.o share.o smalloc.o farhlp_sta.o thunks.o thunks_c.o thunks_a.o thunks_p.o dosobj.o objhlp.o ctors.o farhlp.o objtrace.o -shared -Wl,--build-id=sha1 -Wl,-soname=libfdpp.so.35.10 -Wl,-Bsymbolic 
Have 47 undefined symbols
ln -sf  libfdpp.so
make[1]: stat: libfdpp.so: Too many levels of symbolic links
make -C loader
make[2]: Entering directory '/home/sam/fdpp/fdpp/loader'
cc -Wall -ggdb3 -O2 -I . -I /home/sam/fdpp/include/fdpp -DFDPPKRNLDIR=/usr/local/share/fdpp -DKRNL_ELFNAME=fdppkrnl.35.10.elf -DKRNL_MAP_NAME=fdppkrnl.35.10.map -fpic -c -o elf.o /home/sam/fdpp/fdpp/loader/elf.c
cc -Wall -ggdb3 -O2 -I . -I /home/sam/fdpp/include/fdpp -DFDPPKRNLDIR=/usr/local/share/fdpp -DKRNL_ELFNAME=fdppkrnl.35.10.elf -DKRNL_MAP_NAME=fdppkrnl.35.10.map -fpic -c -o loader.o /home/sam/fdpp/fdpp/loader/loader.c
cc -o ../libfdldr.so.35.10 elf.o loader.o -shared -Wl,--build-id=sha1 -Wl,-soname=libfdldr.so.35.10 -L.. -lelf 
make[2]: Leaving directory '/home/sam/fdpp/fdpp/loader'
ln -sf  libfdldr.so
make[1]: stat: libfdldr.so: Too many levels of symbolic links
make -C kernel
stsp commented 9 months ago

I might have overseen it previously ):

No, its a regression, sorry for that. meson is a primary build system, CI isn't checking make any more. Fixed, can you please re-try?

Baron-von-Riedesel commented 9 months ago

ok, did a "git pull", "make clean", "make", "make install" for fdpp - no "too many levels of symbolic links" anymore, but the "undefined symbol: FddKernelLoad" error is still with me.

stsp commented 9 months ago

Please provide the ldd output I asked above. Or just tar up the libplugin_fdpp.so libfdpp.so.35.10 libfdldr.so.35.10 so that I can look at them myself.

Baron-von-Riedesel commented 9 months ago

Please show the output of ldd libplugin_fdpp.so

xxx@xxx-desktop:~/dosemu2/2.0-pre9/bin$ ldd libplugin_fdpp.so
    linux-vdso.so.1 (0x00007fffba2c3000)
    libfdpp.so.35.10 => /usr/local/lib/fdpp/libfdpp.so.35.10 (0x00007f9a21c21000)
    libfdldr.so.35.10 => /usr/local/lib/fdpp/libfdldr.so.35.10 (0x00007f9a21c1c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9a21a26000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9a21800000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9a21721000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9a21701000)
    libelf.so.1 => /lib/x86_64-linux-gnu/libelf.so.1 (0x00007f9a216e6000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f9a21d34000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9a216c7000)
Baron-von-Riedesel commented 9 months ago

xxx.tar.gz

stsp commented 9 months ago

libplugin_fdpp.so is not in archive.

Baron-von-Riedesel commented 9 months ago

yyy.tar.gz

stsp commented 9 months ago

Are you kidding? Here's the output of ldd with your plugin:

$ ldd libplugin_fdpp.so 
    linux-vdso.so.1 (0x00007ffe61ee0000)
    libfdpp.so.35.10 => /usr/local/lib/fdpp/libfdpp.so.35.10 (0x00007fb9cae0e000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb9caa00000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fb9ca600000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb9cad03000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb9cacdf000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb9caf1d000)

Which is essentially NOT what you showed above. So you attached not the same file on which you did ldd. Please figure out how could that happen.

Baron-von-Riedesel commented 9 months ago

Which is essentially NOT what you showed above.

Well, these are not the same files. Actually, you said:

Can you update and re-build fdpp, and see if the problem persists?

but didn't mention that I have also - after this has been done - to redo a "make install" for dosemu2. I explicitely described what I did, btw:

ok, did a "git pull", "make clean", "make", "make install" for fdpp - no "too many levels of symbolic links" anymore, but the "undefined symbol: FddKernelLoad" error is still with me.

Now, after I did make install for dosemu2, dosemu2 starts.

stsp commented 9 months ago

There is no need to install dosemu2, no. You can run it from "bin" inside a build directory, but this should only be done via the dosemu wrapper script. And you likely started it somehow differently.

Baron-von-Riedesel commented 9 months ago

And you likely started it somehow differently.

I made a simple test:

  1. sudo rm /usr/local/lib/dosemu/libplugin_fdpp.so
  2. cd into fdpp
  3. make install

result: file /usr/local/lib/dosemu/libplugin_fdpp.so is still deleted; dosemu2 won't start.

So it seems pretty obvious to me that i have to do a "make install" in dosemu2 to get that file to /usr/local/lib/dosemu.

stsp commented 9 months ago

This has nothing to do with fdpp. After you built dosemu, you don't need to install it. You can instead do:

cd bin
./dosemu

And it works.