armv6-compiler-person wanted

I have compiled all of this lot manually:
http://distro.ibiblio.org/quirky/arm/pet_packages-armv6/
http://distro.ibiblio.org/quirky/arm/pet_packages-armv7/

These are "common" packages that are likely to be in all puppies and aren't available in the host-distro's packages (or the packages in the host-distro are unsuitable, such as too many dependencies).

Iguleder is doing some great development to get this all automated, something that we should look at in the future. Getting started with ARM, I have been feeling my way, and discovering a few issues with compiling, so perhaps doing it manually this time was good -- except for the amount of time it took.

I have compiled some armv6 PETs, at least I think they are, that should work in the Raspberry Pi. Due to backwards compatibility, they will work in the armv7-based Mele, which is why I haven't compiled those PETs for armv7.

I can't say that I'm keen on the thought of doing all that again, recompiling all those armv7 PETs as armv6. That's where I am seeking help. If anyone has a armv6-based box of any kind, or emulator, if you want to compile any of those packages, please do. Probably best if we went for a base armv6 with software floating point.

All of the source packages are here:
http://bkhome.org/sources/alphabetical/
Us#er#na#me: pu#pp#y Pa#ss#wo#rd: li#nu#x

After compiling a package, all that you have to do is open up the corresponding armv7 PET and bung in the replacement binaries, then change all occurrences of "armv7" to "armv6" in pet.specs file, and rename the package. Like this:

# tar -zxf dbus-123-armv7.pet
...put in armv6 binaries, edit pet.specs, change dir name.
then put it together again...
# dir2tgz dbus-123-armv6/
# tgz2pet dbus-123-armv6.tar.gz


Most packages are pretty straightforward to configure and compile. If running on armv6 hardware then is probably not even necessary to specify the '--build' parameter.
I have made some notes for some packages, that I will post as comments to this blog thread.

There are a couple of BaCon apps in Puppy, that you will find in the devx: /usr/sbin/pngoverlay.bac and /usr/sbin/welcome1stboot.bac. I compiled those for armv7, so they need to be redone for armv6.


Posted on 29 Apr 2012, 10:52


Comments:

Posted on 29 Apr 2012, 10:18 by BarryK
cups, ghostscript, foomatic-filters
My "old favourites" are cups 1.3.11 and ghostscript 8.15.4. You could use the host-distro's packages, but these older ones will work. Also, the older ghostscript is considerably smaller.

cups 1.3.11
I went to town disabling all sorts of things:
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-dbus --disable-pam --enable-libpaper --disable-ldap --disable-dnssd --disable-launchd --disable-slp  --disable-gssapi --disable-ssl --disable-use-network-default --disable-pap

# make
# make install


ghostscript 8.15.4
the package is actually 'espgs-8.15.4-patchedbk'
needs another patch:
# patch -p1 < ../espgs-gcc-40.patch

did this else compile fail:
# export CFLAGS='-fPIC'
# export LDFLAGS='-fPIC'
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-drivers=ALL --without-x --enable-cups --disable-gtk --with-ijs --disable-compile-inits
# make so
# make soinstall


Good idea to unset CFLAGS and LDFLAGS afterward.

foomatic-filters 4.0.7
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var

# make
# new2dir make install-cups




Posted on 29 Apr 2012, 10:25 by BarryK
Gutenprint, installwatch, netpbm
Gutenprint
compile failed, gave it a miss.

installwatch 0.7
part of 'checkinstall' source pkg.
# make
...error, conflicting types for 'scandir' and 'scandir64'. ...i commented out in /usr/include/dirent.h. and of course restored afterward.

netpbm 10.34
you might prefer to use the host-distro's netpbm.
a bit vague:

I edited Makefile.config.in, inserted "-fPIC" in a few places.


# ./configure
...asks questions.

...then edit Makefile.config, change CFLAGS line, -O3 to -O2, and append -fPIC
...make sure all -O3 changed to -O2.

