Puppy In-House Development

Under development: PCMCIA, wireless, etc.
Message
Author
User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#31 Post by Iguleder »

The only thing that builds fine with today's kernel, musl and GCC is tinyxlib, but any variant of X I've tried (XFree86, early X.Org kdrive versions) doesn't.

I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.

By the way, I added a faster, hash-based cache to the kernel module tools, so they're a lot faster now.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

Ibidem
Posts: 549
Joined: Wed 26 May 2010, 03:31
Location: State of Jefferson

#32 Post by Ibidem »

Iguleder wrote:The only thing that builds fine with today's kernel, musl and GCC is tinyxlib, but any variant of X I've tried (XFree86, early X.Org kdrive versions) doesn't.
I just compiled Xfbdev from tinyXserver source, and it's working nicely.

Note, though, that you will need to edit standard_definitions.mk if you are cross-compiling: the standard setup for tinyxlib installs to /usr, and tinyxserver expects the libc and tinyxlib headers to be in /usr/include.

To build Xvesa may require a little editing; I don't think musl includes <sys/io.h> or <sys/vm86.h>, but only the macros are needed.
goingnut's makefile doesn't handle building just Xfbdev that well; try running "make -i" or commenting out every line that mentions vesa.
I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.
Hmmm...somehow I'm reminded of NanoX/Microwindows...

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#33 Post by Iguleder »

What distro are you building on?
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

Ibidem
Posts: 549
Joined: Wed 26 May 2010, 03:31
Location: State of Jefferson

#34 Post by Ibidem »

Iguleder wrote:What distro are you building on?
Self-hosted built-from-scratch musl+busybox+gcc. Linux 3.0 kernel, but that's probably not relevant.
(Yes, self-hosted can really make things simpler.)

But you'll need the kernel headers installed in your target's includedir.

Tell me a couple things and I should be able to get a build-system patch:
-prefix for musl on the host
-I assume all the libs and headers get installed in the same directory on the host?
(for example, use /opt/musl as prefix for everything and install as you go)

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#35 Post by technosaurus »

Iguleder wrote:I've wrote some proof-of-concept display server that draws rectangles on the screen through a framebuffer device - if I get it to work well, I'll try to port a stripped-down GTK 1 to it.

By the way, I added a faster, hash-based cache to the kernel module tools, so they're a lot faster now.
I highly recommend netsurf's nsfb as a starting point because it is small and has xcb (not X11) wayland and linux framebuffer backends (and some others - SDL, ram, and some other framebuffer)

For the kernel modules, finit_module syscall (added in 3.8 ) is quite convenient and was extremely fast with my flat modules experiment (all modules in 1 directory /lib/modules/X.X.X) It worked well with the normal module tree as well, but not as fast as the flat style.
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

Ibidem
Posts: 549
Joined: Wed 26 May 2010, 03:31
Location: State of Jefferson

#36 Post by Ibidem »

I see you are using ${SYSROOT} as the target root directory, and headers go in the usual place.

This should get the cross-compiling part working:

Code: Select all

cd tinyxlib
sed -e 's_/usr_${SYSROOT}/usr_g' standard_definitions.mk >newdefs.mk
cp newdefs.mk standard_definitions.mk

cd ../tiny-Xserver-0.03
sed -e 's_\(^CC\)=_#\1_g' -e 's_\(/usr\)_${SYSROOT}\1_g' standard_definitions.mk >newdefs.mk
cp newdefs.mk standard_definitions.mk
That doesn't take care of it building the vesa stuff; but you should find removing that from the makefile pretty easy.

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#37 Post by Iguleder »

