Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
dcore:development [2015/01/11 12:45] – [Package management scripts guide:] LichenSymbiont | dcore:development [2015/05/21 16:32] (current) – page is replaced by [[dcore:sce-import]]; left un-linked for reference by original author sm8ps | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Development: ===== | + | ===== Development ===== |
- | ==== Package management scripts guide: ==== | + | ==== Package management scripts guide ==== |
- | The scripts have quite a lot of fluff, without sufficient | + | The scripts have quite a lot of complicated stuff, without sufficient |
So here is my (LichenSymbiont) guide to the scripts. | So here is my (LichenSymbiont) guide to the scripts. | ||
Line 7: | Line 7: | ||
It also uses some more complex awk programs, so you should learn a bit about the [[http:// | It also uses some more complex awk programs, so you should learn a bit about the [[http:// | ||
And of course you need to know bash scripting, so here is a [[http:// | And of course you need to know bash scripting, so here is a [[http:// | ||
+ | And understand some pitfalls in Bash (some applicable to Ash): [[http:// | ||
- | Starting with a general | + | ** First a quick summary of the most important parts of the scripts: ** |
+ | |||
+ | importsce is the command-line package manager (script), which calls deb2sce for getting the .deb files, and collecting them into the .sce package. | ||
+ | It also calls the update function for the indices of Debian packages (debGetEnv). | ||
+ | |||
+ | As you should expect, it must handle the regular Debian and Ubuntu package repository mirrors. | ||
+ | Beyound that, it also downloads the dCore specific dependencies, | ||
+ | It also contains specific packages compiled for dCore (fltk library, flwm_topside and others). | ||
+ | |||
+ | The scripts are complicated, | ||
+ | |||
+ | **SCE packages:** | ||
A sce package is a [[http:// | A sce package is a [[http:// | ||
Line 15: | Line 27: | ||
But you can add new files to an already created file-system. Read about it [[http:// | But you can add new files to an already created file-system. Read about it [[http:// | ||
This allows for the creation of SquashFS files that stores all your favorite programs, in one file, by just incrementally adding them (this is not a feature of importsce yet). | This allows for the creation of SquashFS files that stores all your favorite programs, in one file, by just incrementally adding them (this is not a feature of importsce yet). | ||
+ | |||
+ | Then sce packages are mounted as [[https:// | ||
+ | loadsce also loads all the dependencies of a package. | ||
+ | |||
+ | ** importsce: ** | ||
Now I will walk you through the importsce script, so download the latest scripts, [[http:// | Now I will walk you through the importsce script, so download the latest scripts, [[http:// | ||
Line 20: | Line 37: | ||
And follow along, looking at the actual importsce script. | And follow along, looking at the actual importsce script. | ||
- | First it sets global variables for the script, and sets up the /tmp directory. | + | - First it sets global variables for the script, and sets up the /tmp directory. |
+ | - Then removes temporary files (potentially left from a previous run of the scripts). | ||
+ | - Then it sets the mirrors to the dCore specific packages and the file with extra dependency information for packages. | ||
+ | - Then importsce sets a bunch of variables from the options used when calling the command. Then from its config file, if it exists (though it doesn' | ||
+ | - Then decreases OPTIND by one, making the first argument the package name (instead of the one-letter options) | ||
+ | - Then sets the target .sce file to be created (just sets the TARGET variable to the package name used when calling it). | ||
+ | - And enters the /tmp directory. | ||
+ | - Then downloads the special dCore packages (like Xprogs and flwm_topside), | ||
+ | - Then extracts its content into a bunch of text-files. | ||
+ | - Then checks if the target package is to be excluded (and exits if it's on the excluded list). | ||
+ | - Then it checks if a .lst file (file containing a list of packages to download) is being used, and changes the targetted .sce accordingly. | ||
+ | - Then it checks for more options from the config file, and then checks if you are trying to use a Windows file-system to extract files to (and if so, it informs the user of this, and exits). | ||
+ | - Then it let's you enter a package name, if no target it specified (why is this so far down the script?). And exits the script if you don't specify anything. | ||
+ | - Then it checks if it can find the package in the package indices (both regular repos, and meta-packages and special dCore packages). This is done through the debGetEnv script, which also stores the relevant repo in the DEBINX variable. | ||
+ | - And finally it calls the deb2sce script (through the mksce function) after a bunch of checks, which does the real work of downloading the package(s) (with dependencies and all). | ||
- | Then importsce sets a bunch of variables from the options used when calling the command. | + | Then after deb2sce has downloaded all of the required packages, it runs the mksquashfs program, which takes all of the downloaded deb files and makes the sce package. |
- | Then from its config file, if it exists (though it doesn' | + | |
- | So the config file takes precedence over the command-line options. | + | |
- | Then sets the target .sce file to be created. | + | deb2sce also does the -l option operations, of importing packages from a file containing a list of packages. |
- | Then acquires the mirror to the special dCore packages (like Xprogs and flwm_topside), | + | **deb2sce |
- | There are also other things, like dependencies to exclude. You can study the file youself, by downloading it from [[http:// | + | |
- | Then downloads the latest file containing these packages. | + | |
- | And extracts its content into a bunch of text-files. | + | |
- | Then it checks if a .lst file (file containing a list of packages to download) is being used, and changes | + | This script apparently sets up the /tmp directory all over again, and sets some of the same global variables. |
- | Here I skip a few checks... | + | First skim over the functions, to understand generally what they do. |
- | Then it let's you enter a package name, if no target | + | - Then we start at #Main, where it first checks |
- | + | | |
- | Then it checks if it can find the package in the package | + | - After it removes the unused debinx files, |
- | This is done through | + | - Then checks if the package |
- | + | - If it matches a regular Debian package, it sets the mirrors and other variables pertaining to the repo containing it, and displays this information. | |
- | And finally | + | - Then it creates the directory for the stored deb files, and sce files. And changes the import directory to the in-RAM one, and enters it, if you have set this option. |
- | + | - Then creates and enters | |
- | Then after deb2sce has downloaded all of the required | + | - Then it gets the dependencies for your package(s), using debGetDeps -- iterating |
- | + | - Then it checks | |
- | deb2sce also does the -l option operations, of importing packages from a file containing | + | - Then it gets extra dependent packages from / |
+ | - Then checks if the target sce already exists (why so far down?). | ||
+ | - Then it checks if a .dep file already exists for you target package, and informs the user of them. | ||
+ | - Then it checks if there is enough space to extract into. | ||
+ | - Then it adds the new dependencies to the temporary dependency file (/ | ||
+ | - Then the interactive import logic. | ||
+ | | ||
+ | - And finally, in this big loop, it downloads | ||
+ | |