# make
...error, have to comment out 'getline' declaration in /usr/include/stdio.h

# mkdir out-package
# make package pkgdir=out-package
...oh, got installed to /out-package
...this creates a package. now to install it:
# new2dir ./installnetpbm
...it asks questions.




Posted on 29 Apr 2012, 10:31 by BarryK
jimtcl, gwhere, superscan, libtubo, xfdiff_cut
jimtcl
needed by usb-modeswitch.
# ./configure --prefix=/usr --full

gwhere 0.2.3
must have:

# export CFLAGS='-fPIC'
# export LDFLAGS='-fPIC'

it must have the --enable-gtk20:
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-gtk2.0
# make

...error, with locale support. add this --disable-nls

# make
...success.


superscan 0.8-patched2
i hacked 'configure' to work with gtk2 only. previously it was aborting as 'gtk-config' missing.

unionfs_utils 0.2.1
to avoid the "-fPIC" problem, used --disable-shared:

# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-shared
# make

libtubo 4.5.0
this is needed by xfdiff.
compile static lib only.

# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-shared
# make

xfdiff_cut 4.5.0
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
# make




Posted on 29 Apr 2012, 10:39 by BarryK
bacon, dbus, dbus-glib, dhcpcd
bacon 1.0.25
# ./bacon.bash -d /tmp bacon.bac


...install 'bacon' into /usr/bin

to create the shared hug library:

# bacon -d /tmp -f hug.bac -o '-fPIC'

...install 'hug.so' to /usr/lib


dbus 1.2.4.2permissive-patched1
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-inotify

# make
...success
# new2dir make install


rebooted. not sure, but maybe dbus-glib needs to see correct running daemon?

dbus-glib 0.82
think need these:

# export CFLAGS='-fPIC'
# export LDFLAGS='-fPIC'
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-bash-completion


dhcpcd 5.2.12
# ./configure --libexecdir=/lib/dhcpcd --dbdir=/var/lib/dhcpcd --sysconfdir=/etc




Posted on 29 Apr 2012, 10:49 by BarryK
dialog, inkscapelite, xdialog
dialog 1.1-20110302
# export CPPFLAGS='-I/usr/include/ncursesw'
# ./configure --prefix=/usr --bindir=/bin --sbindir=/sbin --libdir=/lib --sysconfdir=/etc --localstatedir=/var --build=i486-pc-linux-gnu --enable-nls --with-ncursesw --enable-widec
# make
# new2dir make install

inkscapelite 0.36.3
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-xft --without-gnome-print

xdialog 2.3.1-patched_amigo
# ./autogen.sh --prefix=/usr --sysconfdir=/etc --localstatedir=/var

# make distclean
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-print-command=lpr --with-gtk2
# make
# new2dir make install


NOTE
One of the most difficult things was getting Ubuntu Lucid Lynx properly setup for compiling. The problem is to install enough -dev packages (and none of the unwanted ones). Many source packages will compile without any complaint if some DEBs that would enhance their performance are missing. In particular, sift through /usr/lib and check that all the required .so files are present.



Posted on 30 Apr 2012, 4:22 by Raffy
Set Top Box WM8710
Quote Barry: "If anyone has a armv6-based box of any kind..."

Just found this: Google Android 2.3 Internet TV Box WIFI Media Player 1080P Full HD HDTV HDMI VIA WM8710

quoted for as low as USD52 in aliexpress.

WM8710 is based on 800Mhz ARM1176JZF processor.


Posted on 30 Apr 2012, 4:30 by technosaurus
tslib
You may have already built it, but I didn't see it in the list... tslib (library for touch screen support) is one of the things you may want to compile and manually enable since a _lot_ of arm devices have built-in touch screens as it would make the packages much more universal in the long run.


Posted on 30 Apr 2012, 8:18 by BarryK
re more pkgs to compile
technosaurus,
For now, I am aiming for a building from Debian and Ubuntu arm debs, and they, or at least Lucid, have tslib.