cd render; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/render'
ar cr librender.a glyph.o miglyph.o miindex.o mipict.o mirect.o picture.o render.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/render'
cd dix; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/dix'
make[1]: `libdix.a' is up to date.
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/dix'
cd os; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/os'
ar cr libos.a WaitFor.o access.o connection.o io.o osinit.o utils.o auth.o mitauth.o secauth.o xdmcp.o decompress.o transport.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/os'
cd mi; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/mi'
ar cr libmi.a cbrt.o miarc.o mibank.o mibitblt.o mibstore.o miclipn.o micmap.o micursor.o midash.o midispcur.o mieq.o miexpose.o mifillarc.o mifillrct.o mifpolycon.o migc.o miglblt.o miinitext.o mioverlay.o mipointer.o mipoly.o mipolycon.o mipolygen.o mipolypnt.o mipolyrect.o mipolyseg.o mipolytext.o mipolyutil.o mipushpxl.o miregion.o miscrinit.o mispans.o misprite.o mivaltree.o miwideline.o miwindow.o mizerarc.o mizerclip.o mizerline.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/mi'
cd Xext; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/Xext'
ar cr libext.a bigreq.o mbuf.o saver.o xf86dga2.o xtest.o cup.o mbufpx.o xf86dga.o xvdisp.o mitmisc.o shm.o xf86misc.o xvmain.o dpmsstubs.o sleepuntil.o xf86vmode.o xvmc.o EVI.o sync.o xprint.o xvmod.o fontcache.o xcmisc.o xtest1dd.o mbufbf.o sampleEVI.o xf86bigfont.o xtest1di.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/Xext'
cd Xext/extmod; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/Xext/extmod'
make[1]: `libextmod.a' is up to date.
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/Xext/extmod'
cd XTrap; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/XTrap'
ar cr libxtrap.a xf86XTrapModule.o xtrapddmi.o xtrapdi.o xtrapdiswp.o xtrapditbl.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/XTrap'
cd hw/kdrive; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/hw/kdrive'
ar cr libkdrive.a kaa.o kasync.o kcmap.o kcolor.o kcurscol.o kdrive.o kinfo.o kinput.o kmap.o kmode.o knoop.o kpict.o kshadow.o ktest.o kxv.o vga.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/hw/kdrive'
cd hw/kdrive/linux; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/hw/kdrive/linux'
ar cr liblinux.a agp.o bus.o keyboard.o linux.o mouse.o ms.o ps2.o
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/hw/kdrive/linux'
cd fb; make
make[1]: Entering directory `/root/Downloads/tinyxserver-master/fb'
/root/Downloads/sysroot/bin/musl-gcc -I../include -I../mi -I../fb -I../hw/kdrive -I../render -I../Xext -pipe -Os -Wall -D_BSD_SOURCE -D_GNU_SOURCE -D__KERNEL_STRICT_NAMES -fno-strength-reduce -nodefaultlibs -fno-strict-aliasing -ffunction-sections -fdata-sections -I/opt/musl/include -I. -DNOERROR -D__i386__ -Dlinux -D_POSIX_SOURCE -D_BSD_SOURCE -DTOSHIBA_SMM -D_SVID_SOURCE -D_GNU_SOURCE -DX_LOCALE -DKDRIVESERVER -DGCCUSESGAS -DDDXOSINIT -DNOFONTSERVERACCESS -DNDEBUG -DNARROWPROTO -DPIXPRIV -DFUNCPROTO=15 -DCOMPILEDDEFAULTFONTPATH=\"/usr/share/fonts/X11/misc/\" -DRGB_DB=\"/usr/share/X11/rgb\" -D_POSIX_C_SOURCE=2 -DMITSHM -DRENDER -DXCMISC -DXV -DUSE_RGB_TXT -D__KERNEL_STRICT_NAMES -c -o fbblt.o fbblt.c
fbblt.c: In function ‘fbBlt’:
fbblt.c:136:7: error: duplicate case value
fbblt.c:136:7: error: previously used here
fbblt.c:136:7: error: duplicate case value
fbblt.c:136:7: error: previously used here
fbblt.c:144:7: error: duplicate case value
fbblt.c:144:7: error: previously used here
fbblt.c:144:7: error: duplicate case value
fbblt.c:144:7: error: previously used here
fbblt.c:260:7: error: duplicate case value
fbblt.c:260:7: error: previously used here
fbblt.c:260:7: error: duplicate case value
fbblt.c:260:7: error: previously used here
fbblt.c:272:7: error: duplicate case value
fbblt.c:272:7: error: previously used here
fbblt.c:272:7: error: duplicate case value
fbblt.c:272:7: error: previously used here
make[1]: *** [fbblt.o] Error 1
make[1]: Leaving directory `/root/Downloads/tinyxserver-master/fb'
make: *** [all] Error 2
tinyxlib builds just fine, but tinyxserver doesn't. Here's what I get, under Debian Wheezy, x86_64.

I've been trying to figure out why this happens for hours - I tried to evaluate all those macros and found no duplicate values so far.

EDIT: this doesn't happen when I pass "-m32" to GCC. It's some 64-bit incompatibility.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#38 Post by technosaurus »

