alternative puppy build system
Some clarifications for woof-next in no particular order:
1. "pkglist" aka "package list" aka the list of packages that will be assembled into the puppy.sfs:
--> located in your workdir, the filename is "basesfs"
2. The directories in the tarball:
- builder -> builder scripts (builders for .deb and .txz packages), scripts to make packages (.txz and .deb), scripts to prepare a repository which you can "ftp-upload" to somewhere else
- kernel-kit -> supposedly to compiler kernel, this is part of Woof-CE proper; I didn't modify it for woof-next and I don't use it.
- woof-arch -> arch-dependent programs (mostly compiled binaries, there are ones for x86, x86_64, arm)
- woof-code -> arch-independent programs (mostly scripts, like SNS, etc)
- woof-distro -> specification to build based on a particular parent distro. Contains default pkglist (basesfs) and location of the repository URL
woof-code is most interesting. In it, you will find:
- boot -> this is puppy's initrd in "exploded" form
- kernel-skeleton -> original Woof-CE hacks for firmware loading, not used (the "huge kernel" mode replaces this)
- rootfs-packages -> contains packages in "exploded" form (=dirs + pinstall.sh script).
- rootfs-skeleton -> puppy's scripts
- woof2-scripts_and_files -> Woof-CE original build scripts, not used, left for reference purposes
what's inside "rootfs-packages"?
These are the places where you can add your hacks and custom stuff, if you don't want to build a proper package for it. What are the current ones?
- debian-setup -> contains adaptation that must be done to debian-based distros to make it boot/work.
- pthemes -> should be obvious what this is
- rox-filer-data -> should also be obvious
- slack-setup -> contains adaptation that must be done to make slackware-based distros to make it work/boot
These "rootfs-packages" are added into the build chroot when you use the "directive" %addpkg in the pkglist. For example, for in the pkglist for devuan, you will see "%addpkg debian-setup" which means import and install "debian-setup" package which is located in the woof-code/rootfs-skeleton/debian-setup package.
3. Some clarifications for the commands used in pkglist. Note that different parent distro supports different commands; e.g. debian-based pkglist has "%depend" command which activatest dependency-tracking (e.g. installing a package will also install its dependencies); while slackware-based pkglist doesn't have this command because, well, slackware packages do not have dependency tracking encoded into it.
Common commands:
%include -> include another file
%makesfs -> run mksquashfs and create SFS of chroot
%repo -> specificy additional repositories (obsolete, this should be done by updating repo-url instead)
%import -> copy over a given directory to chroot (similar to %addpkg, but does not support pinstall.sh and the copy is not registered as a package)
%addpkg -> copy over a given directory to chroot, run pinstall.sh, and record this as a "package" (which means they will be visible by the package management tools and can be un-installed)
%reinstall -> re-install a given package
%remove -> remove an already installed package (perhaps pulled automatically by dependency, etc)
%addbase -> install rootfs-skeleton (puppy scripts)
%bblinks -> install busybox symlinks (obviously you must already install busybox before this can work)
%cutdown -> try to reduce size by moving components outside the main chroot to elsewhere
%symlink -> make a symlink
%rm -> remove a file
%mkdir -> make a directory
%touch -> create an empty file
%chroot -> run a given common inside the build chroot
%exit -> stop processing pkglist here and ignore the rest of the file (useful for debugging)
--- additional commands for debian-based distro only:
%lock -> lock package so they cannot be updated
%depend -> turn on dependency tracking
%nodepend -> turn off dependency tracking
%pkg_by_prio -> install packages given by the named "priority" (or category).
%bootstrap -> install packages using simulated dpkg
%dpkg -> install packages using dpkg (dpkg must be installed in host system)
%dpkgchroot -> install packages using dpkg installed in chroot (obviously you must already install "dpkg" package before this can work)
%dpkg_configure -> run dpkg-reconfigure
4. Under the workdir, there is a repo-XXX directory. Under this directory, there is a file called "pkgdb". This is the file that contains the names of all packages in the repositories. If you, for example, need to add a package but you're not sure what is the exact name, look into this file. The file contain lines separated by a vertical bar ("|"), the package name is the first filed. E.g you see this:
The package name is "acpi-support".
Enjoy.
========================
I was wrong to say that the scripts won't build trusty packages. I was wrong to say that trusty repos were deleted. (They were moved, and woof-next's repo-url have been updated to point to these archive repos). Perhaps I just had a bad network connection at that time; because now I have just re-run trusty build and it builds and works.
I have added some workarounds and more packages to trusty build so that SNS now works (for wired). I have added wpa supplicant and wireless-tools too, but I don't know if they work because I test in qemu which does not emulate wifi. I have added the same modification for devuan too and it works as well. I have applied the same modification for slackware too.
Please re-download the tarball from https://github.com/puppylinux-woof-CE/w ... ext.tar.gz, or you can see the changes from https://github.com/puppylinux-woof-CE/w ... /woof-next
==========
Note: Let me repeat again: building Puppy from parent distro requires modifications. Some of the modifications are generic, some are specific to each distro, some are specific to a distro version.
woof-next is an old project, a dead project. Its puppy scripts were dated from 5 years ago; and the modifications I've applied were applicable to distro versions from 5 years ago --> this is true either of slackware (14.1), ubuntu (trusty), and debian (sid). I have recently added devuan-ascii for curiosity sake, and to my pleasant surprise it would build only very little change (change of "udev" to "eudev"); but please do not always assume that this is the case. Especially, if you're building from "debian sid" which is a rolling release (=its content always changes, "sid" today is not the same as "sid" 5 years ago), then don't expect an immediately working build.
Similar comment applies if you try to build from e.g. bionic. It will build (as in, it will make the SFS for you) but it may or may not work because you're specifying the wrong package (package got renamed), or because you need new modifications. Until you supply a better package list, and modify the scripts to make it work - then it won't.
Short story is that, as I have written elsewhere (see my comment that s243a saved from the other deleted thread), if you are expecting a build script that produces fully working puppy - then woof-next is not for you. However if you think that it can help you achieve your goal, and you're prepared to spend some effort to make it work; then ask away.
1. "pkglist" aka "package list" aka the list of packages that will be assembled into the puppy.sfs:
--> located in your workdir, the filename is "basesfs"
2. The directories in the tarball:
- builder -> builder scripts (builders for .deb and .txz packages), scripts to make packages (.txz and .deb), scripts to prepare a repository which you can "ftp-upload" to somewhere else
- kernel-kit -> supposedly to compiler kernel, this is part of Woof-CE proper; I didn't modify it for woof-next and I don't use it.
- woof-arch -> arch-dependent programs (mostly compiled binaries, there are ones for x86, x86_64, arm)
- woof-code -> arch-independent programs (mostly scripts, like SNS, etc)
- woof-distro -> specification to build based on a particular parent distro. Contains default pkglist (basesfs) and location of the repository URL
woof-code is most interesting. In it, you will find:
- boot -> this is puppy's initrd in "exploded" form
- kernel-skeleton -> original Woof-CE hacks for firmware loading, not used (the "huge kernel" mode replaces this)
- rootfs-packages -> contains packages in "exploded" form (=dirs + pinstall.sh script).
- rootfs-skeleton -> puppy's scripts
- woof2-scripts_and_files -> Woof-CE original build scripts, not used, left for reference purposes
what's inside "rootfs-packages"?
These are the places where you can add your hacks and custom stuff, if you don't want to build a proper package for it. What are the current ones?
- debian-setup -> contains adaptation that must be done to debian-based distros to make it boot/work.
- pthemes -> should be obvious what this is
- rox-filer-data -> should also be obvious
- slack-setup -> contains adaptation that must be done to make slackware-based distros to make it work/boot
These "rootfs-packages" are added into the build chroot when you use the "directive" %addpkg in the pkglist. For example, for in the pkglist for devuan, you will see "%addpkg debian-setup" which means import and install "debian-setup" package which is located in the woof-code/rootfs-skeleton/debian-setup package.
3. Some clarifications for the commands used in pkglist. Note that different parent distro supports different commands; e.g. debian-based pkglist has "%depend" command which activatest dependency-tracking (e.g. installing a package will also install its dependencies); while slackware-based pkglist doesn't have this command because, well, slackware packages do not have dependency tracking encoded into it.
Common commands:
%include -> include another file
%makesfs -> run mksquashfs and create SFS of chroot
%repo -> specificy additional repositories (obsolete, this should be done by updating repo-url instead)
%import -> copy over a given directory to chroot (similar to %addpkg, but does not support pinstall.sh and the copy is not registered as a package)
%addpkg -> copy over a given directory to chroot, run pinstall.sh, and record this as a "package" (which means they will be visible by the package management tools and can be un-installed)
%reinstall -> re-install a given package
%remove -> remove an already installed package (perhaps pulled automatically by dependency, etc)
%addbase -> install rootfs-skeleton (puppy scripts)
%bblinks -> install busybox symlinks (obviously you must already install busybox before this can work)
%cutdown -> try to reduce size by moving components outside the main chroot to elsewhere
%symlink -> make a symlink
%rm -> remove a file
%mkdir -> make a directory
%touch -> create an empty file
%chroot -> run a given common inside the build chroot
%exit -> stop processing pkglist here and ignore the rest of the file (useful for debugging)
--- additional commands for debian-based distro only:
%lock -> lock package so they cannot be updated
%depend -> turn on dependency tracking
%nodepend -> turn off dependency tracking
%pkg_by_prio -> install packages given by the named "priority" (or category).
%bootstrap -> install packages using simulated dpkg
%dpkg -> install packages using dpkg (dpkg must be installed in host system)
%dpkgchroot -> install packages using dpkg installed in chroot (obviously you must already install "dpkg" package before this can work)
%dpkg_configure -> run dpkg-reconfigure
4. Under the workdir, there is a repo-XXX directory. Under this directory, there is a file called "pkgdb". This is the file that contains the names of all packages in the repositories. If you, for example, need to add a package but you're not sure what is the exact name, look into this file. The file contain lines separated by a vertical bar ("|"), the package name is the first filed. E.g you see this:
Code: Select all
acpi-support|0.142|acpi-support_0.142_i386.deb|http://archive.ubuntu.com/ubuntu/pool/main/a/acpi-support/acpi-support_0.142_i386.deb|optional|admin|d76d0009b493c61694b6ec5a85ef0fbf|acpid,
Enjoy.
========================
I was wrong to say that the scripts won't build trusty packages. I was wrong to say that trusty repos were deleted. (They were moved, and woof-next's repo-url have been updated to point to these archive repos). Perhaps I just had a bad network connection at that time; because now I have just re-run trusty build and it builds and works.
I have added some workarounds and more packages to trusty build so that SNS now works (for wired). I have added wpa supplicant and wireless-tools too, but I don't know if they work because I test in qemu which does not emulate wifi. I have added the same modification for devuan too and it works as well. I have applied the same modification for slackware too.
Please re-download the tarball from https://github.com/puppylinux-woof-CE/w ... ext.tar.gz, or you can see the changes from https://github.com/puppylinux-woof-CE/w ... /woof-next
==========
Note: Let me repeat again: building Puppy from parent distro requires modifications. Some of the modifications are generic, some are specific to each distro, some are specific to a distro version.
woof-next is an old project, a dead project. Its puppy scripts were dated from 5 years ago; and the modifications I've applied were applicable to distro versions from 5 years ago --> this is true either of slackware (14.1), ubuntu (trusty), and debian (sid). I have recently added devuan-ascii for curiosity sake, and to my pleasant surprise it would build only very little change (change of "udev" to "eudev"); but please do not always assume that this is the case. Especially, if you're building from "debian sid" which is a rolling release (=its content always changes, "sid" today is not the same as "sid" 5 years ago), then don't expect an immediately working build.
Similar comment applies if you try to build from e.g. bionic. It will build (as in, it will make the SFS for you) but it may or may not work because you're specifying the wrong package (package got renamed), or because you need new modifications. Until you supply a better package list, and modify the scripts to make it work - then it won't.
Short story is that, as I have written elsewhere (see my comment that s243a saved from the other deleted thread), if you are expecting a build script that produces fully working puppy - then woof-next is not for you. However if you think that it can help you achieve your goal, and you're prepared to spend some effort to make it work; then ask away.
You are welcome. The more the merrier.fredx181 wrote:P.S. I'm busy myself with creating a build system using similar as above for Devuan(Dog) "beowulf", will probably share soon.
Inspired by all the talk recently about building a system, so thanks !
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]
hi jamesbond
thank you once again
for this masterpiece
and for all your help getting it going
it already builds a working devuan
just needs tweaking
as you say
we just need to put the right instructions in
once we learn it
anyone can build puppies at will
and we now longer need to constantly whine
about not having a woof-ce we can use
this really is a game changer
wanderer
thank you once again
for this masterpiece
and for all your help getting it going
it already builds a working devuan
just needs tweaking
as you say
we just need to put the right instructions in
once we learn it
anyone can build puppies at will
and we now longer need to constantly whine
about not having a woof-ce we can use
this really is a game changer
wanderer
For those who want to try, follow wanderer advice above. Start with a parent distro that has been tested to work. Slackware, devuan, trusty. Then once you get the hang on it, you can try other parent distro and start modifying. Or perhaps even write new builder scripts to make it work from e.g. fedora or opensuse or alpine limux etc.
I no longer test the debian sid build because: sid is rolling release so testing is useless. My successful twst today does not guarantee your success tomorrow. E.g. i twsted sid 2015 and it no longer works now, while the trusty/slackware stuff works because they dont change.
Of course you can test with other distro too. But i suggest you learn to walk before you run. Test build with a known successful build, so when you build with your own parent dostro, you know what to do when the build fail by comparing between successful build amd the failed ones.
Good luck eveeyone.
I no longer test the debian sid build because: sid is rolling release so testing is useless. My successful twst today does not guarantee your success tomorrow. E.g. i twsted sid 2015 and it no longer works now, while the trusty/slackware stuff works because they dont change.
Of course you can test with other distro too. But i suggest you learn to walk before you run. Test build with a known successful build, so when you build with your own parent dostro, you know what to do when the build fail by comparing between successful build amd the failed ones.
Good luck eveeyone.
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]
Thanks, for DevuanDog "beowulf" build system see here.jamesbond wrote:...You are welcome. The more the merrier.fredx181 wrote:P.S. I'm busy myself with creating a build system using similar as above for Devuan(Dog) "beowulf", will probably share soon.
Inspired by all the talk recently about building a system, so thanks !
But again, this is not "real" Puppy (whatever it means?), the most ideal IMHO would be a merge of 'Dog' and 'Puppy', but I'm not capable to do that, oh well.. maybe it's good like it is, one way or the other...
Fred
hi fredx and everyone
i think this thread should be for all puppy inspired build systems
because they will all eventually merge together
for example i am using parts of corepup upupbb and woof-next
in my system
the overall idea is that an ordinary mortal
will be able to build a puppy like system
puppy will be the base
so no one will be able to say it isnt puppy
but the point is to modify and improve puppy
not just remain static
wanderer
i think this thread should be for all puppy inspired build systems
because they will all eventually merge together
for example i am using parts of corepup upupbb and woof-next
in my system
the overall idea is that an ordinary mortal
will be able to build a puppy like system
puppy will be the base
so no one will be able to say it isnt puppy
but the point is to modify and improve puppy
not just remain static
wanderer
hi all
i have posted my 3 initial attempts
at building a woof-next devuan puppy
in the repository on the first post
since i like really long names
they are
d1.iso
had mpaint as the only application for some reason
d2.iso
i added leafpad
and removed mpaint
d3.iso - built with jamesbonds latest woof-next today
i added leafpad and dillo
and removed mpaint
had to keep running build-sfs.sh over and over
but it finally downloaded the debs
all built and load fine
but a lot is messed up
and will need to be corrected
and no internet yet
but i will continue to build more isos until i learn the system
thanks again jamesbond
wanderer
i have posted my 3 initial attempts
at building a woof-next devuan puppy
in the repository on the first post
since i like really long names
they are
d1.iso
had mpaint as the only application for some reason
d2.iso
i added leafpad
and removed mpaint
d3.iso - built with jamesbonds latest woof-next today
i added leafpad and dillo
and removed mpaint
had to keep running build-sfs.sh over and over
but it finally downloaded the debs
all built and load fine
but a lot is messed up
and will need to be corrected
and no internet yet
but i will continue to build more isos until i learn the system
thanks again jamesbond
wanderer
1. Create a folder under rootfs-packages ((e.g. "mypet" folder)foxpup wrote:What is the (best) way to add .pet packages?
2. Extract the .pet to this folder.
3. In pkglist, add "%addpkg mypet"
---
The other way, is to convert the pet into a native package (.deb or .txz), make a repo out of it. Then edit repo-url, to add your new repo, and in the pkglist add the package (like you add packages from any repo). This is the approach that I have taken with xdialog and gtkdialog; I upload them to my own repo (I have repo for slackware and debian). This is more complicated but if you have multiple arches, in the long run this is the better way to do it.
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]
Exactly! I'm on my way to the International Office for the Protection of Puppy Linuxfredx181 wrote:Then demand your money back ! Double !musher0 wrote:I'm seriously losing patience... My initial interest being alternative widow managers...
NOT fathering abortive Puppies...
Sorry for being so frank.
Go to court if you don't get it, "they" should pay you for all your suffering !
Users ( IOPPLU ) right after writing this line!!!
Bureau International pour la Protection des Utilisateurs de Puppy Linux ( BIPUPL ),
in French. The acronym in French sounds like an organization for bi-polar
syndrome sufferers. That's intentional. That's because the Puppy devs themselves
are bi-polar: sometimes they are in a helping mood and sometimes not.
Last edited by musher0 on Sun 12 May 2019, 00:21, edited 1 time in total.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
Nonsense, wanderer ! I'm not encroaching on your territory!wanderer wrote:hi musher0
try the devuan puppy in the repository
and use the devuan build tarball
it boots fine
but of course has a lot of work that needs to be done
remember this is to be an alternative to woof-ce
so i assume it will take a little effort to complete
wanderer
The next "really intelligent" move is rather:
how do we isolate the "booting system" ( including straps, zippers and / or laces )
that works in the devuan build, and "graft it" to the other builds, so that ALL builds
boot correctly.
Do you see the difference?
~~~~~~~~~~~~~~~
It may not even be the "booting system", for the Puppy-Next-Sid. I tested booting
it with gyro's new zip procedure for installing to thumbnail drives, and it boots -- but
hangs at the "switchroot". Same thing if booting from CD.
Could it be that jamesbond forgot an argument when using chroot for this build?
Derivative question:
Do you think using the water drop torture on jamesbond will get us the solution we
need to this problem?
BFN.
musher0
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
~~~~~~~~~~
"You want it darker? We kill the flame." (L. Cohen)
Here is pure speculation. The sid build will pull in systemd; but not all of its libraries. After switchroot, the kernel will attempt to run "init" (which is systemd) and it just dies. Note that systemd init will not even bother to run the usual puppy initscripts.musher0 wrote:It may not even be the "booting system", for the Puppy-Next-Sid. I tested booting
it with gyro's new zip procedure for installing to thumbnail drives, and it boots -- but
hangs at the "switchroot". Same thing if booting from CD.
Could it be that jamesbond forgot an argument when using chroot for this build?
We MI-6 agents eat water torture for breakfast. On the other hand, you reeeally don't want to know what __we__ can do ...Derivative question:
Do you think using the water drop torture on jamesbond will get us the solution we
need to this problem?
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]
wanderer wrote:hi all
i have posted my 3 initial attempts
at building a woof-next devuan puppy
in the repository on the first post
since i like really long names
they are
d1.iso
had mpaint as the only application for some reason
d2.iso
i added leafpad
and removed mpaint
d3.iso - built with jamesbonds latest woof-next today
i added leafpad and dillo
and removed mpaint
had to keep running build-sfs.sh over and over
but it finally downloaded the debs
all built and load fine
but a lot is messed up
and will need to be corrected
and no internet yet
but i will continue to build more isos until i learn the system
thanks again jamesbond
wanderer
I had a bit of free time so I downloaded the d3 iso.Booted to a prompt so "startx" got me to a desktop and I did get on the internet with Dillo.
Old hyperthreading P4 using the 8139too driver on wired ethernet.
After your very first build, you will have repo-XXXX in your workdir. Keep a copy of this directory somewhere; or in fact keep the entire workdir. You can edit basesfs etc and when you run build-sfs.sh it will only download what has changed (e.g. new packages).wanderer wrote: had to keep running build-sfs.sh over and over
but it finally downloaded the debs
Yes, it definitely is init. I just run a test build myself, and if I remove "systemd" and "systemd-sysv" packages, it boots straight away. But xorg , while it launches, doesn't detect keyboard and mouse because "udev" is not there ... (udev __is__ now part of systemd in debian). Need to find a quick workaround.That said, 007, if it's not switchroot, it's the init?
Fatdog64 forum links: [url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Latest version[/url] | [url=https://cutt.ly/ke8sn5H]Contributed packages[/url] | [url=https://cutt.ly/se8scrb]ISO builder[/url]
@jamesbond
Thanks for explaining about adding pet packages.
I had these 2 possibilities figured out, but thought there would be something more specific for Puppy's own pets.
What I may do later, just thinking out loud:
add petget/PPM and Pkg so I can build a Puppy from a Puppy's pet repo (on ibiblio).
I could make a rebuild of Wary/Racy that way, or use the repos of Barry for Quirky or Easy. lol
And now a noob question:
How would the entry for let's say /mnt/home/pets/slacko/ look like in repo-url?
It's high time to rebuild a slacko with your new woof-ce-next to get some exercise.
.
Thanks for explaining about adding pet packages.
I had these 2 possibilities figured out, but thought there would be something more specific for Puppy's own pets.
What I may do later, just thinking out loud:
add petget/PPM and Pkg so I can build a Puppy from a Puppy's pet repo (on ibiblio).
I could make a rebuild of Wary/Racy that way, or use the repos of Barry for Quirky or Easy. lol
And now a noob question:
How would the entry for let's say /mnt/home/pets/slacko/ look like in repo-url?
It's high time to rebuild a slacko with your new woof-ce-next to get some exercise.
.
Interesting thought to merge Puppy and Dog.fredx181 wrote:the most ideal IMHO would be a merge of 'Dog' and 'Puppy'
Can you explain what a merge would be like? What could be worked on?
Btw, I do not know the Dogs
... or not, but it's good for creativity and fun, understanding and skills.wanderer wrote:i think this thread should be for all puppy inspired build systems
because they will all eventually merge together
.
Well... maybe better see what I wrote as "thinking out loud"foxpup wrote:Interesting thought to merge Puppy and Dog.fredx181 wrote:the most ideal IMHO would be a merge of 'Dog' and 'Puppy'
Can you explain what a merge would be like? What could be worked on?
Btw, I do not know the Dogs
One of the biggest differences between Puppy and Dog is the package management.
The Dogs are very close to 'Debian Live' with the comfort of being able to use apt-get or Synaptic. So combining the richness of Puppy with that would be ideal IMO, but how... I don't have specific ideas atm (except what I wrote earlier about debootstrap).
Fred