But, as I have been getting closer to doing an actual build of Puppy, I have identified more packages that will have to be compiled and provided as PETs. Several of them. Which I will get stuck into right now.

Note, I am doing a Lucid Lynx build because that's what I am currently using. That was the SD image that Tom uploaded. As it is a working system, I have something to compare against and grab files off if necessary.

Raffy,
Yeah, but actually being able to get Linux to run on it, that is the problem. There is no base hardware standard, unlike our "PC compatibles".

In the case of the Mele, there are a dozen or so guys working on it and solving problems. Many of these are hardware guys who understand all the intricacies of circuitry and manufacturing and testing. Much of this work will be applicable to other A10 and A13 based systems.

I acknowledge some of those guys as the real brains here. I am just at the "user-end", putting together a customised Linux build.



Posted on 30 Apr 2012, 20:29 by Raffy
Yes
Yes, 10-4 Barry. Thanks.


Posted on 31 Apr 2012, 5:00 by Ted Dog
remote compile
Would a VNC client work half way around the world? It took about 6 weeks to get BaCon to work on my arm based kindle so I'm really a fish outta water here. If it could be practical, You are awake when I sleep and so on, could I leave a VNC session for you to login to?


Posted on 1 May 2012, 8:29 by BarryK
Re BaCon
Ted Dog,
No, it is easy to compile and install (in Lucid on the Mele anyway). Just follow my instructions above, and use the bacon PET as a template for installation.



Posted on 3 May 2012, 18:41 by mark tranter
Compiling
Hi Barry, I am having a go at this in my qemu RPi emulation. I started with rxvt. I'll let you know if I get anywhere.


Posted on 3 May 2012, 19:03 by BarryK
Re RasPi compiling
mark,
Thanks for that.

Lobster,
Regarding compiling on the RasPi, it has only 256MB RAM, yes? I don't think that is going to be enough, you will need a swap partition.

The Mele has 512MB, and I have been using a swap partition on my USB hard drive. If you have a USB hard drive, you could do the same thing.

However, I have now purchased a SATA HD, and will create a swap partition on that. This is for the Mele, you can't attach a SATA or IDE HD to the RasPi, everything has to be done via USB, and you will need a powered USB hub if the drive is to be powered off the USB cable.



Posted on 4 May 2012, 17:58 by Mark Tranter
PupPi
Hi Barry,
Here are the srchives with the things I've compiled:
rxvtARMv6
rubixARMv6

I had problems when trying to build some other things. I'll have another go this weekend.


Posted on 4 May 2012, 18:00 by Mark Tranter
swapfile
I think the debian image that Lobster is using makes a swapfile on the SD card. I'm not sure how big it is ...


Posted on 9 May 2012, 20:33 by mark tranter
ftp
Hi Barry,
I have set up an ftp site for the packages I have managed to compile on qemu RPi.

ftp PupPi files

account name: a3804781
password: puppi1



Posted on 9 May 2012, 20:49 by ftp list
mark tranter
Here's the packages I've compiled:
bcrypt
binutils
gfrename
gzip
inotifytools
patchutils
picpux
rubix
rxvt
sysfutils
tar
vala
xorg-sever


Posted on 18 May 2012, 16:11 by mark tranter
Bit of a slower week
Hi Barry,
I haven't done as much in terms of compiling this week (although I have managed to build Leafpad and Vim).
I didn't manage to find the "dev" packages for GTK+ in Arch. I need to ask for some help on the Arch forum, I think.
I have been able to order my RPi this week, so hopefully soon I will be able to test out these programs myself.
By the way, I have been wanting to have a go at some assembly code on the Pi (just for fun - something very simple). I am quite confused by the online materials I have read. Do you know of anywhere that has some good simple instructions for a newbie?
mark


Posted on 19 May 2012, 8:58 by BarryK
Re assembly
mark,
No, I haven't got a clue about ARM assembly code.