In the future, you can comment out all of the #includes that are of no concern and then preprocess the file with gcc -E ... to evaluate the macros. It would be nice to fix it for 64bit (and xfbdev for arm, mips,..) I am interested in porting xfbdev to the BSD framebuffer and using mfsBSD to bootstrap a totally unencumbered stray pup.

Does anyone happen to know any substantial app that works on both the Linux and BSD framebuffers?
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#39 Post by Iguleder »

Tried that, but it doesn't evaluate more than one level.

I tried some old FreeBSD patches but the problem persists.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#40 Post by technosaurus »

does:

Code: Select all

gcc -m32 -E ... > m32res;gcc -m64 -E ... > m64res; diff -u m32res m64res
provide anything helpful?
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#41 Post by Iguleder »

Nope.

However, I was able to build it for x86_64 when I remove the last 3 cases. I get a black screen when I run it, though.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#42 Post by technosaurus »

wtf, now I need to see it, can you point me to a copy of the source you are using?
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#43 Post by Iguleder »

goingnuts put them in this thread.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#44 Post by goingnuts »

The tiny Xvesa is patched to give black screen.

I have XFree86-4.8.0 building Xvesa, Xfbdev and XFree86 with uclibc. I have attached the background patch and my build script. Some external functions are missing but you will get the picture.
The Xvesa/Xfbdev is 930K static linked - the XFree86 is 8.8Mb.
20131104: Removed files as not relevant
Last edited by goingnuts on Mon 04 Nov 2013, 18:51, edited 1 time in total.

nooby
Posts: 10369
Joined: Sun 29 Jun 2008, 19:05
Location: SwedenEurope

#45 Post by nooby »

http://www.murga-linux.com/puppy/viewto ... 532#730532
Goingnuts writes
Posted: Mon Oct 14, 2013 Post subject:
Link to present tiny-Xserver-0.03 source

https://www.dropbox.com/s/ndamatph1sci8 ... .03.tar.gz

I trust somebody correct me if I got the link wrong :)
I use Google Search on Puppy Forum
not an ideal solution though

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#46 Post by Iguleder »

Yes, but it crashes with a segfault, so the screen freezes.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

goingnuts
Posts: 932
Joined: Sun 07 Dec 2008, 13:33
Contact:

#47 Post by goingnuts »

Have you tried using a tiny Xfbdev/Xvesa already build? Could indicate if its a problem with your build or your environment.

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#48 Post by Iguleder »

No can do - I want a native 64 bit server built by me. Other builds are 32 bit.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

User avatar
technosaurus
Posts: 4853
Joined: Mon 19 May 2008, 01:24
Location: Blue Springs, MO
Contact:

#49 Post by technosaurus »

on x86 the code expands to:
gcc -I../include -E fbblt.c >fbblt.E

Code: Select all

typedef CARD32 FbBits;  //this is platform dependent
...
      case (sizeof (FbBits) - 3) | (1 << (5 - 3)):... break;
      case (sizeof (FbBits) - 3) | (2 << (5 - 3)):... break;
      case (sizeof (FbBits) - 2) | (1 << (5 - 3)):... break;
      case sizeof (FbBits) - 3: ... (no break, falls through)
      case sizeof (FbBits) - 2: ... break;
      case sizeof (FbBits) - 1: ... break;
holy crap, what a mess of unwieldy macros
Check out my [url=https://github.com/technosaurus]github repositories[/url]. I may eventually get around to updating my [url=http://bashismal.blogspot.com]blogspot[/url].

User avatar
Iguleder
Posts: 2026
Joined: Tue 11 Aug 2009, 09:36
Location: Israel, somewhere in the beautiful desert
Contact:

#50 Post by Iguleder »

I think int32_t and sizeof(int32_t) is the way to go. This code assumes integer types are not padded, which is totally wrong with today's compilers.

I'll try this and report. 8)

EDIT: seems to build just fine. It's still compiling (I'm using an old Atom netbook, since my shiny new laptop HDD burst in flames), so it's going to take a while before I can try this out :)

EDIT 2: I get a black screen when I run it. Keyboard and mouse don't work and I have to CTRL + ALT + DEL.
[url=http://dimakrasner.com/]My homepage[/url]
[url=https://github.com/dimkr]My GitHub profile[/url]

Post Reply