howto build a dsl extension?Forum: myDSL Extensions (deprecated) Topic: howto build a dsl extension? started by: jpaechnatz Posted by jpaechnatz on April 13 2005,14:35
I want to build some .dsl extensions. is there a howto? I searched the forum, but I didn't found a suitable guide... and in the documention I only found howto build an uci. I tried to build an uci, but the building process is not well documented, I got an .ci but didn't understand how to get this user.tar.gz working!?so this post contains two questions... 1. step-by-step .dsl building. 2. step-by-step .uci building, continuing at the point when the .ci is build. thanks! greets, joh. Posted by mikshaw on April 13 2005,16:01
There is no "suitable guide" at this point, but the forum is filled with useful bits and pieces. Put these together and you have everything you need.My suggestion about the UCI doument: look at it as guidance rather than step-by-step rules. It took me a while before fully understanding it, and noticed there are a few minor glitches in it. The initial text is a very important part, and in my opinion should be considered step1. You have to make sure your application is able to run from /opt/<appname> before you can build it into a .uci or tar.gz extension, so that would be the fist thing to do. Make a directory in /opt for your application files and try to run it that way. If you get error messages, it's probably because of one or both of the following: 1) Your application needs something which is not available in DSL. 2) It cannot find necessary files in the /opt/whatever directory because they are not in the standard bin and lib paths. If it is the second one, you will need to start the application with a wrapper, which is a shell script that sets up your environment so that these files can be found. For example, if your application contains libs that are not found in DSL, you may need to modify the LD_LIBRARY_PATH variable so the program can find these libs: export LD_LIBRARY_PATH=/opt/whatever/lib:$LD_LIBRARY_PATH exec /opt/whatever/bin/appname There are other issues which may prevent the app from running in /opt, but this goes beyond the scope of a single howto. This is one reason why there is no complete documentation on the subject...there are just too many factors to consider. You really should have some understanding of how the parts of a linux system work together in order to handle these unforseen issues, but experimenting with various extensions is one way to learn. I wouldn't assume that you can build a successful extension simply by following the steps of a howto without learning what these steps are doing. You also should understand file ownership, and how it relates to a myDSL extension. This is not mentioned in the documentation, but searching the extensions forum will come up with a couple of threads in which ke4nt explained the process. < http://damnsmalllinux.org/cgi-bin....;t=2362 > < http://damnsmalllinux.org/cgi-bin....;t=2363 > < http://damnsmalllinux.org/cgi-bin....;t=2442 > In a UCI extension, this is applicable only to the user.tar.gz file, since it is a mounted file rather than a directory structure copied into the system. It's very important for .dsl and .tar.gz extensions, though, since an improperly chowned file could have very unpleasant results. After this is completed, then the actual building of the extension can be done. Honestly the build process is not that difficult...the biggest task is in making your application work flawlessly from /opt, which as i said presents possible problems that are too numerous to include in a step-by-step document. After the program successfully runs, and ownerships and base directories are dealt with, the package is built-- dsl and tar.gz are both simply tar.gz archives, and uci is a compressed filesystem Building a .dsl extension is in my opinion the easiest of the three, since pre-compiled programs built for debian should pretty much work the same in DSL, without a wrapper. The only problem would be in making sure you have all dependencies included. -- This isn't the step-by-step you asked for, and it obviously isn't thorough (i needs me some more coffee), but the main goal of this post is to hopefully shed some light on the work it takes to build an extension....it's often not as simple as a step-by-step can tell. There are some docs very slowly being created, but i don't think any will be complete....the user is always going to have to do some learning and understanding the process more than just following steps. It might sound like a cop-out, but it's true. I've been working on a document that was supposed to make extension building as simple as possible, but it's continuing to get ore and more complex instead....there are just too many variables to make a simple step-by-step. Additionally, DSL is a rapidly evolving system...so far it has changed to quickly to keep up on the documentation. There are several people in these forums who have successfully learned the process from what is currently available in the forums, through searching and asking questions. I have a feeling it will continue this way for quite a while. Posted by mikshaw on April 13 2005,18:48
I just sent SU a rather lengthy tutorial on building tar.gz extensions from source. It's not 100% complete, but it does address some of the more common problems one might have while building .dsl and .tar.gz extensions. It also applies to the user.tar.gz archive included in uci extensions.
Posted by SaidinUnleashed on April 13 2005,22:53
Added to the docs, after a little proofreading.Didn't see anything wrong with it, so we'll run it up the flagpole and see who salutes it, so to speak. Thanks for the submission. -J.P. Posted by snipes on May 13 2005,13:12
I followed this howto and i got it first time < http://www.damnsmalllinux.org/talk/node/185 > thanks a lot! |