pUPnGO - 6Mb ISO - Basic Building Block Puplet
Now I got the GUI-part of mplayer working too but build grows to 6800K - whereof the 1000K comes via iconv - which can be disabled but that tends to exclude some sub-titles...Is there anyway to minimize the influence of iconv? Otherwise most stuff is working (dynamic load of dll´s, osd, dvd-play etc.)
I have been working on cleaning/modifying my tinyX11-source - attached the present status.
I have also looked at the Xvesa/Xfbdev source in order to get some of the extensions running (DPMS, MIT-SHM, RENDER, SHAPE, SYNC, TOG-CUP, XTEST and PANORAMIX). Present source attached as well as build of Xvesa/Xfbdev with the mentioned extensions build-in.
20130513: Removed attachments as forum does not support the size anymore
I have been working on cleaning/modifying my tinyX11-source - attached the present status.
I have also looked at the Xvesa/Xfbdev source in order to get some of the extensions running (DPMS, MIT-SHM, RENDER, SHAPE, SYNC, TOG-CUP, XTEST and PANORAMIX). Present source attached as well as build of Xvesa/Xfbdev with the mentioned extensions build-in.
20130513: Removed attachments as forum does not support the size anymore
Last edited by goingnuts on Mon 13 May 2013, 17:41, edited 1 time in total.
Finally got a decent build of MPlayer-1.0pre8 with uclibc and the above tinyX. Changed version of iconv to libiconv-1.6.1 and reduced size inpact with 400K. Also merged mplayer and mencoder (via mcb) so the final size (ex. fonts and skin) is approx. 6500K which decrease to just above 3000K with upx. Still big but one get a gui mediaplayer and an advanced video-converter for that price.
The audio and video outputs are:
and you get osd, scalable subtitles, a bunch of video filters to play with, DVD-player etc.
If you download the win32 dlls from here you also can play quicktime, vmw and a lot of other formates. I have added osd fonts and subtitle fonts in the pet package that can be fetched here
You will probably want to use xorg for best performance but also the Xvesa shipped above gives a nice view. The shipped skin is really minimalistic but you can hunt others that might fit better in you taste.
I did not include the videx drivers - they link dynamic against uclibc - are rarely needed (AFAIK) - and disabling videx only saved 15K...
The audio and video outputs are:
Code: Select all
Available audio output drivers:
mpegpes DVB audio output
oss OSS/ioctl audio output
sdl SDLlib audio output
null Null audio output
pcm RAW PCM/WAVE file writer audio output
Available video output drivers:
xv X11/Xv
x11 X11 ( XImage/Shm )
xover General X11 driver for overlay capable video output drivers
sdl SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)
fbdev Framebuffer Device
fbdev2 Framebuffer Device
xvidix X11 (VIDIX)
cvidix console VIDIX
null Null video output
mpegpes Mpeg-PES to DVB card
yuv4mpeg yuv4mpeg output for mjpegtools
png PNG file
jpeg JPEG file
tga Targa output
pnm PPM/PGM/PGMYUV file
md5sum md5sum of each frame
If you download the win32 dlls from here you also can play quicktime, vmw and a lot of other formates. I have added osd fonts and subtitle fonts in the pet package that can be fetched here
You will probably want to use xorg for best performance but also the Xvesa shipped above gives a nice view. The shipped skin is really minimalistic but you can hunt others that might fit better in you taste.
I did not include the videx drivers - they link dynamic against uclibc - are rarely needed (AFAIK) - and disabling videx only saved 15K...
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
@goingnuts: I was planning to look through and condense the tinyx11 sources, but I noticed you put a GPL2 license in the trunk which I presume overrides the X11 licenses beneath? If this was intentional, I'll start over with the original sources (you are welcome to use any changes in the GPL'd version).
I want to make it optimized for static builds so I had planned to replace typedef's and enums with defines and replacing some small functions (small enough that they are smaller to inline) with macros. This will also make for a much smaller shared library too without adding to binary size (at the cost of losing some type checking - there will only be char, short, long/int, long long, float, double and structs of those types) though I do have one big concern with this approach:
regardless I am attaching one of the tools I use to find dups in case anyone else needs it
I want to make it optimized for static builds so I had planned to replace typedef's and enums with defines and replacing some small functions (small enough that they are smaller to inline) with macros. This will also make for a much smaller shared library too without adding to binary size (at the cost of losing some type checking - there will only be char, short, long/int, long long, float, double and structs of those types) though I do have one big concern with this approach:
Code: Select all
typedef int* int_p1;
int_p1 a, b, c; // a, b, and c are all int pointers.
#define int_p2 int* int_p2 a, b, c; // only the first is a pointer
- Attachments
-
- duplo.tar.gz
- a tool to find dupilcate code (recommend at least setting the -ip option though)
- (28.48 KiB) Downloaded 774 times
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].
technosaurus: The GPL2 was what was used with my GtkDialog1 backport exercise - so just copied it from there. I am not trying to restrict or violate anything - just more or less in the dark with witch license to put there in order not to restrict any usage without violating any original license. Any hint there are welcome.
I have made some additions/changes since I posted the source (to be able to compile more programs/get Xvesa and other programs run in xwoaf as well). If you would like to work with my sources I can post an updated version. But you might get more what you want and maybe less work starting with the full original source anyway...
I have made some additions/changes since I posted the source (to be able to compile more programs/get Xvesa and other programs run in xwoaf as well). If you would like to work with my sources I can post an updated version. But you might get more what you want and maybe less work starting with the full original source anyway...
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
As long as you didn't use any gpl code in it, it can keep the x11 license.
I was really just wanting to kill all the compiler warnings in recent compilers (gcc and clang at least) by giving the proper return type (mostly void or int), but any time I look @ code its hard to resist performance/size tweaks. Most everything else is already done in tinyx, but duplo did identify several duplicate code blocks.
I was really just wanting to kill all the compiler warnings in recent compilers (gcc and clang at least) by giving the proper return type (mostly void or int), but any time I look @ code its hard to resist performance/size tweaks. Most everything else is already done in tinyx, but duplo did identify several duplicate code blocks.
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].
Uploaded below my present source of tinyXlib. From Changelog:
I have not tested the libXaw much but at least it compiled the attached xload - which is using approx 700k when running compared to the dynamic linked xload which uses approx 3400k...
Now we might have most of the tools to do a mcb of most of the X-utilities.
Anyone know where sources for absvolume has gone?
20130513: Removed attachment as forum does not support the size anymore
Removed file Copying as well.20120719: Changed ICElib to include transport to make ROX-Filer compile.
20120916: Added GetFPath.c to get Abiword 1.0.7 compile. Added X11/Xmu/Misc.h for XawM-1.5u.
20121002: Added ListExt.c and QuBest.c to X11 for xdpyinfo
20121011: Changed libXt source and include/X11/Intrinsic.h to test if Xaw can be compiled. Added GetDflt.c to tinyX11 and added -DXOS_USE_MTSAFE_PWDAPI to tinyXll make flags
I have not tested the libXaw much but at least it compiled the attached xload - which is using approx 700k when running compared to the dynamic linked xload which uses approx 3400k...
Now we might have most of the tools to do a mcb of most of the X-utilities.
Anyone know where sources for absvolume has gone?
20130513: Removed attachment as forum does not support the size anymore
Last edited by goingnuts on Mon 13 May 2013, 17:42, edited 1 time in total.
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
Small tip on the static builds, if you still use -ffunction-sections -fdata-sections when you build the objects (.o files), you can get a list of unused functions and data by doing the final link with -Wl,--gc-sections,--print-gc-sections (output to a file for later use). Then you can use that data to remove all of the useless functions and data from the .c/.h files. When you build shared libs, they will be _almost_ as small as a single static build (added space for position independent code and elf data).
This is essentially what libopt and the perl script in either uclibc or uclibc++ do (i don't recall which) except they use the symbol tables more directly using objdump or similar.
This is essentially what libopt and the perl script in either uclibc or uclibc++ do (i don't recall which) except they use the symbol tables more directly using objdump or similar.
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].
Trying to implement some multiuser capabilities in pupngo...but run into a lot of things not working. Most things have been fixed but uncertain on some of the solutions so guidelines would be helpful:
* Many configuration scripts and wizards uses /tmp for temp-files and I have changed user/owner of /tmp to spot and given group r+w. That helps a lot but still no way for spot to overwrite files created by root. So should the wizards use the users home dir for temporary files or is there another/better way?
* The mount/umount command is for superuser only - any workaround for this to give a normal user those rights?
* Running udhcpc to configure the network has the same problem: Only root have the power to get an ip...any suggestions beside configure at boot-time?
I would like to prevent using sudo if possible...
* Many configuration scripts and wizards uses /tmp for temp-files and I have changed user/owner of /tmp to spot and given group r+w. That helps a lot but still no way for spot to overwrite files created by root. So should the wizards use the users home dir for temporary files or is there another/better way?
* The mount/umount command is for superuser only - any workaround for this to give a normal user those rights?
* Running udhcpc to configure the network has the same problem: Only root have the power to get an ip...any suggestions beside configure at boot-time?
I would like to prevent using sudo if possible...
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
Thanks! And found a gtk1-source at amigos place
Guess the use of gksu or su should be coded in for every function where it is needed...(?).
Implemented the real su as BB-su had some limitations. Working on a solution for CLI only like the below modification in mount-script:
which works - and could be expanded to lookup a list of users where mount is enabled. Guess I have to adapt this to every other function that need roots privilege for making scripts working (mkdir in /mnt, umount etc...).
Update 20121210: Found that it is very difficult to get "su -c "some_command" running from scripts when in X. Replaced with sudo things are much easier...changed above snippet to:
Update 20121213: sudo need /etc/sudoers configured. Found that one need to add "Defaults env_keep += "HOME"" to keep the HOME of spot when using sudo. This influence the icon_unmounted_func/icon_mounted_func which controls the ROX drive icon change when mount/umount are used. Strange thing is that the icon change when mounting/unmounting is very slow (slowest when umount) and icon change faster in .pup_event than on the desktop...
Guess the use of gksu or su should be coded in for every function where it is needed...(?).
Implemented the real su as BB-su had some limitations. Working on a solution for CLI only like the below modification in mount-script:
Code: Select all
if [ ! $(id -u) = 0 ]; then
TARGET="${@}"
su -c "mount-FULL -n ${TARGET}" root
else
mount-FULL -n ${@}
fi
Update 20121210: Found that it is very difficult to get "su -c "some_command" running from scripts when in X. Replaced with sudo things are much easier...changed above snippet to:
Code: Select all
if [ ! $(id -u) = 0 ]; then
[ $(which sudo) ] && sudo mount-FULL -n ${@}
else
mount-FULL -n ${@}
fi
-
- Posts: 1885
- Joined: Tue 05 Jun 2012, 12:17
- Location: Wisconsin USA
- BarryK
- Puppy Master
- Posts: 9392
- Joined: Mon 09 May 2005, 09:23
- Location: Perth, Western Australia
- Contact:
Woof-built pups have this in first line of many scripts, ex /usr/sbin/pmount:goingnuts wrote:Thanks! And found a gtk1-source at amigos place
Guess the use of gksu or su should be coded in for every function where it is needed...(?).
Implemented the real su as BB-su had some limitations. Working on a solution for CLI only like the below modification in mount-script:which works - and could be expanded to lookup a list of users where mount is enabled. Guess I have to adapt this to every other function that need roots privilege for making scripts working (mkdir in /mnt, umount etc...).Code: Select all
if [ ! $(id -u) = 0 ]; then TARGET="${@}" su -c "mount-FULL -n ${TARGET}" root else mount-FULL -n ${@} fi
Update 20121210: Found that it is very difficult to get "su -c "some_command" running from scripts when in X. Replaced with sudo things are much easier...changed above snippet to:Update 20121213: sudo need /etc/sudoers configured. Found that one need to add "Defaults env_keep += "HOME"" to keep the HOME of spot when using sudo. This influence the icon_unmounted_func/icon_mounted_func which controls the ROX drive icon change when mount/umount are used. Strange thing is that the icon change when mounting/unmounting is very slow (slowest when umount) and icon change faster in .pup_event than on the desktop...Code: Select all
if [ ! $(id -u) = 0 ]; then [ $(which sudo) ] && sudo mount-FULL -n ${@} else mount-FULL -n ${@} fi
Code: Select all
[ "`whoami`" != "root" ] && exec sudo -A ${0} ${@}
Code: Select all
# sudo 1.7.2 required askpass in /etc/sudoers, but 1.8.1p2 reports that as a syntax error
# and requires it in this file (see: http://www.gratisoft.us/sudo/man/1.8.0/sudo.man.html)
Path askpass /usr/sbin/askpass
Oh, /etc/sudoers:
Code: Select all
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
# Failure to use 'visudo' may result in syntax or file permission errors
# that prevent sudo from running.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# 120110 added /usr/sbin/delayedrun to SYSTEM category. also, see sudo line added to script.
# Host alias specification
# User alias specification
# Cmnd alias specification
Cmnd_Alias SHUTDOWN = /sbin/poweroff, /sbin/reboot, /usr/sbin/snapmergepuppy
Cmnd_Alias SYSTEM = /sbin/pup_event_frontend_d, /usr/sbin/delayedrun
# Defaults specification
Defaults env_reset
Defaults env_keep="HOME PATH DISPLAY HOSTNAME LANG"
Defaults editor=/usr/bin/mp
# asks for root password (not user), only one attempt allowed...
Defaults:users runaspw, passwd_tries=1
# sudo 1.7.2 needs this, for 1.8.1 it is specified in /etc/sudo.conf...
# Defaults:ALL askpass=/usr/sbin/askpass
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
# fido belongs to users group...
# %users ALL=(ALL) ALL
# want to run certain apps without asking for password...
# %users ALL=(SHUTDOWN) NOPASSWD: ALL
%users ALL=(ALL) ALL, NOPASSWD: SHUTDOWN, SYSTEM
[url]https://bkhome.org/news/[/url]
bark_bark_bark: I have it running on two old Pentium laptops - they are constructed to be rolled over by a tank and will probably last for 15 years more Funnny thing is that the batteries still works - I have laptops with an age of less than 3 years where battery is totally exhausted and they need instant external power to boot.
BarryK: Thanks a lot! The is brilliant - so much easier than my above codings. Adapted some of your sudo configs as well - thanks.
Still have very slow change of icons on ROX-desktop (GTK1.2-version) after mount/umount when run as spot - haven't got closer to speed it up - strange...but might be a missing call to ROX to revise status of file.
All this multiuser is quite a pain to get right - but a lot of fun and visit of places in code one seldom pay attention
Started to convert pmount to gtkdialog1 - realized that I need mut - and after finding the source and building of a static bin - almost done...
Probably old common knowledge but mut is actually a multicall binary giving us:
mut mutd mutdaemon mutforeground mutclient probepart probedisk probedisk2 probepci drivelist guess_fstype mounts mediaplug
in a 183K static bin. I haven't tested all for differences in output or speed but attached a package if anyone feels in testing mode...
The probedisk script gives:
real 0m0.203s
user 0m0.060s
sys 0m0.080s
The mut probedisk gives:
real 0m0.100s
user 0m0.000s
sys 0m0.000s
so might speed up things if its not too hard to implement.
BarryK: Thanks a lot! The
Code: Select all
[ "`whoami`" != "root" ] && exec sudo -A ${0} ${@}
Still have very slow change of icons on ROX-desktop (GTK1.2-version) after mount/umount when run as spot - haven't got closer to speed it up - strange...but might be a missing call to ROX to revise status of file.
All this multiuser is quite a pain to get right - but a lot of fun and visit of places in code one seldom pay attention
Started to convert pmount to gtkdialog1 - realized that I need mut - and after finding the source and building of a static bin - almost done...
Probably old common knowledge but mut is actually a multicall binary giving us:
mut mutd mutdaemon mutforeground mutclient probepart probedisk probedisk2 probepci drivelist guess_fstype mounts mediaplug
in a 183K static bin. I haven't tested all for differences in output or speed but attached a package if anyone feels in testing mode...
The probedisk script gives:
real 0m0.203s
user 0m0.060s
sys 0m0.080s
The mut probedisk gives:
real 0m0.100s
user 0m0.000s
sys 0m0.000s
so might speed up things if its not too hard to implement.
- Attachments
-
- mut2-src-1.3.2.1238_static.tar.gz
- (80.35 KiB) Downloaded 500 times
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
I don't know how far back it goes, but I know there was some kind of major rox fix to speed it up that involved creating a file/folder/variablegoingnuts wrote:Still have very slow change of icons on ROX-desktop (GTK1.2-version) after mount/umount when run as spot - haven't got closer to speed it up - strange...but might be a missing call to ROX to revise status of file.
I had written a similar program that used my xpm generating shell functions for the %used/free - let me know if I need to look for it.Started to convert pmount to gtkdialog1 - realized that I need mut - and after finding the source and building of a static bin - almost done...
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].
I recall amigo made a comment about hostname in this topic about rox speed:technosaurus wrote:I don't know how far back it goes, but I know there was some kind of major rox fix to speed it up that involved creating a file/folder/variable.
http://www.murga-linux.com/puppy/viewto ... 7&start=34
How does pUPnGO handle hostname? Could that be an issue?
greengeek: Thanks for the pointer. Adapted the modified hostname handling but with no luck.
After some tracking of what is going on it seems that as spot I run into this message from ROX:
The call (as spot) for "SetIcon" (in functions4puppy4) seems to run ok (no errors reported) but icon does not change. If I follow the request for "SetIcon" with a request for update (rox -x ${HOME}/.pup_event/drive_${1}) - in the functions4puppy4 script - I get the above error...
If I ask for the update (as spot) from rxvt command line it happens instantly. If I refresh the file view in /home/spot/.pup_event-folder it change the icon in the folder but icon on desktop is first changed when I move my mouse over the icon.
I am sure there is a single sign or two in some files that just has to be changed - its just how to find it....
As root it is fast changing and no problems at all.
After some tracking of what is going on it seems that as spot I run into this message from ROX:
which is spawn in ROX source-file "remoce.c" (origin from function "remote_init" which does include some hostname lookup)."Existing ROX-Filer process is not responding! Try with -n"
The call (as spot) for "SetIcon" (in functions4puppy4) seems to run ok (no errors reported) but icon does not change. If I follow the request for "SetIcon" with a request for update (rox -x ${HOME}/.pup_event/drive_${1}) - in the functions4puppy4 script - I get the above error...
If I ask for the update (as spot) from rxvt command line it happens instantly. If I refresh the file view in /home/spot/.pup_event-folder it change the icon in the folder but icon on desktop is first changed when I move my mouse over the icon.
I am sure there is a single sign or two in some files that just has to be changed - its just how to find it....
As root it is fast changing and no problems at all.
- technosaurus
- Posts: 4853
- Joined: Mon 19 May 2008, 01:24
- Location: Blue Springs, MO
- Contact:
I think rox uses sockets for its IPC and may have some assumptions as to not changing the user without restarting rox (for most distros this is true - spot is a hack in reverse polish notation)goingnuts wrote:After some tracking of what is going on it seems that as spot I run into this message from ROX:which is spawn in ROX source-file "remoce.c" (origin from function "remote_init" which does include some hostname lookup)."Existing ROX-Filer process is not responding! Try with -n"
The call (as spot) for "SetIcon" (in functions4puppy4) seems to run ok (no errors reported) but icon does not change. If I follow the request for "SetIcon" with a request for update (rox -x ${HOME}/.pup_event/drive_${1}) - in the functions4puppy4 script - I get the above error...
If I ask for the update (as spot) from rxvt command line it happens instantly. If I refresh the file view in /home/spot/.pup_event-folder it change the icon in the folder but icon on desktop is first changed when I move my mouse over the icon.
I am sure there is a single sign or two in some files that just has to be changed - its just how to find it....
As root it is fast changing and no problems at all.
that message sounds like one of the following IPC related issues:
incorrect permissions to access socket/pipe (file permission issue)
using the user name to find $HOME and expecting a file and/or directory structure to be there _and_ be the expected file/permissions/etc...
made up examples
/root/.rox-socket != /root/spot/.rox-socket
/root/spot/.config/... does not exist
looking for /tmp/rox478578-spot, but the actual is /tmp/rox478578-root
(It has been too long since I examined the IPC code, but that was the general idea)
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].
technosaurus: Thanks - you are probably very right. I have tried to create spot as a real user with HOME in /home/spot where spot owns everything etc. I think I will let the ROX desktop-icon-change for spot rest for a while - might change other things that fix it
Just an other observation: When ROX is told to update the icon blinky is showing activity...
Just an other observation: When ROX is told to update the icon blinky is showing activity...
I managed to build this with musl, though it took a couple trivial changes:goingnuts wrote:Uploaded below my present source of tinyXlib. From Changelog:Removed file Copying as well.20120719: Changed ICElib to include transport to make ROX-Filer compile.
20120916: Added GetFPath.c to get Abiword 1.0.7 compile. Added X11/Xmu/Misc.h for XawM-1.5u.
20121002: Added ListExt.c and QuBest.c to X11 for xdpyinfo
20121011: Changed libXt source and include/X11/Intrinsic.h to test if Xaw can be compiled. Added GetDflt.c to tinyX11 and added -DXOS_USE_MTSAFE_PWDAPI to tinyXll make flags
I have not tested the libXaw much but at least it compiled the attached xload - which is using approx 700k when running compared to the dynamic linked xload which uses approx 3400k...
1- The error messages were getting lost because it ignored failed compiles in subdirectories.
This can be fixed one of two ways:
remove the "; cd .." (safe because each line is in a subshell, so it doesn't change the directory where the next line is)
OR, change all of this to make <target> -C <dirname>
I used
Code: Select all
sed 's/cd \(.*\); \(make.*\);.*/\2 -C \1/g' -i Makefile
3- In libXaw/OS.c, I changed <asm/page.h> to <limits.h>, which defines PAGE_SIZE.
Also, it seems that libXdmcp.so is not being rm'd on make clean.
All told however, much easier to build than the old version with shell build scripts...
Is the tinyXserver-0.01 tarball source for the kdrive servers?