Are you a spammer

Please note, that the first 3 posts you make, will need to be approved by a forum Administrator or Moderator before they are publicly viewable.
Each application to join this forum is checked at the Stop Forum Spam website. If the email or IP address appears there when checked, you will not be allowed to join this forum.
If you get past this check and post spam on this forum, your posts will be immediately deleted and your account inactivated.You will then be banned and your IP will be submitted to your ISP, notifying them of your spamming. So your spam links will only be seen for an hour or two at most. In other words, don't waste your time and ours.

This forum is for the use and enjoyment of the members and visitors looking to learn about and share information regarding the topics listed. It is not a free-for-all advertising venue. Your time would be better spent pursuing legitimate avenues of promoting your websites.

TheeMahn's O/S Builder

Source code I have written openly published for your viewing pleasure.


TheeMahn's O/S Builder

Postby TheeMahn » Sun Aug 10, 2014 10:15 pm

This article is work in progress, please at this point take it as a grain of salt. Until this initial statement disapears.
gamers.png
Ultimate Edition 4.2 Gamers 32 bit has been built. 100% by tmosb

TheeMahns Operating System Builder

Disclaimer / Introduction:
I am Glenn "TheeMahn" Cady, leading developer of Ultimate Edition Linux and leading programmer of aforesaid Operating System. I have been building Ultimate Edition Operating Systems since the year 2006. I have been writing software in excess of 30 years, so I am no newbie in application development. I have slowly been removing tasks from my agenda of tasks I have at hand, which is large none the less. I have been doing so in production of software. What is TheeMahn's Operating System Builder?

TheeMahn's Operating System builder will build one of 84 different Operating Systems with the simplicity of a single command dropped in the terminal. It is not limited to the production of Ultimate Edition, it too will build a Ubuntu O/S from the ground up. Future versions could encapsulate Debain to do the same as an example.

I take 0 responsibity for hosing your current Operating System / software etc. This application will not run w/o the proper permissions and that is a solid root environment. With hightened permissions comes great responsibility. I personally have not hosed my Operating System, however I am quite savvy and very comfortable in a terminal. That being said; your milage may vary. Did you know another job I have is documentation management this entire document is a work in progress and you can rest assured will adjust as time goes on. No wonder I can't answer your emails etc. Remove one job at a time right? I do have software in works to autogenerate documentation. Certainly not as elaborate as this document is and only 1/2 done.

Pre-requisites / Requirements:
I highly suggest creating a subfolder to work out of open a terminal and enter the following:
Code: Select all
mkdir wip/
cd wip

Assume the role of su (superuser), a password for this account will have to be made / set:
Code: Select all
sudo passwd #Enter your current password & password for new account 2 times
su # Enter the password you set last


Software wise TheeMahn's O/S Builder does have additional software requirements (the deb will install these for you):
Depends: libc6(>=2.5-0ubuntu1),wget,rsync,squashfs-tools,lzma,genisoimage,memtest86+,python
Recommends: ttf-liberation, kvm, gnome-session-canberra, qemu-kvm


The depends line are absolute requirements, the recommends are for example if you intend to test the newly built Operating System (qemu). I do highly suggest installing the recommended as well.

Usage / Help system:
Let's begin, by delving into the poorly documented help system (I'm sure I will enhance as time goes on):
theemahn@JackHammer:~$ tmosb
DEBUGGING Number of switches passed: 0
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.
Usage: tmosb -<-COMMAND> [OPTION]
Mandatory arguments to long options are identical for short options.
possible commands...

-b --build builds Operating System(s)
-B --buildiso builds ISO
-C --clearcache clears system cache
-c --cacheinfo displays various cache information
-e --extract extract ISO(s)
-h --help this help message
-p --pull pulls all source code to current folder
-t --test test ISO in virtual machine and exit
-u --upgrade distro upgrades existing Operating System(s)
-v --version dump version info and exit

tmosb --help [COMMAND] for further information.
theemahn@JackHammer:~$


Let's go right down the list the build [option], perhaps the most important:
build.png
Build command

theemahn@JackHammer:~$ tmosb --build
DEBUGGING Number of switches passed: 1
Switch 1: --build
1:--build 2: 3:
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.4-x86-lite.iso
tmosb --build ultimate-edition-3.4-x64-lite.iso
tmosb --build ultimate-edition-3.4-x86-gamers.iso
tmosb --build ultimate-edition-3.4-x64-gamers.iso
tmosb --build ultimate-edition-3.4-x64.iso
tmosb --build ultimate-edition-3.4-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.5 Precise Pangolin x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.5-x86-lite.iso
tmosb --build ultimate-edition-3.5-x64-lite.iso
tmosb --build ultimate-edition-3.5-x86-gamers.iso
tmosb --build ultimate-edition-3.5-x64-gamers.iso
tmosb --build ultimate-edition-3.5-x64.iso
tmosb --build ultimate-edition-3.5-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.6 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.6-x86-lite.iso
tmosb --build ultimate-edition-3.6-x64-lite.iso
tmosb --build ultimate-edition-3.6-x86-gamers.iso
tmosb --build ultimate-edition-3.6-x64-gamers.iso
tmosb --build ultimate-edition-3.6-x64.iso
tmosb --build ultimate-edition-3.6-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.7 Quantal Quetzal x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.7-x86-lite.iso
tmosb --build ultimate-edition-3.7-x64-lite.iso
tmosb --build ultimate-edition-3.7-x86-gamers.iso
tmosb --build ultimate-edition-3.7-x64-gamers.iso
tmosb --build ultimate-edition-3.7-x64.iso
tmosb --build ultimate-edition-3.7-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.8 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.8-x86-lite.iso
tmosb --build ultimate-edition-3.8-x64-lite.iso
tmosb --build ultimate-edition-3.8-x86-gamers.iso
tmosb --build ultimate-edition-3.8-x64-gamers.iso
tmosb --build ultimate-edition-3.8-x64.iso
tmosb --build ultimate-edition-3.8-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.9 Raring Ringtail x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.9-x86-lite.iso
tmosb --build ultimate-edition-3.9-x64-lite.iso
tmosb --build ultimate-edition-3.9-x86-gamers.iso
tmosb --build ultimate-edition-3.9-x64-gamers.iso
tmosb --build ultimate-edition-3.9-x64.iso
tmosb --build ultimate-edition-3.9-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.0 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.0-x86-lite.iso
tmosb --build ultimate-edition-4.0-x64-lite.iso
tmosb --build ultimate-edition-4.0-x86-gamers.iso
tmosb --build ultimate-edition-4.0-x64-gamers.iso
tmosb --build ultimate-edition-4.0-x64.iso
tmosb --build ultimate-edition-4.0-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.1 Saucy Salamander x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.1-x86-lite.iso
tmosb --build ultimate-edition-4.1-x64-lite.iso
tmosb --build ultimate-edition-4.1-x86-gamers.iso
tmosb --build ultimate-edition-4.1-x64-gamers.iso
tmosb --build ultimate-edition-4.1-x64.iso
tmosb --build ultimate-edition-4.1-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.2 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.2-x86-lite.iso
tmosb --build ultimate-edition-4.2-x64-lite.iso
tmosb --build ultimate-edition-4.2-x86-gamers.iso
tmosb --build ultimate-edition-4.2-x64-gamers.iso
tmosb --build ultimate-edition-4.2-x64.iso
tmosb --build ultimate-edition-4.2-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.3 Trusty Tahr x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.3-x86-lite.iso
tmosb --build ultimate-edition-4.3-x64-lite.iso
tmosb --build ultimate-edition-4.3-x86-gamers.iso
tmosb --build ultimate-edition-4.3-x64-gamers.iso
tmosb --build ultimate-edition-4.3-x64.iso
tmosb --build ultimate-edition-4.3-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.4 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.4-x86-lite.iso
tmosb --build ultimate-edition-4.4-x64-lite.iso
tmosb --build ultimate-edition-4.4-x86-gamers.iso
tmosb --build ultimate-edition-4.4-x64-gamers.iso
tmosb --build ultimate-edition-4.4-x64.iso
tmosb --build ultimate-edition-4.4-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.5 Utopic Unicorn x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.5-x86-lite.iso
tmosb --build ultimate-edition-4.5-x64-lite.iso
tmosb --build ultimate-edition-4.5-x86-gamers.iso
tmosb --build ultimate-edition-4.5-x64-gamers.iso
tmosb --build ultimate-edition-4.5-x64.iso
tmosb --build ultimate-edition-4.5-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.04 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.04-x86.iso
tmosb --build ubuntu-desktop-12.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.10 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.10-x86.iso
tmosb --build ubuntu-desktop-12.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.04 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.04-x86.iso
tmosb --build ubuntu-desktop-13.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.10 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.10-x86.iso
tmosb --build ubuntu-desktop-13.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.04 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.04-x86.iso
tmosb --build ubuntu-desktop-14.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.10 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.10-x86.iso
tmosb --build ubuntu-desktop-14.10-x64.iso
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.
theemahn@JackHammer:~$


A pause for the cause, the above commands will build one of 84 above listed operating systems. No other input or interaction required on your end as the end user. I have spent a great amount of painstaking time to ensure ease of use. So utilizing the information above, to create something that just currently does not exist.
Code: Select all
tmosb --build ultimate-edition-4.2-x86-gamers.iso

The above command for example will build a 32 bit version of Ultimate Edition Gamers 4.2 a LTS release. Pretty heavy application we are looking at here is it not? I will not rob you of the output of running such a command and thus the end results:

tmosb.log
This was a cached build, will post a non-cached build.
(77.85 KiB) Downloaded 240 times


Continuing on:
theemahn@JackHammer:~$ tmosb --help buildiso
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: buildiso
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.

Usage buildiso;
tmosb -B [TARGETISO]
Invokes tmosb to build [TARGETISO] from a preivious build. The format of the ISO
must comply as follows:
[TARGETISO]
Valid arguments are as follows:
Existant folder, is optional. It will otherwise look for information in .disk/info
Example: tmosb --buildiso ultimate-edition-4.2-x64-lite/
Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format.
theemahn@JackHammer:~$


We are going to do the next 2 out of order, there is a reason for this as I will soon explain, cacheinfo:
root@JackHammer:/home/theemahn/wip# tmosb --cacheinfo trusty
TheeMahn O/S Builder (tmosb) 1.8.7, 08/14/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Total cache usage: 21G ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Caching System Information ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒7.1M extract-cd.tar.gz
7.6G precise
2.6M quantal
2.6M raring
3.2G saucy
672M tmp
7.3G trusty
1.9G utopic
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ trusty Caching Information ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒1.1M ubiquity-slideshow-kubuntu_90_all.deb
1.5M ultimate-edition-4.2-gamers-core-files.deb
1.5M ultimate-edition-4.2-lite-core-files.deb
1.5M ultimate-edition-4.3-gamers-core-files.deb
1.5M ultimate-edition-4.3-standard-core-files.deb
4.2G x64
3.1G x86
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
root@JackHammer:/home/theemahn/wip#

Cachinfo will display current caching statistics. I incorporated the cache system in order to accelerate future building of additional operating systems. It will cause the computer to make the determination on weather the application / game is availible locally and use it primarly as upposed to re-downloading the package in question.
theemahn@JackHammer:~/wip3$ tmosb --help cacheinfo
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: cacheinfo
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.

Usage cacheinfo;
tmosb -c
Displays various cache information.
Example: tmosb --cacheinfo
theemahn@JackHammer:~/wip3$

The caching system is distro specific as well as architecture specific. Work smarter not harder. The cache folder is located in a hidden folder in your currently executed folder under .cache/ the amount of data stored in this cache can be specifically controlled with the --clearcache option.
theemahn@JackHammer:~/wip3$ tmosb --help clearcache
DEBUGGING Number of switches passed: 2
Switch 1: --help
Switch 2: clearcache
TheeMahn O/S Builder (tmosb) 1.8.6, 08/10/2014
GNU tmosb (TheeMahn O/S Builder) home page: <http://os-builder.com/>.
E-mail bug reports to: <TheeMahn@os-builder.com>.
Be sure to include the word tmosb somewhere in the Subject: field.

Usage clearcache;
tmosb -C <REQUIREMENT>
Clears cache by disgression.
<REQUIREMENT> is as follows:
<debootstrap> clears debootstrap image(s).
<minimal> clears minimal ISO image(s)
<all> clears the entire cache system.
Example: tmosb --clearcache debootstrap
theemahn@JackHammer:~/wip3$


While you are building you will see the following or thereby similar:
DEBUGGING: we are in /home/theemahn/wip3/ultimate-edition-4.2-x86-gamers
Pulling 3.8G of cache for trusty x86 build. Please wait: Success.
Initating Tmp cache sync operation of 628M. please wait: Success.
INITIATING FINAL BUILD PROCESS FOR ultimate-edition-4.2-x86-gamers.iso


Future Operating system build(s) will not have to download the additional 3.8GB of data + the 628MB, a tremendous savings in time and bandwidth I can assure you even on high speed internet. To make things better it does it in a fassion that let's say in your cache you have version 1.9 of a program and the internet has 2.0 it will pull from the internet v/s cache, so once again work smarter, not harder.

Onward, enter --extract:
theemahn@JackHammer:~/Documents$ tmosb --help extract
DEBUGGING HELP FUNCTION: 1:--help 2:extract 3:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <TheeMahn@os-builder.com>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Usage extract;
tmosb -e <ISO>
Extracts <ISO> for further processing.
Example: tmosb --extract ultimate-edition-4.0-x64.iso
theemahn@JackHammer:~/Documents$

Originally I wrote the extraction function to be mindful of multiple Operating systems and have since learned some operating systems utilize different methods in compression persay in the method of compression of the Operating System. I have since enhanced this function to detect as it is extracting it weather an older system or not. To put this in perspective I am going to use the extraction command to demonstrate this fact:
root@JackHammer:/home/theemahn/wip# ls
ultimate-edition-2.6-x64-lite.iso ultimate-edition-4.2.1-lite-x64.iso
root@JackHammer:/home/theemahn/wip# tmosb --extract
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <TheeMahn@os-builder.com>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Processing 1 of 2 detected Operating systems, please wait. ▒
▒ Operating System Version detected: 2.6 ▒
▒ Creating folder ultimate-edition-2.6-x64-lite/ ▒
▒ Moving ultimate-edition-2.6-x64-lite.iso to ultimate-edition-2.6-x64-lite/ ▒
▒ Operating System Version detected: 4.2.1 ▒
▒ Creating folder ultimate-edition-4.2.1-lite-x64/ ▒
▒ Moving ultimate-edition-4.2.1-lite-x64.iso to ultimate-edition-4.2.1-lite-x64/ ▒
▒ Scanning folders... ▒
▒ Processing Folder: ultimate-edition-2.6-x64-lite/ ▒
▒ Mounting ultimate-edition-2.6-x64-lite.iso ▒
▒ Synchronizing ultimate-edition-2.6-x64-lite.iso ▒
▒ Mounting SquashFs ▒
▒ Copying SquashFs ▒
▒ Unmounting SquashFS ▒
▒ Unmounting ultimate-edition-2.6-x64-lite.iso ▒
▒ Cleaning up... ▒
▒ Processing Folder: ultimate-edition-4.2.1-lite-x64/ ▒
▒ Mounting ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Synchronizing ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Mounting SquashFs ▒
▒ Copying SquashFs ▒
▒ Unmounting SquashFS ▒
▒ Unmounting ultimate-edition-4.2.1-lite-x64.iso ▒
▒ Cleaning up... ▒
▒ All ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Execution Time: 2m33s
root@JackHammer:/home/theemahn/wip#

O.K. so it almost makes me breakfast & does my laundry, we are not done. I won't waste my time or others on the help system other then telling you if you want to learn any of the commands therein involved it is tmosb --help [command], tmosb --help extract for example.

PULL
Are you too an Operating System Architect? I, in deliberation wrote this option to allow you to make miraculous changes here in the way tmosb works. Pull will pull the source code into your current folder allowing you to modify it to your hearts content. The software is smart enough to notice you have done so and will utilize your version v/s tmosb. That my friends is a true definition of a code warrior & an open source entusiast. It too has your back:
root@JackHammer:/home/theemahn/wip# tmosb --pull
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <TheeMahn@os-builder.com>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Copying source tmosb to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source uecorebuilder to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source usplash-builder to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source tmgrub to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Copying source internal to /home/theemahn/wip: ▒
▒ Success. ▒
▒ Feel free to modify the source in your favorite editor ▒
▒ Example: gedit internal ▒
root@JackHammer:/home/theemahn/wip#

If or not you have made an error, tmosb is here to evaluate the entire situation:
root@JackHammer:/home/theemahn/wip# tmosb --pull
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn's O/S Builder (tmosb) 1.9.2, 11/02/14 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <TheeMahn@os-builder.com>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: tmosb exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: uecorebuilder exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: usplash-builder exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: tmgrub exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ERROR: internal exists, not overwriting.
Use: tmosb --pull --overwrite if you are sure. ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Feel free to modify the source in your favorite editor ▒
▒ Example: gedit internal ▒
root@JackHammer:/home/theemahn/wip#

How it works(Still in works):
Everything is done in 3 stages, by 1 program and 4 sub-programs.
The Programs
  • tmosb - The main program (control flow)
  • uecore-builder - Builds the core of the Operating System.
  • usplash-builder - Builds the Ubiquity Splash files pulls donors list and also includeds those that have donated.
  • internal - Software that runs in the chroot environment. Adds desktop environments and customizations.
  • tmgrub - Refreshes the kernel and builds initramfs
The Stages
  • Stage 1 - Debootstrap, these files are tared at the end of operation and shoved to cache to accelerate future building.
  • Stage 2 - Internal Software, all apt-cache is shoved to .cache/ to accelerate any future builds, via architecture and dist.
  • Stage 3 - tmgrub, forces installation of dependancies and refreshes initramfs and kernel.

Source Code (for the adventurous):
Please be fully advised the below has not been released to the internet at time of post and provides new features this code will constantly be changing, until I have stability across all platforms & architectures.

I am a true code warrior and love to give away free software as well as the source code therein involved. It makes me happy to know if just one person I have made happy in the incarnation of a program. People ultilize source I have written to enhance existing software they have written as well. Seagate and Nasup comes to mind here. Feel free to utilize any software I have dropped to the net to date as you see fit.

There are 5 programs, err 1 program and 4 sub-programs that work the magic of TheeMahn's O/S builder as of version 1.8.8 (released to the public) and 1.8.9 below. Information copied from the unfinished how it works section above.

Everything is done in 3 stages, by 1 program and 4 sub-programs.
The Programs
  • tmosb - The main program (control flow)
  • uecore-builder - Builds the core of the Operating System.
  • usplash-builder - Builds the Ubiquity Splash files pulls donors list and also includeds those that have donated to Ultimate Edition.
  • internal - Software that runs in the chroot environment. Adds desktop environments and customizations.
  • tmgrub - Refreshes the kernel and builds initramfs
The Stages
    • Tmosb - Verify's what the user wants in building thier perhaps custom Operating System.
  • Stage 1 - Debootstrap, these files are tared at the end of operation and shoved to cache to accelerate future building.
  • Stage 2 - Internal Software, all apt-cache is shoved to .cache/ to accelerate any future builds, via architecture and dist.
  • Stage 3 - tmgrub at this point, forces installation of dependancies, refreshes initramfs, adds additional wifi support and refeshes kernel / grub.
    • Tmosb - Generates final Operating System, prompts the user for optional testing & loading to a thumbdrive (thumbos if existant) .
Example a new array has been created in tmosb 1.8.9 (many other changes as well):
declare -a OLDRELEASES=("2.6" "2.7");

Why the heck would I go and do that? I installed Ultimate Edition 2.6.8 yesterday and still love it. I find that everything just works there. You would like to think running it you are screwed, no updates... If Canonical (Ubuntu) has a stoke over the software and encurring additional load on thier servers of the software I am writing. I will purchase another server and mirror every package they host. It is not beyond me, I have done the same where getdeb is involved when they kept going down. I do not have unlimited funds and may bite off more then I can chew there ;) I implemented a cache system to prevent or circumvent from such happening. Anyways a bit of coding via TheeMahn, brings Lucid back from the dead ;)
Code: Select all
DEFAULTREPO='http://us.archive.ubuntu.com/ubuntu/'
         for OST in ${OLDRELEASES[@]}
            do
               if [[ $OST == $CVERSION ]]; then
                  DIST=${OSARRAY[$array_counter]}
                  FULLNAME=${DISTARRAY[$array_counter]}
                  DEFAULTREPO='http://old-releases.ubuntu.com'
               fi
               array_counter=$(($array_counter + 1))
            done

         echo -e "${bldgrn}Injecting $DEFAULTREPO of CODEBASE: $CODEBASE into sources list...${txtrst}"
         echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list

The above code will check against what you are trying to build and inject old repositories if applicable. It may seem to the untrained eye I have added 2 Operating Systems, the fact is when I get arm, armel , gamers, lite into the picture will build 100's of Operating Systems, many non-existing. A chunk of the code was pre-built for me using code-cleanup a part of the ultimate-edition-code-cleanup-package. Onto the code TheeMahn already:
/bin/tmosb:
Code: Select all
#!/bin/bash
# ==============================================================================
# title         :TheeMahn's O/S Builder
# description      :Builds Ultimate Edition Operating Systems.
# author      :theemahn <theemahn@ultimateedition.info>
# date         :08/31/2014
# version      :1.8.9
# usage         :tmosb --help
# manual      :man tmosb
# notes         :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8:    Initial public release
#
# ==============================================================================
# Version Control

APPNAME="TheeMahn O/S Builder"
PROGNAME="tmosb"
VERSION="1.8.9"
BUILDDATE="08/26/2014"
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"

# Logging output
# exec 1> /var/log/tmosb-session.log
# exec 1>> /var/log/tmosb-session.log 2>&1
LOG_FILE="/var/log/tmosb.log"
# exec 1 | tee ${LOG_FILE}
# exec 2 | tee ${LOG_FILE}

# Will I utilize this?  To be determined.
declare -a DISKSIZES=('KB' 'MB' 'GB' 'TB' 'PB' 'EB' 'ZB' 'YB')
#declare -i KBS

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0

# Declare integer for whether a drive is detachable.
declare -i DETACHABLE

# Not required, but optional. No prompting for testing etc. if false.
QEMUINSTALLED=$(which kvm)

# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1

# Set some internal variables and arrays
OS='ultimate-edition'
COS="Ultimate_Edition"
UOS="Ultimate Edition"
STARTM=`date -u "+%s"`

# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
DISTSSUPPORTED=15
declare -a ISLTS=("2.6" "2.7" "3.4" "3.5" "4.2" "4.3" "12.04" "14.04");
declare -a OSARRAY=('lucid' 'lucid' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a UEARRAY=("2.6" "2.7" "3.4" "3.5" "3.6" "3.7" "3.8" "3.9" "4.0" "4.1" "4.2" "4.3" "4.4" "4.5" '12.04' '12.10' '13.04' '13.10' '14.04' '14.10' );
declare -a UETYPES=("lite" "gamers")
declare -a DISTARRAY=("Lucid Lynx" "Lucid Lynx" "Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
declare -a UEARCH=("i386" "amd64" "armel" "armhf");
declare -a OLDRELEASES=("2.6" "2.7");
declare -a CYCLE=("x86" "x64" "armel" "armhf");
declare -a EXTRADE=("XFCE" "MATE" "KDE" "LXDE" "AWESOME" "GNOME" "RAZORQT")
declare -i CVER;
declare -i CSIZE;
declare -a APPLICATIONS=('tmosb' 'uecorebuilder' 'usplash-builder' 'tmgrub' 'internal');
declare -a APPSRC=('/bin' '/bin' '/bin' '/usr/share/ultimate_edition' '/usr/share/ultimate_edition');
declare -a ARGUMENTS=();
declare -a ARGLENGTH=();
declare -a LOGFILEZ=("edit/var/log/bootstrap.log" "edit/var/log/apt/history.log" "edit/var/log/dpkg.log");

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"

# Basic caching Structure
mkdir -p .cache/tmp/

# Debugging function to monitor passed arguments.
function CommandLineInterpreter () {
   #echo -e "${bldgrn}Number of switches passed: $#"
   for var in "$@"
   do
      array_counter=$(($array_counter + 1))
      #echo "Switch $array_counter: $var"
   done
}

# Future implementation - log all chroot results.
function LogResults () {
   echo -e "${bldgrn}Initiating Logging function... in $PWD${txtrst}"
   for EACH in ${LOGFILEZ[@]}
   do
      echo -en "${bldgrn}Checking for $EACH: "
      if [[ -f $EACH ]]; then
         echo "Found $EACH Logging to ${LOG_FILE}"
      else
         echo "Non-existant."
      fi
   done
}


# BEGIN CODE Borrowed from TMOSB, massively customized. This function when
# written fully will enter code cleanup application  and I will not look back ;)
function Columnize () {
   # Columnize is an internally called function exclusively.
   # EXAMPLE
   # -t to shove through the column titles we will count the number of switches and
   # calculate spacing eventually.
   if [[ $1 == '-t' ]]; then
      #echo -e "${bldgrn}Number of switches passed: $#"
      for ARG in "$@"
      do
         array_counter=$(($array_counter + 1))
         if [[ $array_counter -gt 2 ]]; then
            #echo "Switch $array_counter: $ARG"
            ARGUMENTS[$array_counter]=$ARG
            tLen=${#ARGUMENTS[$array_counter]}
            if [[ $tLen -ge $WIDEST ]]; then
               WIDEST=$tLen
            fi
            #echo "Length of ${ARGUMENTS[$array_counter]} is $tLen"
         fi
         #echo "The widest passed varible is $WIDEST"
      done
   else
      #echo -e "${bldgrn}Number of switches passed: $#"
      for ARG in "$@"
      do
         array_counter=$(($array_counter + 1))
         if [[ $array_counter -gt 1 ]]; then
            #echo "Switch $array_counter: $ARG"
            ARGUMENTS[$array_counter]=$ARG
            tLen=${#ARGUMENTS[$array_counter]}
            if [[ $tLen -ge $WIDEST ]]; then
               WIDEST=$tLen
            fi
            #echo "Length of ${ARGUMENTS[$array_counter]} is $tLen"
         fi
         #echo "The widest passed varible is $WIDEST"
      done
   fi
   #echo "#: $# VARS: $*"
   LONGESTLENGTH=${#2}
   #echo "Length of $2 is $LONGESTLENGTH"
   #echo $COLUMNZ
   MAINS=$(echo "scale=2; $COLUMNZ-30" | bc)
   MAINS=${MAINS%.*}
   #echo $MAINS
   MAINS=$(expr $MAINS - 2)
   MAINS=$(expr $MAINS / 4)
   #echo $MAINS
   if [[ $1 = '-t' ]]; then
      #"#" "DEV" "VENDOR" "LABEL" "TYPE" "SIZE"
      printf "%-0s %-16s %-7s %-16s %-7s %-3s %-13s %-3s %-16s %-1s\n" "▒" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
   else
      #MAINS=$(expr $MAINS / 2)
      printf "%-0s %-16s %-7s %-16s %-7s %-3s %-13s %-3s %-16s %-1s\n" "▒" "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8"
   fi
}

# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
   # Is X11 running?
   X=$( pidof X )
   # Does the user have the optional Ultimate Edition Sound scheme installed?
   if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
      WAVE=1
   fi
   # Is the user in an X11 GUI environment and have notification OSD installed?
   if [[ $X && $NOTIFY ]]; then
      a=$(notify-send "$APPNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
   fi
   # Does the user have pre-requisites? If so, break out the Cylon voice.
   if [[ $SOUND && $WAVE ]]; then
      a=$(canberra-gtk-play -i itisdone 2>/dev/null)
   fi
   # Display message in terminal unconditionally
   echo $1
}

# Usage: Eye Candy "Message"
function EyeCandy() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   # ▒ Repostorm 1.7.7 is entering extraction mode. ▒
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
      echo -e "▒ "$STP" ▒"
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
   fi
}

function Encapsulate() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒ Repostorm 1.7.7 is entering extraction mode.                       ▒

   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      DISTANCE=$(expr $COLUMNZ - $STRLEN)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      echo -en "▒ "$STP
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
   fi
}

# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
   RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}

# Center data passed to function on screen
function Center () {
   STP=$1
   if [[ $STP ]]; then
      STRLEN=${#STP}
      CENTER=$(expr $STRLEN / 2 )
      #CENTER=CENTER-1
      TCENTER=$(expr $COLUMNZ / 2 )
      #TCENTER=TCENTER-1
      DISTANCE=$(expr $TCENTER - $CENTER)
      DISTANCE=$(expr $DISTANCE - 2)
      echo -en "${txtrst}"
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
      echo -en "${bldgrn} $STP ${txtrst}"
      TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
      CALC=$(expr $RR + $TT + $STRLEN + 2)
      if [[ $CALC -lt $COLUMNZ ]]; then
         ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
      fi

      # Dubugging:

   fi      # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}
function Error () {
   echo -en "${bldred}"
   FullBar
   Center "$1"
   FullBar
   echo -en "${txtrst}"
}
# Version dump header
#function VersionDump {
#   if [[ -w ${LOG_FILE} ]]; then
#      echo -e "${undwht}$APPNAME ($PROGNAME) $VERSION, $BUILDDATE${txtrst}" 2>&1 | tee ${LOG_FILE}
#      echo "GNU $PROGNAME ("$APPNAME") home page: <http://$WEBSITE/>." 2>&1 | tee --append ${LOG_FILE}
#      # echo "COMMAND EXECUTED: "$* | tee --append ${LOG_FILE}
#   else
#      echo -e "${undwht}$APPNAME ($PROGNAME) $VERSION, $BUILDDATE${txtrst}"
#      echo "GNU $PROGNAME ("$APPNAME") home page: <http://$WEBSITE/>."
#   fi
#   echo "E-mail bug reports to: $EMAIL."
#   echo "Be sure to include the word $PROGNAME somewhere in the Subject: field."
#}

function VersionDump {
   Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
   Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
   Encapsulate "E-mail bug reports to: $EMAIL."
   Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
   FullBar
}


# Virtual machine testing function.
function Virtual {
   TOPROCESS=$1
   if [[ $TOPROCESS == "--test" ]];then
      TOPROCESS=$2
   fi
   if [[ $TOPROCESS == "-t" ]];then
      TOPROCESS=$2
   fi
   #echo -e "${bldylw}DEBUGGING PASSED VARS: 1:$1 2:$2 3:$3${txtrst} PROCESS: $TOPROCESS"
   if ! [[ $DISPLAY ]]; then
      echo -e "${bldred}No X11 session detected.  Exiting.${txtrst}"
      exit 0;
   fi
   # Declare a few integer variables
   declare -i MEMORY
   declare -i DEDICATED
   TEMPO=$(cat /proc/meminfo | grep 'MemTotal'|cut -d ':' -f2 | sed 's/ kB//g')
   MEMORY=$TEMPO
   # See if end user has 3GB or greater memory
   if [[ $MEMORY -ge 3096000 ]]; then
      # If so set maximum the virtual machine can have.
      DEDICATED=2047
   else
      # Limited resources. Use a quarter the end users memory.
      MAINS=$(echo "scale=2; $MEMORY/1000*.25" | bc)
      # dump the decimal, we want a raw integer.
      DEDICATED=${MAINS%.*}
   fi

   # Snatch the number of CPU Core(s) the end user has.
   CORES=$(cat /proc/cpuinfo | grep "processor" | sed '/model/d' | wc -l)

   # Dump data to the end user.
   echo -e "${bldgrn}"$MEMORY "memory and "$CORES "CPU core(s) detected.\nUtilizing $DEDICATED MB of memory and $CORES CPU Core(s) to full potential."

   # Check for existence of ISO, if so launch VM, enable kvm acceleration.
   DEVICE=$(echo $TOPROCESS | grep "/dev")
   ISISO=$(echo $TOPROCESS | grep ".iso")
   #echo -e "${bldylw}DEBUGGING (this will be removed prior to final release):\n"
   if [[ $DEVICE ]]; then
      echo -e "DEVICE: $DEVICE"
   fi
   if [[ $ISISO ]]; then
      echo -e "ISO: $ISISO\n"
   fi
   echo "INFOLDER: $PWD"
   if [ -f $ISISO ]; then
      EyeCandy "TMOSB: Testing ISO $TOPROCESS in a virtual machine.${txtrst}"
      A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d menu=on cdrom=$TOPROCESS 2>/dev/null)
      #if ! [[ $A ]]; then
      a=$(kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TOPROCESS -name TMOSB 2>/dev/null)
      #fi
   else
      # Block device?

      if [[ $DEVICE ]]; then
         if [[ -b $1 ]]; then
            EyeCandy "TMOSB: Testing Thumb-drive $1 in a virtual machine.${txtrst}"
            A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d menu=on cdrom=$TOPROCESS 2>/dev/null)
            if ! [[ -r $1 && $A ]]; then
               A=$(kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TOPROCESS -name TMOSB 2>/dev/null)
            else
               echo -e "${bldred}ERROR: Permission is denied${txtrst}, please use escalated permission."
               echo "sudo TMOSB --test $*"
               exit 0;
            fi
         else
            # Lost in space !!! ;)
            echo -e "${bldred}Error: Invalid option $TOPROCESS"
            Help test $1
            exit 0
         fi
      else
         TD='/dev/'$TOPROCESS
         if [[ -b $TD ]]; then
            EyeCandy "TMOSB: Testing Thumb-drive $TD in a virtual machine.${txtrst}"
            A=$(qemu-system-x86_64 -enable-kvm -m $DEDICATED --boot d cdrom=$TD 2>/dev/null)
            if ! [[ $A ]]; then
               if [[ -r $TD ]]; then
                  kvm -m $DEDICATED -smp $CORES -usb -boot d -cdrom $TD -name TMOSB
               else
                  echo -e "${bldred}ERROR: Permission is denied${txtrst}, please use escalated permission."
                  echo "sudo TMOSB --test $*"
                  exit 0;
               fi
            fi
         else
            # Lost in space !!! ;)
            echo -e "${bldred}Error: Invalid option $TOPROCESS"
            Help test $1
            exit 0
         fi
      fi
   fi
   Notification "All operations completed successfully."
}

# END Code borrowed from ThumbOS 1.0.8
# Pushes stored cache if any, into the chroot environment.
function PushCache(){
   BASEPULL=$1
   ARCH=$2
   # echo "DEBUGGING: we are in $PWD"
   if ! [[ $BASEPULL && $ARCH ]]; then
      echo -e "CRITICAL ERROR Push Cache: Invalid caching switches provided. BASE: $1 ARCH:$2"
      exit 0;
   fi
   if [[ $BASEPULL ]]; then
      # APT CACHE - WE ARE ALWAYS LOOKING TO ACCELERATE THE ENTIRE PROCESS
      # Why rsync as we did way down below when we can move files.
      # Much faster to just straight up move the files back and forth.

      if [[ -d $CURRENT/.cache/$BASEPULL/$ARCH/apt/ ]]; then
         CACHESIZE=$(du -hs $CURRENT/.cache/$BASEPULL/$ARCH/apt/ | awk '{print $1}')
         echo -e -n "${bldgrn}Pushing $CACHESIZE of cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
         SUCCESS=$((mv $CURRENT/.cache/$BASEPULL/$ARCH/apt/*.deb edit/var/cache/apt/archives/) 2>/dev/null)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      else
         echo -e "${bldylw}No cache folder, first $BASEPULL $ARCH based O/S build?${txtrst}"
         mkdir -p .cache/$BASEPULL/$ARCH/apt/
      fi

      #TMP CACHE
      if [[ -d $CURRENT/.cache/tmp/ ]]; then
         CACHESIZE=$(du -hs $CURRENT/.cache/tmp/ | awk '{print $1}')
         if [[ $CACHESIZE ]]; then
            echo -e -n "${bldgrn}Pushing $CACHESIZE of temp cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
         fi
         SUCCESS=$((mv $CURRENT/.cache/tmp/*.deb edit/tmp/) 2>/dev/null)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      else
         echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
         mkdir -p $CURRENT/.cache/tmp/
      fi
      sync
   else
      echo -e "${bldred}CRITICAL ERROR: FUNCTION Push Cache called without or missing switch."
      #   echo "debug: 1:$1 @:$@"
      exit 0;
   fi
}
# Displays various caching information.
function CacheInfo(){
   DISTRIBUTION=$2
   # echo "1: $1 2: $2 3:$3 4:$4"
   TOTALUSAGE=$((du -hs .cache/  | awk '{print $1}') 2>/dev/null)
   if [[ $TOTALUSAGE ]]; then
      VersionDump
      FullBar
      Encapsulate "Total cache usage: $TOTALUSAGE"
      FullBar
      Center "Caching System Information"
      cd .cache/
      for EACH in $(ls)
      do
         du -hs $EACH
      done
      Center "$2 Caching Information"
      if [[ $2 && -d $2 ]]; then
         cd $2
         for EACH in $(ls)
         do
            du -hs $EACH
         done
         FullBar
      fi
   fi
}

# Pulls stored cache if any, from the chroot environment to the .cache/ folder.
function PullCache(){
   BASEPULL=$1
   ARCH=$2
   # echo "DEBUGGING: we are in $PWD"
   if ! [[ $BASEPULL && $ARCH ]]; then
      echo -e "CRITICAL ERROR Pull Cache: Invalid caching switches provided. BASE: $1 ARCH:$2"
      exit 0;
   fi
   if [[ $BASEPULL ]]; then
      if [[ -d $CURRENT/.cache/$BASEPULL/$ARCH/apt/ ]]; then
         CACHESIZE=$(du -hs edit/var/cache/apt/archives/ | awk '{print $1}')
         echo -e -n "${bldgrn}Pulling $CACHESIZE of cache for $BASEPULL $ARCH build. Please wait: ${txtrst}"
         SUCCESS=$((mv edit/var/cache/apt/archives/*.deb $CURRENT/.cache/$BASEPULL/$ARCH/apt/) 2>/dev/null)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      else
         echo -e "${bldylw}No cache folder, first $BASEPULL $ARCH based O/S build?${txtrst}"
         mkdir -p $CURRENT/.cache/$BASEPULL/$ARCH/apt/
      fi
      #TMP CACHE
      CACHESIZE=""
      CACHESIZE=$(du -hs edit/tmp/ | awk '{print $1}')
      if [[ $CACHESIZE ]]; then
         if [[ -d $CURRENT/.cache/tmp/ ]]; then
            echo -e -n "${bldgrn}Initiating Temp cache sync operation of $CACHESIZE. please wait: "
            SUCCESS=$((mv edit/tmp/*.deb $CURRENT/.cache/tmp/) 2>/dev/null)
            if ! [[ $SUCCESS ]]; then
               echo -e "${bldgrn}Success.${txtrst}"
            else
               echo -e "${bldred}Failed.${txtrst}"
            fi
         else
            echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
            mkdir -p $CURRENT/.cache/tmp/
         fi
      else
         echo -e "${bldylw}No Temp cache folder, first build?${txtrst}"
         mkdir -p $CURRENT/.cache/tmp/
      fi
      sync
   else
      echo -e "${bldred}CRITICAL ERROR: FUNCTION Pull Cache called without or missing switch."
      #   echo "debug: 1:$1 @:$@"
      exit 0;
   fi
}

function PrebuildInfo () {
   if [[ $2 == "" ]]; then
      DATA=$1
   else
      DATA=$2
   fi
   ISO=$(echo $DATA | grep '.iso')
   if [[ $ISO ]]; then
      ISO=$DATA
      EXTENSION="${DATA##*.}"
      FOLDER="${DATA%.*}"
      if [[ -d $FOLDER ]]; then
         cd $FOLDER
      else
         CONTAINS=$(echo $PWD | grep $FOLDER)
         if ! [[ $CONTAINS ]]; then
            mkdir $FOLDER
         fi
      fi
   else
      ISO=$DATA
      EXTENSION="${DATA##*.}"
      FOLDER="${DATA%.*}"
      if [[ $ISO && -d $DATA ]]; then
         ISO=$DATA".iso"
         cd $DATA
      else
         mkdir $ISO
      fi
   fi
   z=$2
   CVERSION=$(echo $z | cut -d "-" -f3)

   #cd $z
   # Default naming scheme for Ultimate Edition
   ARCH=$(echo $z | grep -i 'x86')
   # Nothing? Is the user wanting a ubuntu build?
   if ! [[ $ARCH ]]; then
      ARCH=$(echo $z | grep -i 'i386')
   fi
   # Wanting Lite / Gamers? This data will be pushed to the internal app
   # and adjusted accordingly.
   LITE=$(echo $z | grep -i 'lite')
   GAMERS=$(echo $z | grep -i 'gamers')
   if [[ $ARCH ]]; then
      ARCH='x86'
      DOUT="i386"
   else
      ARCH='x64'
      DOUT="amd64"
   fi
   # Process via default name if Ubuntu:
   # ubuntu-13.10-desktop-amd64.iso
   EXTENSION="${z##*.}"
   FILENAME="${z%.*}"

   UBUNTU=$(echo $z | grep -i 'ubuntu')

   if [[ $UBUNTU ]]; then
      CVERSION=$(echo $z | cut -d "-" -f2)
   fi

   # Check to see if release is Long Term Supported.
   LTS='NO'
   LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
   if [[ $LONGVERSION -gt 1 ]]; then
      #echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
      CVERSION="${CVERSION%.*}"
   fi
   for zx in ${ISLTS[@]}
   do
      if [[ "$CVERSION" == "$zx" && $LTS == 'NO' ]]; then
         LTS='YES'
      fi
   done

   EVENODD="${CVERSION##*.}"

   ODD=$(( $EVENODD % 2 ))
   echo "EVENODD:$EVENODD ODD:$ODD"
   DE=""
   if ! [[ $ODD -eq 0 ]]; then
      DE="KDE"
      DTYPE="FULL"
   fi

   if [[ $LITE ]] ; then
      DE="MATE"
      DTYPE='LITE'
   fi

   if [[ $GAMERS ]] ; then
      DE="MATE"
      DTYPE='GAMERS'
   fi

   if ! [[ $DE ]]; then
      DE="GNOME"
      DTYPE="FULL"
   fi


   array_counter=0;
   for OST in ${UEARRAY[@]}
   do
      # DEBUGGING
      # echo "Checking: $OST"
      if [[ $OST == $CVERSION ]]; then
         # DEBUGGING
         # echo "YES: $OST DIST: ${OSARRAY[$array_counter]} NAME: ${DISTARRAY[$array_counter]}"
         DIST=${OSARRAY[$array_counter]}
         FULLNAME=${DISTARRAY[$array_counter]}
      fi
      array_counter=$(($array_counter + 1))
   done
   if [[ $UBUNTU ]]; then
      OUTDISTRO="Ubuntu"
   else
      OUTDISTRO="Ultimate Edition"
   fi

   ################ EXTRA DE'S?
   # PULL $2, $3 etc for extra DE's
   PROCESS=0;
   for var in "$@"
   do
      array_counter=$(($array_counter + 1))
      # echo "Switch $array_counter: $var"
      CSWITCH=$(echo $var | grep 'iso')
      if [[ $PROCESS == 1 ]]; then
         nested_array=0;
         for TE in ${EXTRADE[@]}
         do
            DETC=${EXTRADE[$nested_array]}
            # echo "Comparing $DETC to $var"
            if [[ $var == $DETC ]]; then
               DE=$DE', '$var
            fi
            nested_array=$(($nested_array + 1))
         done
      fi
      if [[ $CSWITCH && $PROCESS=0 ]]; then
         PROCESS=1
      fi
   done
   if [[ $LONGVERSION -gt 1 ]]; then
      #Relinquish the proper version as originally requested.
      CVERSION=$(echo $z | cut -d "-" -f3)
   fi
}

# Extracts existing ISO(s)
function ExtractISO () {
   # Call the Version Dump Function
   VersionDump
   # Scan for ISO's. Suppress errors if they do not exist.
   ISOS=$((ls *.iso) 2>/dev/null)
   # Process ISO's only if they exist.
   if [[ $ISOS ]]; then
      # TODO: add error suppression for non-existence.
      # Grab all ISO's in current folder.
      NISOS=$(ls *.iso | wc -l)
      # Setup a counter to initiate at the value of 1
      array_counter=$(($array_counter + 1))
      Encapsulate "Processing $array_counter of $NISOS detected Operating systems, please wait."
      # Cycle all found ISO's
      # TODO: Add ability to process a single ISO if the user requests it.
      for i in `ls *.iso`
      do
         EXTENSION="${i##*.}"
         FILENAME="${i%.*}"
         CVERSION=$(echo $FILENAME | cut -d "-" -f3)
         Encapsulate "Operating System Version detected: $CVERSION"
         if [[ -d $FILENAME ]]; then
            Encapsulate "Folder already exists."
         else
            Encapsulate "Creating folder $FILENAME"
            mkdir $FILENAME
         fi
         # Does the user have write permissions?
         if [[ -w $i ]]; then
            Encapsulate "Moving $i to $FILENAME"
            mv $i $FILENAME/
         else
            Error "ERROR: Insufficient privileges to move $i."
            exit 0;
         fi
      done
   else
      Error "No ISO's to process in current folder.  Are we building ISO(s)? Continuing..."
   fi
   # Begin extracting ISO's
   Encapsulate "Scanning folders..."
   for z in `ls -d */`
   do
      Encapsulate "Processing Folder: $z"
      cd $z
      #prepare
      ISOS=$((ls *.iso) 2>/dev/null)
      if [[ $ISOS ]]; then
         for i in `ls *.iso`
         do
            if ! [[ -d edit ]]; then
               mkdir edit
            fi
            if ! [[ -d extract-cd ]]; then
               mkdir extract-cd
            fi
            if ! [[ -d mnt ]]; then
               mkdir mnt
            fi
            if ! [[ -d squashfs ]]; then
               mkdir squashfs
            fi
            #mount & extract
            if [[ -f $i ]]; then
               # TODO: Add additional checks we can never be too
               # Safe when it comes to mounting / permissions
               Encapsulate "Mounting $i"
               ENGAGEMOUNT=$(mount -o loop $i mnt/  2>/dev/null)
               Encapsulate "Synchronizing $i$"
               rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd
               Encapsulate "Mounting SquashFs"
               mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs
               Encapsulate "Copying SquashFs"
               cp -a squashfs/* edit/
               Encapsulate "Unmounting SquashFS"
               umount squashfs/
               Encapsulate "Unmounting $i"
               umount mnt/
               #            echo -e "${bldred}Failure mounting $i, exiting...${txtrst}"
               #            exit 0
               #fi
            fi
            Encapsulate "Cleaning up..."
            if [[ -d mnt ]]; then
               rm -R mnt
            fi
            if [[ -d squashfs ]]; then
               rm -R squashfs
            fi
            SUCCESS=$(ls edit/)
            if [[ $SUCCESS ]]; then
               if [[ -f $i ]]; then
                  rm $i
               fi
            else
               Error "ERROR: Synchronization error, not deleting $i. Are you a superuser?"
               exit 0;
            fi
         done
      fi
      cd $CURRENT
   done
   Encapsulate "All extraction operations completed successfully."
   Notification "All extraction operations completed successfully."
   LogResults
   STOPM=`date -u "+%s"`
   RUNTIMEM=`expr $STOPM - $STARTM`
   if (($RUNTIMEM>59)); then
      TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
   else
      TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
   fi
   echo -e "${bldgrn}Execution Time: $TTIMEM"
}

# Builds only the ISO, zero customization
function BuildISO () {
   VersionDump
   INFOLDER=$PWD
   PrebuildInfo $*
   cd $INFOLDER
   ISO=$(echo $2 | grep '.iso')
   if [[ $ISO ]]; then
      ISO=$2
      EXTENSION="${2##*.}"
      FOLDER="${2%.*}"
      if [[ -d $FOLDER ]]; then
         cd $FOLDER
      else
         EXISTENCE=$(echo $PWD | grep $FOLDER)
         if [[ $EXISTANCE ]]; then
            echo -e "${bldred}CRITICAL ERROR: $FOLDER, does not exist exiting.${txtrst}"
            exit 0;
         fi
      fi
   else
      ISO=$2
      EXTENSION="${2##*.}"
      FOLDER="${2%./}"
      if [[ $ISO && -d $2 ]]; then
         ISO=$2".iso"
         cd $2
      else
         echo "In $PWD"
         echo -e "${bldred}CRITICAL ERROR: $FOLDER, does not exist exiting.${txtrst}"
         exit 0;
      fi
   fi
   KERNEL=$((ls edit/boot/vmlinuz-*) 2>/dev/null)
   INITRD=$((ls edit/boot/initrd.img-*) 2>/dev/null)
   # echo -e "${bldred}DEBUG: in $PWD KERNEL DETECTED: $KERNEL${txtrst}"
   # echo -e "${bldred}PASSED:" "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE" "$DTB"
   if [[ $KERNEL && $INITRD ]]; then
      # ISOLINUX
      if [[ -f /usr/lib/syslinux/isolinux.bin ]]; then
         echo -en "${bldgrn}Injecting isolinux: ${txtrst}"
         cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
         echo "Done."
      else
         echo -e "${bldred}FATAL ERROR: Isolinux not found.${txtrst}"
         echo "sudo apt-get install isolinux"
         exit 0;
      fi
      # MEMTEST
      if [[ -f /boot/memtest86+.bin ]]; then
         echo -en "${bldgrn}Injecting Memtest: ${txtrst}"
         cp /boot/memtest86+.bin extract-cd/install/memtest
         echo "Done."
      else
         echo -e "${bldylw}Memtest not installed on host, not populating: sudo apt-get install memtest86+${txtrst}"
      fi
      echo -en "${bldgrn}Copying Kernel: $KERNEL: ${txtrst}"
      cp $KERNEL extract-cd/casper/vmlinuz
      echo "Done."
      echo -en "${bldgrn}Copying Initrd: $INITRD: ${txtrst}"
      cp $INITRD extract-cd/casper/initrd.lz
      echo "Done."
   fi
   echo -e "${bldgrn}DISRO STAMPING EXTERNAL:${txtrst}"
   if ! [[ -f .disk/info ]]; then
      echo "$OUTDISTRO $CVERSION \"$FULLNAME\" - Release $ARCH (`date +"%Y%m%d"`)" >  extract-cd/.disk/info
      cat extract-cd/.disk/info
   else
      cat extract-cd/.disk/info
   fi
   if [[ -f extract-cd/casper/filesystem.squashfs ]]; then
      echo -e "${bldgrn}Scraping old squash filesystem, we will build a new one.${txtrst}"
      rm extract-cd/casper/filesystem.squashfs
   fi
   echo -e "${bldgrn}Building new squash file system: ${txtrst}"
   mksquashfs edit extract-cd/casper/filesystem.squashfs -no-sparse
   echo -en "${bldgrn}Manifesting new operating system, please wait: "
   #manifest
   touch extract-cd/casper/filesystem.manifest
   chmod +w extract-cd/casper/filesystem.manifest
   chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
   cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
   sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
   echo "Done."
   #calculate disksize or ubiquity will be inaccurate
   printf $(sudo du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size

   #report this info to me in red so it is easy to find:
   echo -en "${bldred}DiskSize: ${txtrst}"
   cat extract-cd/casper/filesystem.size

   #calculate crc
   echo -en "\n${bldgrn}Calculating CRC: ${txtrst}"
   cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
   echo "Done."

   echo -e "${bldgrn}Creating final ISO, please wait.${txtrst}"
   GREPIT=$(echo $OUTDISTRO | grep 'LTS')
   NUSER=$(grep 1000 /etc/passwd | cut -f1 -d:)
   if ! [[ $NUSER ]]; then
      NUSER="root"
   fi
   if ! [[ $GREPIT ]]; then
      echo "DEBUGGING OUTDISTRO:$OUTDISTRO VER:$CVERSION NUSER:$NUSER ISO:$ISO"
      mkisofs -r -V "$OUTDISTRO $CVERSION" -p $NUSER -P "TMOSB" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../$ISO .
   else
      OUTDISTRO=$(echo $OUTDISTRO | sed "s/ LTS//g")
      echo "DEBUGGING OUTDISTRO:$OUTDISTRO VER:$CVERSION NUSER:$NUSER ISO:$ISO"
      mkisofs -r -V "$OUTDISTRO $CVERSION" -p $NUSER -P "TMOSB" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../$ISO .
   fi
   cd ..
   if [[ -f $ISO ]]; then
      echo "DISTRO INFO:"
      cat edit/etc/lsb-release
      echo "External Dist Info:"
      cat extract-cd/.disk/info
      echo -e "${bldgrn}SUCCESSFULLY BUILT: $ISO"
      echo -e "Moving $ISO back to $CURRENT."
      mv $ISO $CURRENT
      echo "rm -R $z"
      echo "kvm -m 2047 -smp 8 -usb -boot d -cdrom $ISO -name Ultimate"
      echo -e "${txtrst}To test, if you are satisfied."
   else
      echo -e "${bldred}ERROR: BUILD FAILURE FOR $ISO"
      exit 0;
   fi
   LogResults
   STOPM=`date -u "+%s"`
   RUNTIMEM=`expr $STOPM - $STARTM`
   if (($RUNTIMEM>59)); then
      TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
   else
      TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
   fi
   echo -e "${bldgrn}Execution Time: $TTIMEM"
   cd $CURRENT
   if [[ $QEMUINSTALLED ]]; then
      while true; do
         FullBar
         read -p "Would you like to test the drive now in a virtual machine?. (Y/N)? " yn
         case $yn in
            [Nn]* ) echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf $FOLDER/edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully."; exit 0;;
            [Yy]* ) echo -e "${txtgrn}"
            echo "Booting $2...";
            break;;
            * ) echo "Please answer y or n.";;
         esac
      done
      Virtual "$ISO"
   fi
   THUMBOS=$(which thumbos)
   if [[ $THUMBOS ]]; then
      while true; do
         FullBar
         read -p "Would you like to load the resulting O/S out to a thumbdrive? (Y/N)? " yn
         case $yn in
            [Nn]* ) echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf $FOLDER/edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully."; exit 0;;
            [Yy]* ) echo -e "${txtgrn}"
            echo "Initiatiating Thumbos $2...";
            break;;
            * ) echo "Please answer y or n.";;
         esac
      done
      thumbos --load "$ISO"
   fi
   echo -e "${txtrst}"; echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
}

# Dump vaild build switches to the end user.
function InvalidBuildSwitch () {
   GREPIT=$(echo $* | grep 'build')
   if [[ $GREPIT ]]; then
      CBE="--build"
   fi
   GREPIT=$(echo $* | grep 'debootstrap')
   if [[ $GREPIT ]]; then
      CBE="--debootstrap"
   fi
   if ! [[ $CBE ]]; then
      echo "FATAL ERROR: No switch provided to internal InvalidBuildSwitch function."
      exit 0;
   fi
   echo -e "${bldred}ERROR: Invalid switch.  Generating valid switches:${txtrst}"
   Ultimate Edition="ultimate-edition"
   UBUNTUBASE="ubuntu-desktop"
   ARCH32='x86'
   ARCH64='x64'
   LITE='lite'
   OUTDISTRO="Ultimate Edition"
   echo -e -n "${undgrn}"

   counter=0
   for OST in ${UEARRAY[@]}
   do
      #echo "Checking: $OST"
      VER=$(echo $OST | cut -d "." -f2)
      EVENODD=$(( $VER % 2 ))
      DIST=${OSARRAY[$counter]}
      FULLNAME=${DISTARRAY[$counter]}
      counter=$(($counter + 1))

      # Check to see if release is Long Term Supported.
      LTS='NO'
      for zx in ${ISLTS[@]}
      do
         if [[ "$OST" == "$zx" && $LTS == 'NO' ]]; then
            LTS='YES'
         fi
      done

      #echo "VERSION: $VER"
      if [[ $VER == '04' ]]; then
         OUTDISTRO="Ubuntu"
      fi

      if ! [[ $EVENODD -eq 0 ]]; then
         DTYPE='STANDARD'
         DE="KDE"
      else
         DTYPE='LITE/STANDARD'
         DE="MATE"
      fi
      echo -e -n "${txtrst}"
      FullBar
      Columnize -t 'OPERATING SYSTEM' 'VERSION' 'RELEASE BASE' 'ARCH' 'LTS' 'DIST TYPE' 'DE(s)'
      #echo -e -n "${undwht}"
      FullBar
      Columnize "$OUTDISTRO" "$OST" "$FULLNAME" "x86/x64" "$LTS" "$DTYPE" "$DE"
      #echo "$OUTDISTRO" "$OST" "$FULLNAME" "x86/x64" "$LTS" "$DTYPE" "$DE"
      FullBar
      echo -e "${txtgrn}Default Build command(s):${txtrst}"
      if [[ $counter -lt $DISTSSUPPORTED ]]; then
         if [[ $EVENODD ]]; then
            for EACH in ${UETYPES[@]}
            do
               echo "$PROGNAME $CBE $UE-$OST-$ARCH32-$EACH.iso"
               echo "$PROGNAME $CBE $UE-$OST-$ARCH64-$EACH.iso"
            done
            echo "$PROGNAME $CBE $UE-$OST-$ARCH64.iso"
            echo "$PROGNAME $CBE $UE-$OST-$ARCH32.iso"
            #echo "tmosb --build $UE-$OST-$ARCH64-$LITE.iso"
         else
            echo "$PROGNAME $CBE $UE-$OST-$ARCH32.iso"
            echo "$PROGNAME $CBE $UE-$OST-$ARCH64.iso"
         fi
      else
         echo "$PROGNAME $CBE $UBUNTUBASE-$OST-$ARCH32.iso"
         echo "$PROGNAME $CBE $UBUNTUBASE-$OST-$ARCH64.iso"
         #array_counter=$(($array_counter + 1))
      fi
      #array_counter=$(($array_counter + 1))
   done
   Help build 3
   exit 0;
}

function BuildNEWISO() {
   ID=$2
   if [[ $3 != '--no-cache' ]]; then
      CACHE="--cache"
   fi
   EXTENSION="${ID##*.}"
   FILENAME="${ID%.*}"

   if [[ -d $2 && -f $2.iso ]]; then
      echo "Smash the ISO."
      exit 0;
   fi

   # DEBUGGING
   # echo "1:$1 2:$2 3:$3"

   # UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
   # If so extract the ISO...

   if ! [[ -d $FILENAME ]]; then
      if [[ -f $ID ]]; then
         ExtractISO $ID
      fi
   fi

   if [[ -d $ID ]]; then
      FILENAME=$2
      EXTENSION="FOLDER"
   fi
   #prepare


   # TODO: ADD CODE TO PREVENT FALURE FROM RETURNING FUNCTION VALUES [.ISO]

   if [[ $FILENAME == "" ]]; then
      InvalidBuildSwitch $*
   else
      VersionDump
   fi

   #ISO Check
   if ! [[ $EXTENSION == 'iso' ]]; then
      FILENAME=$2
      mkdir -p $2
   else
      mkdir -p $FILENAME
   fi
   #Folder?

   cd $CURRENT
   for z in `ls -d */`
   do
      PrebuildInfo $*
      ################
      echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
      echo -e -n "${bldgrn}"
      FullBar
      Columnize -t "OPERATING SYSTEM" "VER" "RELEASE BASE" "ARCH" "LTS" "TYPE" "DE(s)"
      Columnize "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE"
      Encapsulate "Is the above correct?"
      FullBar
      echo -e "${bldylw}"
      while true; do
         read -p "WARNING: this will take a long time and download vast quantanties of data. (Y/N)? " yn
         case $yn in
            [Nn]* ) echo -e "${txtrst}"; exit 0;;
            [Yy]* ) echo -e "${txtgrn}"
            echo "Initiating build of $2 ...";
            break;;
            * ) echo "Please answer y or n.";;
         esac
      done
      if ! [[ -d $CURRENT/.cache/$BASEPULL/apt/ ]]; then
         mkdir -p $CURRENT/.cache/$DIST/$ARCH/apt/
      fi

      ### CORE FILES ? ###
      if [[ -s $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Pulling core files from cache."
         cp $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb .
      else
         echo -e "${bldgrn}Building prerequisites, passing control to external uecorebuilder.${txtrst}"
         #      echo "DEBUGGING: 2:$2"
         GAMERS=$(echo $2 | grep -i "gamers")
         if [[ $LITE ]]; then
            DEBTYPE='lite'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION lite
            else
               uecorebuilder $CVERSION lite
            fi
         fi
         if [[ $GAMERS ]]; then
            DEBTYPE='gamers'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION gamers
            else
               uecorebuilder $CVERSION gamers
            fi
         fi
         if ! [[ $DEBTYPE ]]; then
            DEBTYPE='standard'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION
            else
               uecorebuilder $CVERSION
            fi
         fi
      fi

      if [[ -s ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Core files for Ultimate Edition $CVERSION successfully built."
         echo -e -n "${bldgrn}Copying core files for $CVERSION to cache: "
         SUCCESS=$(cp ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb $CURRENT/.cache/$DIST/)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      else
         echo -e "${bldred}ERROR: Failure building core files for Ultimate Edition $CVERSION.${txtrst}"
         exit 0;
      fi
      ### SPLASH ###
      if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         FILEISCACHED=1
         cp $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb .
      fi
      if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         FILEISCACHED=1
         cp $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb .
      fi
      if ! [[ $FILEISCACHED ]]; then
         echo -e "${bldgrn}Building prerequisites, passing control to external usplash-builder.${txtrst}"
         #      echo -e "${bldred}DEBUGGING LITE: $LITE | GAMERS: $GAMERS | STANDARD: $DEBTYPE${txtrst}"
         if [[ $LITE ]]; then
            DEBTYPE='lite'
            if [[ -f usplash-builder ]]; then
               ./usplash-builder $CVERSION lite
            else
               usplash-builder $CVERSION lite
            fi
         fi
         if [[ $GAMERS ]]; then
            DEBTYPE='gamers'
            if [[ -f usplash-builder ]]; then
               ./usplash-builder $CVERSION gamers
            else
               usplash-builder $CVERSION gamers
            fi
         fi
         if [[ $DEBTYPE == 'standard' ]]; then
            if [[ -f usplash-builder ]]; then
               ./usplash-builder $CVERSION
            else
               #            echo "DEBUGGING: usplash-builder $CVERSION"
               usplash-builder $CVERSION
            fi
         fi
         echo -e -n "${bldgrn}Copying Usplash files for $CVERSION to cache: "
         SUCCESS=""
         if [[ -s ubiquity-slideshow-ubuntu_90_all.deb ]]; then
            SUCCESS=$(cp ubiquity-slideshow-ubuntu_90_all.deb $CURRENT/.cache/$DIST/)
         fi
         if [[ -s ubiquity-slideshow-kubuntu_90_all.deb ]]; then
            SUCCESS=$(cp ubiquity-slideshow-kubuntu_90_all.deb $CURRENT/.cache/$DIST/)
         fi
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      fi

      if [[ -f ubiquity-slideshow-kubuntu_90_all.deb || -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         echo -e "${bldgrn}Usplash files for Ultimate Edition $CVERSION successfully built."
      else
         echo -e "${bldred}ERROR: Failure building Usplash files for Ultimate Edition $CVERSION.\nDEBUG DEBTYPE: $DEBTYPE${txtrst}"
         exit 0;
      fi
      #if ! [[ -d $FILENAME ]]; then mkdir $FILENAME; fi
      #cd $FILENAME
      mkdir -p {edit,extract-cd}
      if ! [[ -f extract-cd/README.diskdefines ]]; then
         if ! [[ -f ../.cache/extract-cd.tar.gz ]]; then
            echo -e "${bldgrn}Downloading a generic extract-cd contents...${txtrst}"
            cd extract-cd/
            wget http://ultimateedition.info/Toolz/extract-cd.tar.gz
            mkdir -p ../../.cache/
            cp extract-cd.tar.gz ../../.cache/
         else
            echo -e "${bldgrn}Pulling archive from cache, this saves you from having to re-download it.${txtrst}"
            mkdir -p extract-cd/
            cd extract-cd/
            mkdir -p ../../.cache/
            cp ../../.cache/extract-cd.tar.gz .
         fi
         echo -e -n "${bldgrn}Extracting archive: "
         SUCCESS=$(tar xfv extract-cd.tar.gz 2>/dev/null)
         sync
         if [[ $SUCCESS ]]; then
            echo -e "Success${txtrst}"
         else
            echo -e "${bldred}ERROR in extraction.${txtrst}"
            exit 0;
         fi
         cp extract-cd.tar.gz ../../.cache/extract-cd.tar.gz
         rm extract-cd.tar.gz
         chown root:root -R *
         #mv isolinux/txt.cfg isolinux/isolinux.cfg
         cd ..
         find 'extract-cd/' -type d -exec chmod 755 {} \;
         chmod 644 extract-cd/isolinux/* extract-cd/autorun.inf extract-cd/logo.ico
      else
         echo -e "${bldylw}Previous build detected, not downloading the extract-cd contents.${txtrst}"
      fi
      echo -e -n "${bldgrn}${txtrst}"
      echo -e "${bldgrn}Operating System Output: $OUTDISTRO"
      echo -e "${bldgrn}Operating System version requested: $CVERSION${txtrst}"
      echo -e "${bldgrn}Operating System distribution base: $DIST${txtrst}"
      echo -e "${bldgrn}Architecture requested: $DOUT${txtrst}"
      echo -e "${bldgrn}Distribution Long Name: $FULLNAME${txtrst}"
      if [[ $IUSER != 'root' ]]; then
         echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
         exit 0;
      fi

      #PREVIOUS MINIMAL ISO & NO EDIT/

      if [[ -f ../.cache/$DIST/$ARCH/debootstrap.tar.gz ]]; then
         echo -e "${bldgrn}Debootstrap has been previously backed up to cache.${txtrst}"
         if ! [[ -f edit/etc/lsb-release ]]; then
            echo -e -n "${bldgrn}Pulling bootstrap from cache: "
            cp ../.cache/$DIST/$ARCH/debootstrap.tar.gz .
            if [[ -f debootstrap.tar.gz ]]; then
               echo -e "Success."
            else
               echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
            fi
            echo -e -n "${bldgrn}Extracting archive: "
            SUCCESS=$(tar -xf debootstrap.tar.gz 2>/dev/null)
            if [[ -f edit/etc/lsb-release ]]; then
               echo "Success."
            else
               echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
               exit 0;
            fi
         else
            echo -e "${bldylw}Prior debootstrap / build exists for $DIST $ARCH build.${txtrst}"
         fi
      else
         echo -e "${bldylw}Prior debootstrap / build does not exist for $DIST $ARCH build. First build?\nEntering Stage 1 - debootstrap.${txtrst}"
      fi

      if ! [[ -f edit/etc/lsb-release ]]; then
         if [[ $DOUT && $DIST ]]; then
            debootstrap --arch=$DOUT $DIST edit   ## Initiate debootstrap process...
            if ! [[ -f edit/etc/lsb-release ]]; then
               echo -e "CRITICAL ERROR: Debootstrap failed. DEBUG: DIST | $DIST ARCH | $ARCH"
               exit 0;
            fi
            echo -e -n "${bldgrn}Compressing debootstrap:"
            SUCCESS=$(tar -zcvf debootstrap.tar.gz edit)
            if [[ $SUCCESS ]]; then
               echo -e "${bldgrn}Successfully compressed.${txtrst}"
               sync
               echo -e "${bldgrn}Moving debootstrap.tar to cache.${txtrst}"
               mkdir -p ../.cache/$DIST/$ARCH/
               mv debootstrap.tar.gz ../.cache/$DIST/$ARCH/
               STOPM=`date -u "+%s"`
               RUNTIMEM=`expr $STOPM - $STARTM`
               if (($RUNTIMEM>59)); then
                  TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
               else
                  TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
               fi
               echo -e "${bldgrn}This caching process will save you aprox $TTIMEM in future builds."
            else
               echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
               exit 0;
            fi
         else
            echo -e "${bldred}ERROR: Invalid switch please see $PROGNAME --help build${txtrst}"
            exit 0;
         fi
      else
         echo -e "${bldylw}Previous build detected, skipping Stage 1: debootstrap.${txtrst}"
      fi

      if [[ $DE ]]; then
         echo $DE | tr [a-z] [A-Z] > edit/tmp/DE
      else
         if [ $LITE ]; then
            echo 'MATE' > edit/tmp/DE
         fi

         if [ $GAMERS ]; then
            echo 'MATE' > edit/tmp/DE
         fi

         if ! [[ $LITE && $GAMERS && $ODD ]]; then
            echo 'GNOME' > edit/tmp/DE
         fi

         if ! [[ $EVENODD ]]; then
            echo 'KDE' > edit/tmp/DE
         fi
      fi
      # exit 0;
      # PULL $2, $3 etc for extra DE's
      PROCESS=0;
      for var in "$@"
      do
         array_counter=$(($array_counter + 1))
         # echo "Switch $array_counter: $var"
         CSWITCH=$(echo $var | grep 'iso')
         if [[ $PROCESS == 1 ]]; then
            nested_array=0;
            for TE in ${EXTRADE[@]}
            do
               DETC=${EXTRADE[$nested_array]}
               # echo "Comparing $DETC to $var"
               if [[ $var == $DETC ]]; then
                  echo "$var" | tr [a-z] [A-Z] >> edit/tmp/DE
               fi
               nested_array=$(($nested_array + 1))
            done
         fi
         if [[ $CSWITCH && $PROCESS=0 ]]; then
            PROCESS=1
         fi
      done
      #PUSH CORE FILEZ into chroot
      #Core files previously built? TODO: ADD Check and retrieve.
      if [[ -f ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Moving Core files to chroot environment.${txtrst}"
         SUCCESS=$(mv ubiquity-slideshow-kubuntu_90_all.deb edit/tmp/ 2>/dev/null)
         SUCCESS=$(mv ubiquity-slideshow-ubuntu_90_all.deb edit/tmp/ 2>/dev/null)
         SUCCESS=$(mv ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb edit/tmp/)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Installing Core files in the chroot environment, ignore errors. We will fix them later (Stage 3).${txtrst}"
            /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; dpkg -i ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb"
         fi
      else
         echo "MASSIVE FAILURE: No core Files."
         exit 0
      fi
      echo "CODEBASE: $DIST"
      PushCache $DIST $ARCH
      #exit 0;
      ##############################################################################################################
      #      echo -e "${bldgrn}Entering Stage 2 of 3: Internal software.${txtrst}"
      #            if [[ -f internal ]]; then
      #               echo -e "${bldgrn}Copying modified internal script to chroot environment.${txtrst}"
      #               SUCCESS=$(cp internal edit/tmp/)
      #               if ! [[ $SUCCESS ]]; then
      #                  echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
      #                  /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
      #               fi
      #            else
      #               echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
      #               SUCCESS=$(cp /usr/share/ultimate_edition/internal edit/tmp/)
      #               if ! [[ $SUCCESS ]]; then
      #                  echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
      #                  /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
      #               fi
      #            fi

      if [[ $LITE ]]; then
         LITE='lite'
         echo $UOS' '$CVERSION Lite '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
         ISO="$OS-$CVERSION-$ARCH-$LITE.iso"
      else
         LITE=''
         echo 'Ultimate Edition '$CVERSION '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
         ISO="$OS-$CVERSION-$ARCH.iso"
      fi
      cat extract-cd/.disk/info
   done
   cd $CURRENT
   UpgradeISO $*
   STOPM=`date -u "+%s"`
   RUNTIMEM=`expr $STOPM - $STARTM`
   if (($RUNTIMEM>59)); then
      TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
   else
      TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
   fi
   echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
   echo -e "${bldgrn}Execution Time: $TTIMEM"
}

function ClearCache() {
   VersionDump
   if [[ $2 == 'debootstrap' ]]; then
      CACHETOCLEAR="debootstrap"
   fi
   if [[ $2 == 'apt' ]]; then
      CACHETOCLEAR='apt'
   fi
   if [[ $2 == 'all' ]]; then
      CACHETOCLEAR='all'
   fi
   for EACH in ${OSARRAY[@]}
   do
      if [[ $2 == $EACH ]]; then
         DISTBASE=$EACH
         #echo "Distbase: $DISTBASE"
         for ARCHS in ${CYCLE[@]}
         do
            if [[ $3 == $ARCHS ]]; then
               ARCHITECTURETOCLEAR=$ARCHS
               #echo "Architecture: $ARCHITECTURETOCLEAR"
            fi
         done
      fi
   done
   if [[ $DISTBASE && $ARCHITECTURETOCLEAR ]]; then
      if [[ -d .cache/$DISTBASE/$ARCHITECTURETOCLEAR ]]; then
         CTC=$(du -hs .cache/$DISTBASE/$ARCHITECTURETOCLEAR | awk '{print $1}')
         CAPS=$(echo $DISTBASE | tr [a-z] [A-Z])
         echo -en "${bldgrn}CLEARING $CTC OF $CAPS $ARCHITECTURETOCLEAR CACHE: ${txtrst}"
         SUPPRESS=$((rm -R .cache/$DISTBASE/$ARCHITECTURETOCLEAR) 2>/dev/null)
         echo "Done."
         exit 0;
      else
         echo -e "${bldred}ERROR: There is no $DISTBASE $ARCHITECTURETOCLEAR CACHE, exiting...${txtrst}"
         exit 0;
      fi
   fi
   if ! [[ $ARCHITECTURETOCLEAR && $DISTBASE ]]; then
      if [[ -d .cache/$DISTBASE ]]; then
         CTC=$(du -hs .cache/$DISTBASE/ | awk '{print $1}')
         CAPS=$(echo $DISTBASE | tr [a-z] [A-Z])
         echo -en "${bldgrn}CLEARING $CTC OF $CAPS CACHE: ${txtrst}"
         SUPPRESS=$((rm -R .cache/$DISTBASE/$ARCHITECTURETOCLEAR) 2>/dev/null)
         echo "Done."
         exit 0;
      else
         echo -e "${bldred}ERROR: There is no $DISTBASE CACHE, exiting...${txtrst}"
         exit 0;
      fi
   fi
   if [[ $CACHETOCLEAR ]]; then
      #Default option is to scrap it all.
      #all cache
      echo -e -n "${bldgrn}Clearing $CACHETOCLEAR Cache: "
      if [[ $CACHETOCLEAR == 'all' ]]; then
         if [[ -d '.cache' ]]; then
            if [[ -w '.cache' ]]; then
               SUCCESS=$(rm -rf .cache/* > /dev/null 2>&1)
               if [[ $SUCCESS ]]; then
                  echo "Success."
               else
                  echo -e "${bldred}Failure${txtrst}"
               fi
            else
               echo -e "${bldred}You do not have permission to access the cache folder, are you su?${txtrst}"
            fi
         else
            echo -e "${bldred}There is no cache, did you already clear it?${txtrst}"
         fi
      fi
      #CLEAR DEBOOTSTRAP

      if [[ $CACHETOCLEAR == 'debootstrap' ]]; then

         DEBOOTSTRAP=$(find .cache/ -name debootstrap.tar.gz)
         if [[ $DEBOOTSTRAP ]]; then
            SUCCESS=$(rm -f $DEBOOTSTRAP)
            if [[ $SUCCESS ]]; then
               echo "Success"
            else
               echo -e "${bldred}Failure, no debootstrap?${txtrst}"
            fi
         else
            echo -e "${bldred}Failure, no debootstrap?${txtrst}"
         fi
      fi
      #MINIMAL
      if [[ $CACHETOCLEAR == 'minimal' ]]; then
         MINIMAL=$(find .cache/ -name MINIMAL-*)
         if [[ $MINIMAL ]]; then
            SUCCESS=$(rm -f $MINIMAL)
            if ! [[ $SUCCESS ]]; then
               echo "Success"
            else
               echo -e "${bldred}Failure, no prior minimal ISO?${txtrst}"
            fi
         else
            echo -e "${bldred}Failure, no prior minimal ISO?${txtrst}"
         fi
      fi
      #APT
      if [[ $CACHETOCLEAR == 'apt' ]]; then
         MINIMAL=$(find .cache/ -type d -name "apt")
         if [[ $MINIMAL ]]; then
            SUCCESS=$(rm -R $MINIMAL)
            if ! [[ $SUCCESS ]]; then
               echo "Success"
            else
               echo -e "${bldred}Failure, no apt cache?${txtrst}"
            fi
         else
            echo -e "${bldred}Failure, no prior apt cache?${txtrst}"
         fi
      fi
   else
      Help clearcache a
   fi
}

function UpgradeISO() {
   # echo -e "${bldred}DEBUGGING UPGRADEISO function: 1:$1 2:$2 3:$3 4:$4${txtrst}"
   ID=$2
   # Currently unused switch - I can't imagine why someone would prefer to not use cache.'
   if [[ $3 != '--no-cache' ]]; then
      CACHE="--cache"
   fi
   EXTENSION="${ID##*.}"
   FILENAME="${ID%.*}"

   # DEBUGGING
   # echo "1:$1 2:$2 3:$3"
   # exit 0;
   # UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
   # If so extract the ISO...

   if [[ -f $ID ]]; then
      if ! [[ -d $FILENAME ]]; then
         ExtractISO $ID
      else
         echo -e "${bldred}$ID exists. Scrapping, we will build a new one.${txtrst}"
         rm $ID
      fi
   fi

   if [[ $ID == '' ]]; then
      ExtractISO
   fi

   if [[ -d $ID ]]; then
      FILENAME=$ID
      EXTENSION="FOLDER"
   fi
   #prepare

   #ISO Check
   if [[ $EXTENSION == 'iso' ]]; then
      ID=$FILENAME
   fi
   #Folder?
   echo -e "${bldgrn}Upgrade routine is processing $ID${txtrst}"
   echo -e "${bldgrn}TYPE=$EXTENSION${txtrst}"
   echo -e "${bldgrn}NAME=$FILENAME${txtrst}"
   # Did the user request a directory? Does the directory exist?
   if [[ -d $ID ]]; then
      cd $CURRENT
      for z in `ls -d */`
      do
         CVERSION=$(echo $z | cut -d "-" -f3)
         cd $z

         echo -e "${bldgrn}Processing Folder: $z${txtrst}"
         ARCH=$(echo $z | grep -i 'x86')
         LITE=$(echo $z | grep -i 'lite')
         if [[ $ARCH ]]; then
            ARCH='x86'
            DOUT="i386"
         else
            ARCH='x64'
            DOUT="amd64"
         fi

         #DISRO STAMPING EXTERNAL:
         if [[ -f extract-cd/.disk/info ]]; then
            DISTNAME=$(cat extract-cd/.disk/info | sed 's/.*"\(.*\)"[^"]*$/\1/')
            if [[ $DISTNAME ]]; then
               echo -e "${bldgrn}External distro name detected: $DISTNAME${txtrst}"
            else
               echo -e "${bldred}ERROR: No Distro name detected exiting...${txtrst}"
               echo -e "${bldred}DEBUG DATA:${txtrst}"
               cat extract-cd/.disk/info
               exit 0;
            fi
         else
            echo -e "${bldred}MAJOR ERROR: No Distro name detected exiting...${txtrst}"
            exit 0;
         fi


         if [[ $LITE ]]; then
            LITE='lite'
            ULTIMATEEDITION="Ultimate Edition Lite"
            echo $UOS' '$CVERSION Lite '"'$DISTNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
            echo -e "${bldgrn}Upgrading $UOS $CVERSION $LITE${txtrst}"
            ISO="$OS-$CVERSION-$ARCH-$LITE.iso"
         else
            ULTIMATEEDITION="Ultimate Edition"
            LITE=''
            if [[ $GAMERS ]]; then
               echo -e "${bldgrn}Upgrading $UOS $CVERSION $GAMERS${txtrst}"
               ISO="$OS-$CVERSION-$ARCH-gamers.iso"
            fi
            echo -e "${bldgrn}Upgrading $UOS $CVERSION $LITE${txtrst}"
            echo 'Ultimate Edition '$CVERSION '"'$DISTNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
            if ! [[ $DTB ]]; then
               ISO="$OS-$CVERSION-$ARCH.iso"
            fi
         fi


         #exit 0;
         #Detect current code-base / distribution
         if [[ -f edit/etc/lsb-release ]]; then
            OSR=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_ID=[ \t]*\(.*\)/\1/p')
            DISTREL=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
            DISTDESC=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_DESCRIPTION=[ \t]*\(.*\)/\1/p')
            CODEBASE=$(cat edit/etc/lsb-release | sed -n 's/^DISTRIB_CODENAME=[ \t]*\(.*\)/\1/p')
            for OST in ${UEARRAY[@]}
            do
               if [[ $OST == $CVERSION ]]; then
                  DIST=${OSARRAY[$array_counter]}
                  FULLNAME=${DISTARRAY[$array_counter]}
               fi
               array_counter=$(($array_counter + 1))
            done
            if [[ $LITE ]]; then
               UNDERSCORED="$COS"'_Lite'
            else
               UNDERSCORED="$COS"
            fi
            #sed -i "s/$DISTREL/$CVERSION/g" edit/etc/lsb-release
            #sed -i "s/$OSR/$COS/g" edit/etc/lsb-release
            #sed -i "s/^DISTRIB_DESCRIPTION=.*/DISTRIB_DESCRIPTION=\"Ultimate Edition $CVERSION $FULLNAME\"/g" edit/etc/lsb-release
         fi

         DEFAULTREPO='http://us.archive.ubuntu.com/ubuntu/'
         for OST in ${OLDRELEASES[@]}
            do
               if [[ $OST == $CVERSION ]]; then
                  DIST=${OSARRAY[$array_counter]}
                  FULLNAME=${DISTARRAY[$array_counter]}
                  DEFAULTREPO='http://old-releases.ubuntu.com'
               fi
               array_counter=$(($array_counter + 1))
            done

         echo -e "${bldgrn}Injecting $DEFAULTREPO of CODEBASE: $CODEBASE into sources list...${txtrst}"
         echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '# deb-src '$DEFAULTREPO' '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '' >> edit/etc/apt/sources.list
         echo '###### '$UOS' Update Repos' >> edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo 'deb '$DEFAULTREPO' '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '# deb-src '$DEFAULTREPO' '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
         echo '' >> edit/etc/apt/sources.list
         echo '###### '$UOS' Partner Repo' >> edit/etc/apt/sources.list
         echo 'deb http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
         echo '# deb-src http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
         echo '' >> edit/etc/apt/sources.list
         echo '###### '$UOS' Extras Repo' >> edit/etc/apt/sources.list
         echo 'deb http://extras.ubuntu.com/ubuntu '$CODEBASE' main' >> edit/etc/apt/sources.list
         #UPGRADE PROCESS
         if ! [[ $CACHE ]]; then
            touch edit/tmp/cache
         fi
         if ! [[ -f edit/run/resolvconf/resolv.conf  ]]; then
            if [[ -f /run/resolvconf/resolv.conf ]]; then
               echo -e "${bldgrn}Restoring network information.${txtrst}"
               cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf
            fi
         else
            echo -e "${bldred}Network information detected.${txtrst}"
         fi
         if [[ $CACHE ]]; then
            echo -e "${bldgrn}Caching previously downloaded packages.${txtrst}"
            echo "DIST: $DIST CODEBASE: $CODEBASE"
            PushCache $CODEBASE $ARCH
            # See CACHEPULL / CACHEPUSH FUNCTION above - This was WAY slower.
            #            if [[ -d ../.cache/$CODEBASE/apt/ ]]; then
            #               echo -e -n "${bldgrn}Initating cache sync operation. please wait: ${txtrst}"
            #               SUCCESS=$(rsync -avz ../.cache/$CODEBASE/apt/ edit/var/cache/apt/ 2>/dev/null)
            #               if [[ $SUCCESS ]]; then
            #                  echo -e "${bldgrn}Operation sucessful.${txtrst}"
            #               else
            #                  echo -e "${bldred}Operation failed.${txtrst}"
            #               fi
            #            else
            #               echo -e "${bldylw}No cache folder, first $CODEBASE $ARCH based O/S build?${txtrst}"
            #            fi
            #            if [[ -d ../.cache/tmp/ ]]; then
            #               echo -e -n "${bldgrn}Initating Tmp cache sync operation. please wait: "
            #               SUCCESS=$(rsync -avz ../.cache/tmp/ edit/tmp/ 2>/dev/null)
            #               if [[ $SUCCESS ]]; then
            #                  echo -e "${bldgrn}Operation sucessful.${txtrst}"
            #               else
            #                  echo -e "${bldred}Operation failed.${txtrst}"
            #               fi
            #            else
            #               echo -e "${bldylw}No Tmp cache folder, first build?${txtrst}"
            #            fi
            #         else
            #            echo -e "${bldylw}No cache switch was used, we will be clearing the cache on this build.${txtrst}"
            #         fi
            #PRIOR SUCCESSFUL BUILD?
            #            if ! [[ -f /$CURRENT/.cache/$CODEBASE/$ARCH/$MIN ]]; then
            if ! [[ -f $CURRENT/internal ]]; then
               echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
               cp /usr/share/ultimate_edition/internal edit/tmp/
            fi
            if [[ -f $CURRENT/internal ]]; then
               echo -e "${bldgrn}Copying custom internal script to chroot environment.${txtrst}"
               cp $CURRENT/internal edit/tmp/
            fi
            echo -e "${bldgrn}Stage 2 of 3: Internal Software (Chrooting)${txtrst}"
            /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"

            #KERNEL UPGRADED????
            mkdir -p extract-cd/{casper,isolinux,install,.disk}
            #if [[ -w extract-cd/install/memtest ]]; then
            #echo -e "${bldgrn}Making $DTB bootable...${txtrst}"
            #cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
            #if [[ -f /boot/memtest86+.bin ]]; then
            #   echo -e "${bldgrn}Injecting Memtest.${txtrst}"
            #   cp /boot/memtest86+.bin extract-cd/install/memtest
            #else
            #   echo -e "${bldylw}Warning: Memtest not found, not populating. sudo apt-get install grub-image${txtrst}"
            #fi
            #cp edit/boot/vmlinuz-* extract-cd/casper/vmlinuz
            #cp edit/boot/initrd.img-* extract-cd/casper/initrd.lz
            #else
            #echo -e "${bldred}ERROR: Insufficient privilages. I hope you did not upgrade the kernel.${txtrst}"
            #fi
            # CACHING out at each stage ...
            if [[ $CACHE ]]; then
               #                  SUCCESS=$(rsync -avz edit/var/cache/apt/ ../.cache/$CODEBASE/apt/ 2>/dev/null)
               if [[ -f edit/tmp/internal ]]; then
                  rm edit/tmp/internal
               fi
               if [[ -f edit/tmp/internal ]]; then
                  rm edit/tmp/internal
               fi
               if [[ -f edit/tmp/tmgrub ]]; then
                  rm edit/tmp/tmgrub
               fi
               # PullCache "$CODEBASE" "$ARCH"
               #echo -e -n "${bldgrn}Rsyncing tmp folder: ${txtrst}"

               #SUCCESS=$(rsync -avz edit/tmp/ ../.cache/tmp/ 2>/dev/null)
               #if [[ $SUCCESS ]]; then
               #echo -e "${bldgrn}Cache sync operation successful.${txtrst}"
               #else
               #echo -e "${bldred}Cache sync operation failed.${txtrst}"
            fi
            #echo -e "${bldgrn}Clearing tmp from chroot environment.${txtrst}"
            #rm -rf edit/tmp/* edit/tmp/.* > /dev/null 2>&1

            #//Added
            #echo -e -n "${bldgrn}Super hook: "
            #if [[ -d edit/dev ]]; then
            #   HOOK=$(mount --bind /dev/ edit/dev/)
            #fi
            #if ! [[ $HOOK ]]; then
            #   echo -e "Success.${txtrst}"
            #else
            #   echo -e "${bldred}FAILURE${txtrst}"
            #   exit 0
            #fi
            #               if [[ -f $CURRENT/tmgrub ]]; then
            #                  echo -e "${bldgrn}RE-ENTERING CHROOT Stage 2 of 3 Grub section:"
            #                  echo -e "passing control to internal software.${txtrst}"
            #                  cp $CURRENT/tmgrub edit/tmp/
            #                  /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
            #               else
            #                  if [[ -f /usr/share/ultimate_edition/tmgrub ]]; then
            #                     echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Grub section:"
            #                     echo -e "passing control to internal software.${txtrst}"
            #                     cp /usr/share/ultimate_edition/tmgrub edit/tmp/
            #                     /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
            #                  else
            #                     echo -e "${bldred}ERROR: Missing internal grub script.${txtrst}"
            #                     exit 0;
            #                  fi
            #               fi
            #echo -e -n "${bldgrn}Unhooking: "
            sync
            #if [[ -d edit/dev ]]; then
            #   HOOK=$(umount edit/dev/)
            #fi
            #if ! [[ $HOOK ]]; then
            #   echo -e "Success.${txtrst}"
            #else
            #   echo -e "${bldred}FAILURE${txtrst}"
            #   exit 0
            #fi
            #               if [[ $ULTIMATEEDITION ]]; then
            #                  echo -e "${bldgrn}Internal distro stamping, initiating...${txtrst}"
            #                  DIST_NAME=$UNDERSCORED
            #                  DIST_VERSION=$CVERSION
            #                  DIST_BASE=$CODEBASE
            #                  DIST_NAME_LONG=$ULTIMATEEDITION' '$DISTVER
            #lsb_release
            #                  echo 'DISTRIB_ID='$DIST_NAME > edit/etc/lsb-release
            #                  echo 'DISTRIB_RELEASE='$DIST_VERSION >> edit/etc/lsb-release
            #                  echo 'DISTRIB_CODENAME='$DIST_BASE >> edit/etc/lsb-release
            #                  echo 'DISTRIB_DESCRIPTION="'$DIST_NAME_LONG$DIST_VERSION'"' >> edit/etc/lsb-release
            #issue
            #                  echo $DIST_NAME_LONG'\n \l' > edit/etc/issue
            #                  echo $DIST_NAME_LONG > edit/etc/issue.net
            #os-release
            #                  echo 'NAME="'$DIST_NAME'"' > edit/etc/os-release
            #                  echo 'VERSION='$DIST_VERSION', "'$DIST_BASE'"' >> edit/etc/os-release
            #                  echo 'ID=ultimate' >> edit/etc/os-release
            #                  echo 'ID_LIKE=debian' >> edit/etc/os-release
            #                  echo 'PRETTY_NAME="'$DIST_NAME_LONG'('$DIST_VERSION')"' >> edit/etc/os-release
            #                  echo 'VERSION_ID='$DIST_VERSION >> edit/etc/os-release
            #                  if [[ -f edit/etc/update-motd.d/10-help-text ]]; then
            #                     echo -e "${bldgrn}Stamping MOTD with Ultimate Edition Goodness.${txtrst}"
            #                     sed -i 's/URL=.*/URL=\"http:\/\/forumubuntusoftware.info\/"/g' edit/etc/update-motd.d/10-help-text
            #                  fi
            #
            #                  if [[ -f edit/run/resolvconf/resolv.conf ]]; then
            #                     echo -e "${bldgrn}Removing network information.${txtrst}"
            #                     rm edit/run/resolvconf/resolv.conf
            #                  else
            #                     echo -e "${bldred}No network information detected.${txtrst}"
            #                  fi
            #               fi
            echo -e "${bldgrn}Final deployment information:...${txtrst}"
            cat edit/etc/lsb-release
            cat edit/etc/os-release
            cat edit/etc/issue
            cat edit/etc/issue.net

            #//added///
            #BUILD A MINIMAL ISO, THIS WILL ALSO ACCELERATE FUTURE BUILDS.
         fi
         #         else
         ### ADD MINIMAL ISO EXTRACTION HERE

         #            echo -e "${bldgrn}Stage 1 previously completed successfully, skipping.${txtrst}"
         #            STAGE=2
         #         fi
         STOPM=`date -u "+%s"`
         RUNTIMEM=`expr $STOPM - $STARTM`
         if (($RUNTIMEM>59)); then
            TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
         else
            TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
         fi
         echo -e "${bldgrn}This cache processing will save you aprox $TTIMEM in future builds."

         #exit 0;
         #TODO:ADD CHECK EDIT IF NOT [EXIST] THEN MOUNT AND EXTRACT MINIMAL ISO.

         # STAGE 2 OF 3
         #cd $CURRENT
         #      chroot edit apt-get update

         # echo -e "DEBUG: 1:$1 2:$2 3:$3 4:$4 LITE:$LITE Lite2: $ISLITE"
         if [ $LITE ]; then
            echo 'MATE' > edit/tmp/DE
         fi

         if [ $GAMERS ]; then
            echo 'MATE' > edit/tmp/DE
         fi

         if ! [[ $LITE || $GAMERS ]]; then
            if [[ $ODD ]]; then
               echo 'KDE' > edit/tmp/DE
            else
               echo 'GNOME' > edit/tmp/DE
            fi
         fi

         # PULL $2, $3 etc for extra DE's
         PROCESS=0;
         # Turn off case sensitivity, we want the user to be able to use XFCE and xfce
         shopt -s nocaseglob
         for var in "$*"
         do
            array_counter=$(($array_counter + 1))
            # echo "Switch $array_counter: $var"
            CSWITCH=$(echo $var | grep 'iso')
            if [[ $PROCESS == 1 ]]; then
               nested_array=0;
               for TE in ${EXTRADE[@]}
               do
                  DETC=${EXTRADE[$nested_array]}
                  # echo "Comparing $DETC to $var"
                  if [[ $var == $DETC ]]; then
                     echo "$var" >> edit/tmp/DE
                  fi
                  nested_array=$(($nested_array + 1))
               done
            fi
            if [[ $CSWITCH && $PROCESS=0 ]]; then
               PROCESS=1
            fi
         done
         # RE-PULL CACHE, We had to clean it when we built the minimal ISO
         #            if [[ $CACHE ]]; then
         #               echo -e "${bldgrn}Re-pulling cache, this may save you from downloading many packages.${txtrst}"
         #               if [[ -d ../.cache/$CODEBASE/apt/ ]]; then
         #                  echo -e -n "${bldgrn}Initating cache sync operation. please wait: ${txtrst}"
         #                  SUCCESS=$(rsync -avz ../.cache/$CODEBASE/apt/ edit/var/cache/apt/ 2>/dev/null)
         #                  if [[ $SUCCESS ]]; then
         #                     echo -e "${bldgrn}Operation sucessful.${txtrst}"
         #                  else
         #                     echo -e "${bldred}Operation failed.${txtrst}"
         #                  fi
         #               else
         #                  echo -e "${bldylw}No cache folder, first $CODEBASE $ARCH based O/S build?${txtrst}"
         #               fi
         #               if [[ -d ../.cache/tmp/ ]]; then
         #                  echo -e -n "${bldgrn}Initating Tmp cache sync operation. please wait:"
         #                  SUCCESS=$(rsync -avz ../.cache/tmp/ edit/tmp/ 2>/dev/null)
         #                  if [[ $SUCCESS ]]; then
         #                     echo -e "${bldgrn}Operation sucessful.${txtrst}"
         #                  else
         #                     echo -e "${bldred}Operation failed.${txtrst}"
         #                  fi
         #               else
         #                  echo -e "${bldylw}No Tmp cache folder, first build?${txtrst}"
         #               fi
         #            else
         #               echo -e "${bldylw}No cache switch was used, we will be clearing the cache on this build.${txtrst}"
         #            fi


         if ! [[ -f edit/run/resolvconf/resolv.conf ]]; then
            echo -e "${bldgrn}Restoring network information.${txtrst}"
            cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf
         else
            echo -e "${bldred}Network information detected.${txtrst}"
         fi

         #Cache out stage 2...
         if [[ $CACHE ]]; then
            #echo -e "${bldgrn}Rsyncing cache. This could take a long time the first time it is ran, please wait...${txtrst}"
            #PullCache $DIST $ARCH
            #SUCCESS=$(rsync -avz edit/var/cache/apt/ ../.cache/$CODEBASE/apt/ 2>/dev/null)
            if [[ -f edit/tmp/minimal ]]; then
               rm edit/tmp/minimal
            fi
            if [[ -f edit/tmp/internal ]]; then
               rm edit/tmp/internal
            fi
            if [[ -f edit/tmp/tmgrub ]]; then
               rm edit/tmp/tmgrub
            fi
            #echo -e -n "${bldgrn}Rsyncing tmp folder: ${txtrst}"
            # SUCCESS=$(rsync -avz edit/tmp/ ../.cache/tmp/ 2>/dev/null)
            # if [[ $SUCCESS ]]; then
            #   echo -e "${bldgrn}Success.${txtrst}"
            #else
            #   echo -e "${bldred}Failure.${txtrst}"
            #fi
            #echo -e "${bldgrn}Clearing tmp from chroot environment.${txtrst}"
            #rm -rf edit/tmp/* edit/tmp/.* > /dev/null 2>&1
         fi
         # ///// Scrap me.....
         #echo -e -n "${bldgrn}Super hook: "
         #if [[ -d edit/dev ]]; then
         #   HOOK=$(mount --bind /dev/ edit/dev/)
         #fi
         #if ! [[ $HOOK ]]; then
         #   echo -e "Success.${txtrst}"
         #else
         #   echo -e "${bldred}FAILURE${txtrst}"
         #   exit 0
         #fi
         if [[ -f $CURRENT/tmgrub ]]; then
            echo -e "${bldgrn}Stage 3 of 3: Grub section:"
            echo -e "Passing control to tmgrub software.${txtrst}"
            cp $CURRENT/tmgrub edit/tmp/
            /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
         else
            if [[ -f /usr/share/ultimate_edition/tmgrub ]]; then
               echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Grub section:"
               echo -e "passing control to internal software.${txtrst}"
               cp /usr/share/ultimate_edition/tmgrub edit/tmp/
               /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./tmgrub"
            else
               echo -e "${bldred}ERROR: Missing internal grub script.${txtrst}"
               exit 0;
            fi
         fi
         #if [[ -f $CURRENT/internal ]]; then
         #   echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Desktop Environment section:"
         #   echo -e "passing control to internal software.${txtrst}"
         #   cp $CURRENT/internal edit/tmp/
         #   /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
         #else
         #   if [[ -f /usr/share/ultimate_edition/internal ]]; then
         #      echo -e "${bldgrn}RE-ENTERING CHROOT Stage 3 of 3 Desktop Environment section:"
         #      echo -e "passing control to internal software.${txtrst}"
         #      cp /usr/share/ultimate_edition/internal edit/tmp/
         #      /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
         #   else
         #      echo -e "${bldred}ERROR: Missing internal script.${txtrst}"
         #      exit 0;
         #   fi
         #fi
         #echo -e -n "${bldgrn}Unhooking: "
         sync
         #if [[ -d edit/dev ]]; then
         #   HOOK=$(umount edit/dev/)
         #fi
         #if ! [[ $HOOK ]]; then
         #   echo -e "Success.${txtrst}"
         #else
         #   echo -e "${bldred}FAILURE${txtrst}"
         #   exit 0
         #fi
         #////////


         #umount $CURRENT/edit/dev
         echo -e "${bldgrn}Creating Readme file${txtrst}"
         if ! [[ -f extract-cd/README ]]; then
            echo "This Operating System was auto generated using:" > extract-cd/README.TXT
            VersionDump >> extract-cd/README.TXT
            #            echo "GNU tmosb (TheeMahn O/S Builder) home page: <http://ultimateedition.info/>."  >> extract-cd/README.TXT
            #            echo "E-mail bug reports to: <theemahn@ultimateedition.info>." >> extract-cd/README.TXT
            #            echo "Be sure to include the word tmosb somewhere in the Subject: field." >> extract-cd/README.TXT
            echo "" >> extract-cd/README.TXT
            echo -e -n "Using the command: tmosb " >> extract-cd/README.TXT
            echo $@  >> extract-cd/README.TXT
            echo "on `date`" >> extract-cd/README.TXT
         fi
         PullCache $CODEBASE $ARCH
         if [[ -f edit/run/resolvconf/resolv.conf ]]; then
            echo -e "${bldgrn}Removing network information from chroot.${txtrst}"
            rm edit/run/resolvconf/resolv.conf
         fi
         echo -e "${bldgrn}INITIATING FINAL BUILD PROCESS FOR $DTB${txtrst}"
         #RE-BUILD IT
         echo -en "${bldgrn}Clearing tmp from chroot: "
         SUPPRESS=$((rm -R /tmp/.*) 2>/dev/null)
         SUPPRESS=$((rm -f /tmp/*) 2>/dev/null)
         echo "Success."
         echo -en "${bldgrn}Pushing initramfs to dvd: ${txtrst}"
         mkdir -p extract-cd/{casper,isolinux,install,.disk}
         cp /usr/lib/syslinux/isolinux.bin extract-cd/isolinux/
         if [[ -f /boot/memtest86+.bin ]]; then
            echo -e -n "${bldgrn}Copying memtest: "
            cp /boot/memtest86+.bin extract-cd/install/memtest
            echo "Success."
         else
            echo -e "${bldylw}Memtest not installed on host, not populating: sudo apt-get install memtest86+"
         fi
         FULLNAME=$OUTDISTRO" "$CVERSION


         STOPM=`date -u "+%s"`
         RUNTIMEM=`expr $STOPM - $STARTM`
         if (($RUNTIMEM>59)); then
            TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
         else
            TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
         fi
         #cd $CURRENT
         BuildISO --buildiso $ISO
         exit 0;
      done
   else
      echo -e "${bldred}ERROR: $1 Not found.${txtrst}"
   fi







   #      mount --bind /dev /edit/dev
   #      mount $CURRENT/edit/dev


}

function Help() {
   # echo "DEBUGGING HELP FUNCTION: 1:$1 2:$2 3:$3"
   if [[ $2 == "" ]]; then
      VersionDump
      PRAM="ALL"
   else
      if ! [[ $3 ]]; then
         VersionDump
         PRAM=$2
      else
         PRAM=$2
      fi
   fi

   case $PRAM in
      ALL)
      echo -e "${bldgrn}Usage: $PROGNAME -<-COMMAND> [OPTION]${txtrst}"
      FullBar
      echo "Mandatory arguments to long options are identical for short options."
      echo -e "  possible commands...\n"
      echo '  -b   --build      builds Operating System(s)'
      echo '  -B   --buildiso   builds ISO'
      echo '  -C   --clearcache   clears system cache'
      echo '  -c   --cacheinfo   displays various cache information'
      echo '  -e   --extract   extract ISO(s)'
      echo '  -h   --help      this help message'
      echo '  -p   --pull      pulls all source code to current folder'
      echo '  -t   --test      test ISO in virtual machine and exit'
      echo '  -u   --upgrade   distro upgrades existing Operating System(s)'
      echo -e '  -v   --version   dump version info and exit\n'
      FullBar
      echo -e "${bldgrn}$PROGNAME --help [COMMAND] for further information.${txtrst}";;
      ALL|b|build)
      FullBar
      echo -e "\n${bldwht}Usage build;${txtrst}"
      EyeCandy "$PROGNAME -b <TARGETISO>"
      echo -e "Invokes $PROGNAME to build <TARGETISO> from scratch. The format of the ISO"
      echo "must comply as follows:"
      echo "<DISTRO>-<VERSION>-<ARCHITECTURE>-[LITE/GAMERS].[ISO] [DE]"
      echo "Valid arguments are as follows:"
      echo "Distro: ubuntu, ultimate-edition"
      echo "Version: 12.04, 12.10, 13.04, 13.10, 14.04 for Ubuntu"
      echo "Version: 3.4, 3.5, - , 4.5 for Ultimate Edition"
      echo "Architecture: x86, x64, armel, armhf"
      echo "Lite: lite"
      echo "Gamers: gamers"
      echo "Desktop Environment (DE): mate, kde, xfce, awesome, lxde, razorqt and / or gnome to add [OPTIONAL] Desktop Environment(s)"
      echo "iso, lite, gamers and DE as per synopsis is [OPTIONAL]"
      FullBar
      echo -e "${bldgrn}Example: ${bldwht}$PROGNAME --build ultimate-edition-4.2-x64-lite.iso xfce${txtrst}"
      echo "Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format."
      echo "adding the optional XFCE DE";;
      ALL|B|buildiso)
      echo -e "\n${bldwht}Usage buildiso;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -B [TARGETISO]${txtrst}"
      echo -e "Invokes $PROGNAME to build [TARGETISO] from a preivious build. The format of the ISO"
      echo "must comply as follows:"
      echo "[TARGETISO]"
      echo "Valid arguments are as follows:"
      echo "Existant folder, is optional.  It will otherwise look for information in .disk/info"
      echo -e "${bldgrn}Example: ${bldwht}$PROGNAME --buildiso ultimate-edition-4.2-x64-lite/${txtrst}"
      echo "Will build Ultimate Edition 4.2 64 bit Lite Operating System in ISO format.";;
      ALL|C|clearcache)
      echo -e "\n${bldwht}Usage clearcache;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -C <REQUIREMENT>${txtrst}"
      echo "Clears cache by disgression."
      echo "<REQUIREMENT> is as follows:"
      echo "<debootstrap> clears debootstrap image(s)."
      echo "<minimal> clears minimal ISO image(s)"
      echo "<all> clears the entire cache system."
      echo -e "${bldgrn}Example: $PROGNAME --clearcache debootstrap${txtrst}";;
      ALL|c|cacheinfo)
      echo -e "\n${bldwht}Usage cacheinfo;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -c${txtrst}"
      echo "Displays various cache information."
      echo -e "${bldgrn}Example: $PROGNAME --cacheinfo${txtrst}";;
      ALL|e|extract)
      echo -e "\n${bldwht}Usage extract;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -e <ISO>${txtrst}"
      echo "Extracts <ISO> for further processing."
      echo -e "${bldgrn}Example: $PROGNAME --extract ultimate-edition-4.0-x64.iso${txtrst}";;
      ALL|p|pull)
      echo -e "\n${bldwht}Usage pull;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -p [option]${txtrst}"
      echo -e "Pulls all source code to current folder to allow you to modify it.\n The [option] switch allows you to overwrite if existant source code."
      echo -e "${bldgrn}Example: $PROGNAME --pull --overwrite${txtrst}";;
      ALL|u|upgrade)
      echo -e "\n${bldwht}Usage upgrade;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -u [ISO]${txtrst}"
      echo "Will mount and extract [ISO] image and invoke distribution upgrade."
      echo "The [ISO] is only [OPTIONAL] because it will process folders as well."
      echo -e "\nExample: $PROGNAME --upgrade ultimate-edition-3.4-x64.iso";;
      ALL|t|test)
      echo -e "\n${bldwht}Usage test;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -t [ISO]${txtrst}"
      echo "Invokes a virtual machine to boot [ISO]."
      echo -e "Example: $PROGNAME --test ultimate-edition-4.2-x64.iso";;
      ALL|v|version)
      echo -e "\n${bldwht}Usage version;${txtrst}"
      echo -e "${txtgrn}$PROGNAME -v${txtrst}"
      echo -e "Displays $PROGNAME's version number and exits.";;
      ALL|h|help|\?)
      echo -e "\n${bldwht}Useage Help [COMMAND];${txtrst}"
      echo -e "${txtgrn}$PROGNAME -h [COMMAND]${txtrst}"
      echo "Displays this message. For futher information $PROGNAME help [COMMAND]"
      echo -e "or refer to the manpages.\n"
      echo -e "man $PROGNAME"
      echo -e "${txtgrn}"
      echo -e "Example: $PROGNAME -h version"
      echo -e "${txtwht}Will display help about the command version${txtrst}"
   esac
   exit 0
}

# Pull the souce code to the current running folder.
function PullSource () {
   VersionDump
   # echo -e "${bldgrn}DEBUGGING PULLSOURCE function: 1:$1 2:$2 3:$3"
   array_counter=0;
   for i in ${APPLICATIONS[@]}
   do
      APPLICATIONSOURCE=${APPSRC[$array_counter]}
      if [[ -f $i  && $2 != '--overwrite' ]]; then
         echo -e "${bldred}ERROR: $i exists, not overwriting. \nUse: tmosb --pull --overwrite if you are sure.${txtrst}"
      else
         if [[ -f $APPLICATIONSOURCE/$i ]]; then
            echo -e -n "${bldgrn}Copying source $i to $PWD: ${txtrst}"
            FTG=$(cp $APPLICATIONSOURCE/$i . 2>/dev/null)
            if [[ -f $i ]]; then
               echo -e "${bldgrn}Success."
            else
               echo -e "${bldred}Failure. Source missing?"
            fi
         else
            echo -e "${bldred}ERROR FILE NOT FOUND: $APPLICATIONSOURCE/$i${txtrst}"
         fi
      fi
      array_counter=$(($array_counter + 1))
   done
   echo -e "${bldgrn}Feel free to modify the source in your favorite editor\nExample: gedit internal${txtrst}"
}

function Debootstrap () {
   ID=$2
   if [[ $3 != '--no-cache' ]]; then
      CACHE="--cache"
   fi
   EXTENSION="${ID##*.}"
   FILENAME="${ID%.*}"

   # DEBUGGING
   # echo "1:$1 2:$2 3:$3"

   # UPGRADE ROUTINE - Did the user request an ISO? Does the ISO exist?
   # If so extract the ISO...
   if [[ $IUSER != 'root' ]]; then
      echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
      exit 0;
   fi
   if ! [[ -d $FILENAME ]]; then
      if [[ -f $ID ]]; then
         ExtractISO $ID
      fi
   fi

   if [[ -d $ID ]]; then
      FILENAME=$2
      EXTENSION="FOLDER"
   fi
   #prepare


   # TODO: ADD CODE TO PREVENT FALURE FROM RETURNING FUNCTION VALUES [.ISO]

   if [[ $FILENAME == "" ]]; then
      VersionDump
      InvalidBuildSwitch $*
      Help debootstrap 3
      exit 0;
   else
      VersionDump
   fi

   #ISO Check
   if ! [[ $EXTENSION == 'iso' ]]; then
      FILENAME=$2
      mkdir -p $2
   else
      mkdir -p $FILENAME
   fi
   #Folder?

   cd $CURRENT
   for z in `ls -d */`
   do
      CVERSION=$(echo $z | cut -d "-" -f3)
      cd $z
      # Default naming scheme for Ultimate Edition
      ARCH=$(echo $z | grep -i 'x86')
      # Nothing? Is the user wanting a ubuntu build?
      if ! [[ $ARCH ]]; then
         ARCH=$(echo $z | grep -i 'i386')
      fi
      # Wanting Lite? This data will be pushed to the internal app
      # and adjusted accordingly.
      # TODO: ADD GAMERS ETC?
      LITE=$(echo $z | grep -i 'lite')
      GAMERS=$(echo $z | grep -i 'gamers')
      if [[ $ARCH ]]; then
         ARCH='x86'
         DOUT="i386"
      else
         ARCH='x64'
         DOUT="amd64"
      fi
      # Process via default name if Ubuntu:
      # ubuntu-13.10-desktop-amd64.iso
      EXTENSION="${z##*.}"
      FILENAME="${z%.*}"

      UBUNTU=$(echo $z | grep -i 'ubuntu')

      if [[ $UBUNTU ]]; then
         CVERSION=$(echo $z | cut -d "-" -f2)
      fi

      # Check to see if release is Long Term Supported.
      LTS='NO'
      for zx in ${ISLTS[@]}
      do
         if [[ "$CVERSION" == "$zx" && $LTS == 'NO' ]]; then
            LTS='YES'
         fi
      done

      array_counter=0;
      for OST in ${UEARRAY[@]}
      do
         # DEBUGGING
         # echo "Checking: $OST"
         if [[ $OST == $CVERSION ]]; then
            # DEBUGGING
            # echo "YES: $OST DIST: ${OSARRAY[$array_counter]} NAME: ${DISTARRAY[$array_counter]}"
            DIST=${OSARRAY[$array_counter]}
            FULLNAME=${DISTARRAY[$array_counter]}
         fi
         array_counter=$(($array_counter + 1))
      done
      if [[ $UBUNTU ]]; then
         OUTDISTRO="Ubuntu"
      else
         OUTDISTRO="Ultimate Edition"
      fi
      EVENODD="${2##*.}"
      #echo "DEBUGGING: $EVENODD"
      if [ $((EVENODD%2)) -eq 0 ]; then
         DTYPE='FULL'
         DE="KDE"
      else
         DTYPE='STANDARD'
         DE="GNOME"
      fi

      if [[ $LITE ]]; then
         DTYPE='LITE'
         DE="MATE"
      else
         DTYPE='STANDARD'
      fi
      if [[ $GAMERS ]]; then
         DTYPE='GAMERS'
         DE="MATE"
      fi
      ################ EXTRA DE'S?
      # PULL $2, $3 etc for extra DE's
      PROCESS=0;
      shopt -s nocaseglob
      for var in "$*"
      do
         array_counter=$(($array_counter + 1))
         # echo "Switch $array_counter: $var"
         CSWITCH=$(echo $var | grep 'iso')
         if [[ $PROCESS == 1 ]]; then
            nested_array=0;
            for TE in ${EXTRADE[@]}
            do
               DETC=${EXTRADE[$nested_array]}
               # echo "Comparing $DETC to $var"
               if [[ $var == $DETC ]]; then
                  DE=$DE', '$var
               fi
               nested_array=$(($nested_array + 1))
            done
         fi
         if [[ $CSWITCH && $PROCESS=0 ]]; then
            PROCESS=1
         fi
      done
      ################

      VER=$(echo $CVERSION | cut -d "." -f2)
      if ! [[ $VER =~ ^-?[0-9]+$ ]]; then
         InvalidBuildSwitch $*
      else
         if [[ $VER ]]; then
            if [[ $(( $VER % 2)) -eq 0 ]]; then
               DE="MATE"
            else
               DE="KDE"
            fi
         fi
      fi
      if ! [[ $OUTDISTRO || $CVERSION || $FULLNAME || $ARCH || $LTS || $DTYPE || $DE ]]; then
         InvalidBuildSwitch $*
      fi
      echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
      PrebuildInfo $*
      ################
      echo -e "${bldwht}Operating System pre-build information for${txtrst}: $2"
      echo -e -n "${bldgrn}"
      FullBar
      Columnize -t "OPERATING SYSTEM" "VER" "RELEASE BASE" "ARCH" "LTS" "TYPE" "DE(s)"
      Columnize "$OUTDISTRO" "$CVERSION" "$FULLNAME" "$ARCH" "$LTS" "$DTYPE" "$DE"
      Encapsulate "Is the above correct?"
      FullBar
      echo -e "${bldylw}"
      while true; do
         read -p "WARNING: this will take a long time and download vast quantanties of data. (Y/N)? " yn
         case $yn in
            [Nn]* ) echo -e "${txtrst}"; exit 0;;
            [Yy]* ) echo -e "${txtgrn}"
            echo "Initiating build of $2 ...";
            break;;
            * ) echo "Please answer y or n.";;
         esac
      done
      if ! [[ -d $CURRENT/.cache/$BASEPULL/apt/ ]]; then
         mkdir -p $CURRENT/.cache/$DIST/$ARCH/apt/
      fi

      ### CORE FILES ? ###
      if [[ -s $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Pulling core files from cache."
         cp $CURRENT/.cache/$DIST/ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb .
      else
         echo -e "${bldgrn}Building prerequisites, passing control to external uecorebuilder.${txtrst}"
         #      echo "DEBUGGING: 1:$1"
         GAMERS=$(echo $1 | grep -i "gamers")
         if [[ $LITE ]]; then
            DEBTYPE='lite'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION lite
            else
               uecorebuilder $CVERSION lite
            fi
         fi
         if [[ $GAMERS ]]; then
            DEBTYPE='gamers'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION gamers
            else
               uecorebuilder $CVERSION gamers
            fi
         fi
         if ! [[ $DEBTYPE ]]; then
            DEBTYPE='standard'
            if [[ -f uecorebuilder ]]; then
               ./uecorebuilder $CVERSION
            else
               uecorebuilder $CVERSION
            fi
         fi
      fi

      if [[ -s ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Core files for Ultimate Edition $CVERSION successfully built."
         echo -e -n "${bldgrn}Copying core files for $CVERSION to cache: "
         SUCCESS=$(cp ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb $CURRENT/.cache/$DIST/)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      else
         echo -e "${bldred}ERROR: Failure building core files for Ultimate Edition $CVERSION.${txtrst}"
         exit 0;
      fi
      ### SPLASH ###
      if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         FILEISCACHED=1
         cp $CURRENT/.cache/$DIST/ubiquity-slideshow-ubuntu_90_all.deb .
      fi
      if [[ -s $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         FILEISCACHED=1
         cp $CURRENT/.cache/$DIST/ubiquity-slideshow-kubuntu_90_all.deb .
      fi
      if ! [[ $FILEISCACHED ]]; then
         echo -e "${bldgrn}Building prerequisites, passing control to external usplash-builder.${txtrst}"
         if [[ $LITE ]]; then
            if [[ -f usplash-builder ]]; then
               ./usplash-builder $CVERSION lite
            else
               usplash-builder $CVERSION lite
            fi
         else
            if [[ -f usplash-builder ]]; then
               ./usplash-builder $CVERSION
            else
               usplash-builder $CVERSION
            fi
         fi
         echo -e -n "${bldgrn}Copying Usplash files for $CVERSION to cache: "
         SUCCESS=""
         if [[ -s ubiquity-slideshow-ubuntu_90_all.deb ]]; then
            SUCCESS=$(cp ubiquity-slideshow-ubuntu_90_all.deb $CURRENT/.cache/$DIST/)
         fi
         if [[ -s ubiquity-slideshow-kubuntu_90_all.deb ]]; then
            SUCCESS=$(cp ubiquity-slideshow-kubuntu_90_all.deb $CURRENT/.cache/$DIST/)
         fi
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}Failed.${txtrst}"
         fi
      fi

      if [[ -f ubiquity-slideshow-kubuntu_90_all.deb || -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         echo -e "${bldgrn}Usplash files for Ultimate Edition $CVERSION successfully built."
      else
         echo -e "${bldred}ERROR: Failure building Usplash files for Ultimate Edition $CVERSION.${txtrst}"
         exit 0;
      fi
      #if ! [[ -d $FILENAME ]]; then mkdir $FILENAME; fi
      #cd $FILENAME
      mkdir -p {edit,extract-cd}
      if ! [[ -f extract-cd/README.diskdefines ]]; then
         if ! [[ -f ../.cache/extract-cd.tar.gz ]]; then
            echo -e "${bldgrn}Downloading a generic extract-cd contents...${txtrst}"
            cd extract-cd/
            wget http://ultimateedition.info/Toolz/extract-cd.tar.gz
            mkdir -p ../../.cache/
            cp extract-cd.tar.gz ../../.cache/
         else
            echo -e "${bldgrn}Pulling archive from cache, this saves you from having to re-download it.${txtrst}"
            mkdir -p extract-cd/
            cd extract-cd/
            mkdir -p ../../.cache/
            cp ../../.cache/extract-cd.tar.gz .
         fi
         echo -e -n "${bldgrn}Extracting archive: "
         SUCCESS=$(tar xfv extract-cd.tar.gz 2>/dev/null)
         sync
         if [[ $SUCCESS ]]; then
            echo -e "Success${txtrst}"
         else
            echo -e "${bldred}ERROR in extraction.${txtrst}"
            exit 0;
         fi
         cp extract-cd.tar.gz ../../.cache/extract-cd.tar.gz
         rm extract-cd.tar.gz
         chown root:root -R *
         #mv isolinux/txt.cfg isolinux/isolinux.cfg
         cd ..
         find 'extract-cd/' -type d -exec chmod 755 {} \;
         chmod 644 extract-cd/isolinux/* extract-cd/autorun.inf extract-cd/logo.ico
      else
         echo -e "${bldylw}Previous build detected, not downloading the extract-cd contents.${txtrst}"
      fi
      echo -e -n "${bldgrn}${txtrst}"
      echo -e "${bldgrn}Operating System Output: $OUTDISTRO"
      echo -e "${bldgrn}Operating System version requested: $CVERSION${txtrst}"
      echo -e "${bldgrn}Operating System distribution base: $DIST${txtrst}"
      echo -e "${bldgrn}Architecture requested: $DOUT${txtrst}"
      echo -e "${bldgrn}Distribution Long Name: $FULLNAME${txtrst}"


      if [[ -f ../.cache/$DIST/$ARCH/debootstrap.tar.gz ]]; then
         echo -e "${bldgrn}Debootstrap has been previously backed up to cache.${txtrst}"
         if ! [[ -f edit/etc/lsb-release ]]; then
            echo -e -n "${bldgrn}Pulling bootstrap from cache: "
            cp ../.cache/$DIST/$ARCH/debootstrap.tar.gz .
            if [[ -f debootstrap.tar.gz ]]; then
               echo -e "Success."
            else
               echo -e "${bldred}FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
            fi
            echo -e -n "${bldgrn}Extracting archive: "
            SUCCESS=$(tar -xf debootstrap.tar.gz 2>/dev/null)
            if [[ -f edit/etc/lsb-release ]]; then
               echo "Success."
            else
               echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
               exit 0;
            fi
         else
            echo -e "${bldylw}Prior debootstrap / build exists for $DIST $ARCH build.${txtrst}"
         fi
      else
         echo -e "${bldylw}Prior debootstrap / build does not exist for $DIST $ARCH build. First build?\nEntering Stage 1 - debootstrap.${txtrst}"
      fi

      if ! [[ -f edit/etc/lsb-release ]]; then
         if [[ $DOUT && $DIST ]]; then
            debootstrap --arch=$DOUT $DIST edit   ## Initiate debootstrap process...
            echo -e -n "${bldgrn}Compressing debootstrap:"
            SUCCESS=$(tar -zcvf debootstrap.tar.gz edit)
            if [[ $SUCCESS ]]; then
               echo -e "${bldgrn}Successfully compressed.${txtrst}"
               sync
               echo -e "${bldgrn}Moving debootstrap.tar to cache.${txtrst}"
               mkdir -p ../.cache/$DIST/$ARCH/
               mv debootstrap.tar.gz ../.cache/$DIST/$ARCH/
               STOPM=`date -u "+%s"`
               RUNTIMEM=`expr $STOPM - $STARTM`
               if (($RUNTIMEM>59)); then
                  TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
               else
                  TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
               fi
               echo -e "${bldgrn}This caching process will save you aprox $TTIMEM in future builds."
            else
               echo -e "${bldred} FAILURE. Corrupt tar? tmosb --cleancache${txtrst}"
               exit 0;
            fi
         else
            echo -e "${bldred}ERROR: Invalid switch please see $PROGNAME --help build${txtrst}"
            exit 0;
         fi
      else
         echo -e "${bldylw}Previous build detected, skipping Stage 1: debootstrap.${txtrst}"
      fi

      #PUSH CORE FILEZ into chroot
      #Core files previously built? TODO: ADD Check and retrieve.
      if [[ -f ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb ]]; then
         echo -e "${bldgrn}Moving Core files to chroot environment.${txtrst}"
         SUCCESS=$(mv ubiquity-slideshow-kubuntu_90_all.deb edit/tmp/ 2>/dev/null)
         SUCCESS=$(mv ubiquity-slideshow-ubuntu_90_all.deb edit/tmp/ 2>/dev/null)
         SUCCESS=$(mv ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb edit/tmp/)
         if ! [[ $SUCCESS ]]; then
            echo -e "${bldgrn}Installing Core files in the chroot environment\nignore errors. We will fix them later (Stage 3).${txtrst}"
            /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; dpkg -i ultimate-edition-$CVERSION-$DEBTYPE-core-files.deb"
         fi
      else
         echo "MASSIVE FAILURE: No core Files."
         exit 0
      fi
      # Only update sources list if they have not already been updated.
      if ! [[ -f edit/var/cache/apt/pkgcache.bin ]]; then
         echo -e "${bldgrn}Updating Sources list in chroot environment.${txtrst}"
         # Snatch missing keys while we are at it.
         /usr/sbin/chroot edit /bin/sh -c 'apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver $KEYSERVER --recv $key && gpg --export --armor $key | apt-key add -; done'
      fi

      echo -e "${bldgrn}Fixing any prior errors.${txtrst}"
      /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get install -f -y"
      echo -e "${bldgrn}Distribution updgrading chroot environment.${txtrst}"
      /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get dist-upgrade -y"
      echo -e "${bldgrn}Installing the bare minimum to allow distro to boot\nOnce again ignore errors, we will fix them later (Stage 3).${txtrst}"
      /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; apt-get install --yes --no-install-recommends linux-generic ubuntu-standard casper lupin-casper software-properties-gtk laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils command-not-found bash fonts-liberation"
      echo -e "${bldgrn}Fixing any prior errors.${txtrst}"
      /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; DEBIAN_PRIORITY=critical ; DEBCONF_FRONTEND=noninteractive ; mount none -t proc /proc ; mount none -t sysfs /sys ; mount none -t devpts /dev/pts ; export HOME=/root ; export LC_ALL=C ; apt-get install -f -y ; umount /proc ; umount /sys ; umount /dev/pts"
      CODEBASE=$DIST
      PushCache $DIST $ARCH
      echo -e "${bldgrn}Injecting CODEBASE: $CODEBASE sources list...${txtrst}"
      echo '###### '$UOS 'Repos' > edit/etc/apt/sources.list
      echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE' main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '' >> edit/etc/apt/sources.list
      echo '###### '$UOS' Update Repos' >> edit/etc/apt/sources.list
      echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo 'deb http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-security main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-updates main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-proposed main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '# deb-src http://us.archive.ubuntu.com/ubuntu/ '$CODEBASE'-backports main restricted universe multiverse' >> edit/etc/apt/sources.list
      echo '' >> edit/etc/apt/sources.list
      echo '###### '$UOS' Partner Repo' >> edit/etc/apt/sources.list
      echo 'deb http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
      echo '# deb-src http://archive.canonical.com/ubuntu '$CODEBASE' partner' >> edit/etc/apt/sources.list
      echo '' >> edit/etc/apt/sources.list
      echo '###### '$UOS' Extras Repo' >> edit/etc/apt/sources.list
      echo 'deb http://extras.ubuntu.com/ubuntu '$CODEBASE' main' >> edit/etc/apt/sources.list
      #exit 0;
      ##############################################################################################################
      #      echo -e "${bldgrn}Entering Stage 2 of 3: Internal software.${txtrst}"
      #            if [[ -f internal ]]; then
      #               echo -e "${bldgrn}Copying modified internal script to chroot environment.${txtrst}"
      #               SUCCESS=$(cp internal edit/tmp/)
      #               if ! [[ $SUCCESS ]]; then
      #                  echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
      #                  /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
      #               fi
      #            else
      #               echo -e "${bldgrn}Copying internal script to chroot environment.${txtrst}"
      #               SUCCESS=$(cp /usr/share/ultimate_edition/internal edit/tmp/)
      #               if ! [[ $SUCCESS ]]; then
      #                  echo -e "${bldgrn}Initiating modified internal script in the chroot environment.${txtrst}"
      #                  /usr/sbin/chroot edit /bin/sh -c "cd /tmp/ ; ./internal"
      #               fi
      #            fi

      if [[ $LITE ]]; then
         LITE='lite'
         echo $UOS' '$CVERSION Lite '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
         DTB="$OS-$CVERSION-$ARCH-$LITE.iso"
      else
         LITE=''
         echo 'Ultimate Edition '$CVERSION '"'$FULLNAME'"' - Release $DOUT' ('`date +"%Y%m%d"`')' > extract-cd/.disk/info
         DTB="$OS-$CVERSION-$ARCH.iso"
      fi
      if [[ -f extract-cd/.disk/info ]]; then
         cat extract-cd/.disk/info
      fi
   done
   cd $CURRENT
   STOPM=`date -u "+%s"`
   RUNTIMEM=`expr $STOPM - $STARTM`
   if (($RUNTIMEM>59)); then
      TTIMEM=`printf "%dm%ds\n" $((RUNTIMEM/60%60)) $((RUNTIMEM%60))`
   else
      TTIMEM=`printf "%ds\n" $((RUNTIMEM))`
   fi
   echo "If you would like to customise your distro:"; echo -e "${bldgrn}cp /run/resolvconf/resolv.conf edit/run/resolvconf/resolv.conf"; echo -e "chroot $FOLDER/edit/${txtrst}"; echo "After customization to build your final product:"; echo "tmosb --buildiso $FOLDER"; echo "All operations completed successfully.";
   echo -e "${bldgrn}Execution Time: $TTIMEM"
}
# Command line pre-processor
# SAMPLE INPUTS
# tmos --build ultimate-edition-3.8-x64
# tmos --upgrade ultimate-edition-4.0-x64.iso
# Switch debugging will be removed in the final product
CommandLineInterpreter $*
#echo "DEBUG CLI: $1"
case "$1" in
   -b|--build) BuildNEWISO $*; exit 0;;
   -B|--buildiso) BuildISO $*; exit 0;;
   -c|--cacheinfo) CacheInfo $*; exit 0;;
   -C|--clearcache) ClearCache $*; exit 0;;
   -d|--debootstrap) Debootstrap $*; exit 0;;
   -e|--extract) ExtractISO $*; exit 0;;
   -h|--help|-\?) Help $*; exit 0;;
   -p|--pull) PullSource $*; exit 0;;
   -t|--test) VersionDump; Virtual $*; exit 0;;
   -u|--upgrade) UpgradeISO $*; exit 0;;
   -v|--version) VersionDump; exit 0;;
   *) Help; exit 0;;
esac

# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title         :code-cleanup
# description      :Bash code cleanup script
# Author      :root
# date         :10/23/2013
# version      :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================

/bin/usplash-builder:
Code: Select all
#!/bin/bash
# ==============================================================================
# title         :usplash-builder
# description      :Builds Usplash debian packages.
# author      :theemahn <theemahn@ultimateedition.info>
# date         :08/31/2014
# version      :1.8.9
# usage         :usplash-builder --help
# manual      :man usplash-builder
# notes         :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.9:    Initial public release
# ==============================================================================

APPNAME="TheeMahn O/S Builder"
PROGNAME="usplash-builder"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eyecandy routine
declare -i RR
RR=0
declare -i TT
TT=0


# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
DISTSSUPPORTED=15
declare -a ISLTS=("2.6" "2.7" "3.4" "3.5" "4.2" "4.3" "12.04" "14.04");
declare -a OSARRAY=('lucid' 'lucid' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a UEARRAY=("2.6" "2.7" "3.4" "3.5" "3.6" "3.7" "3.8" "3.9" "4.0" "4.1" "4.2" "4.3" "4.4" "4.5" '12.04' '12.10' '13.04' '13.10' '14.04' '14.10' );
declare -a UETYPES=("lite" "gamers")
declare -a DISTARRAY=("Lucid Lynx" "Lucid Lynx" "Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
declare -a UEARCH=("i386" "amd64" "armel" "armhf");
declare -a OLDRELEASES=("2.6" "2.7");
declare -a CYCLE=("x86" "x64" "armel" "armhf");
declare -a EXTRADE=("XFCE" "MATE" "KDE" "LXDE" "AWESOME" "GNOME" "RAZORQT");
declare -i CVER;
declare -i CSIZE;
declare -a APPLICATIONS=('tmosb' 'uecorebuilder' 'usplash-builder' 'tmgrub' 'internal');
declare -a APPSRC=('/bin' '/bin' '/bin' '/usr/share/ultimate_edition' '/usr/share/ultimate_edition');
declare -a ARGUMENTS=();
declare -a ARGLENGTH=();
declare -a LOGFILEZ=("edit/var/log/bootstrap.log" "edit/var/log/apt/history.log" "edit/var/log/dpkg.log");

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0

# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
   # Is X11 running?
   X=$( pidof X )
   # Does the user have the optional Ultimate Edition Sound scheme installed?
   if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
      WAVE=1
   fi
   # Is the user in an X11 GUI environment and have notification OSD installed?
   if [[ $X && $NOTIFY ]]; then
      a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
   fi
   # Does the user have pre-requisites? If so, break out the Cylon voice.
   if [[ $SOUND && $WAVE ]]; then
      a=$(canberra-gtk-play -i itisdone 2>/dev/null)
   fi
   # Display message in terminal unconditionally
   echo $1
}

# Usage: Eye Candy "Message"
function EyeCandy() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   # ▒ Repostorm 1.7.7 is entering extraction mode. ▒
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
      echo -e "▒ "$STP" ▒"
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
   fi
}

function Encapsulate() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒ Repostorm 1.7.7 is entering extraction mode.                       ▒

   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      DISTANCE=$(expr $COLUMNZ - $STRLEN)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      echo -en "▒ "$STP
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
   fi
}

# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
   RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}

# Center data passed to function on screen
function Center () {
   STP=$1
   if [[ $STP ]]; then
      STRLEN=${#STP}
      CENTER=$(expr $STRLEN / 2 )
      #CENTER=CENTER-1
      TCENTER=$(expr $COLUMNZ / 2 )
      #TCENTER=TCENTER-1
      DISTANCE=$(expr $TCENTER - $CENTER)
      DISTANCE=$(expr $DISTANCE - 2)
      echo -en "${txtrst}"
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
      echo -en "${bldgrn} $STP ${txtrst}"
      TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
      CALC=$(expr $RR + $TT + $STRLEN + 2)
      if [[ $CALC -lt $COLUMNZ ]]; then
         ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
      fi

      # Dubugging:

   fi      # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}

# $1 FOLDER TO PROCESS $2 DONATION LOG
#Set defaults
DISTRO="Ultimate Edition"
VERSIONCHECK=$(echo $* | grep "[0-9]\.[0-9]" | sed 's/ .*//g')
CHECKIT=$(echo $VERSIONCHECK | grep ".[0-9]")
DONORSFILE=$(echo $2 | grep '.csv')

if ! [[ $DONORSFILE && -f $DONORSFILE ]]; then
   DONORSFILE='donors.csv'
fi

function VersionDump {
   Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
   Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
   Encapsulate "E-mail bug reports to: $EMAIL."
   Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
   FullBar
}

# Try to think of the below as a basic database where the values coincide
# Example when it detects 14.10 the arrays will be cycled through looking for
# the value of 14.10 as the UEARRAY would be value[16] the value of
# [16] of DISTARRAY would be Trusty Tahr
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic');
declare -a EVEN=('3.4' '3.6' '3.8' '4.0' '4.2' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a ODD=('3.5' '3.7' '3.9' '4.1' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=("Precise Pangolin" "Precise Pangolin" "Quantal Quetzal" "Quantal Quetzal" "Raring Ringtail" "Raring Ringtail" "Saucy Salamander" "Saucy Salamander" "Trusty Tahr" "Trusty Tahr" "Utopic Unicorn" "Utopic Unicorn" "Precise Pangolin" "Quantal Quetzal" "Raring Ringtail" "Saucy Salamander" "Trusty Tahr" "Utopic Unicorn");
VersionDump
echo "DEBUGGING: $*"
if [[ $1 == "" ]]; then
   echo -e "${bldred}Please provide switch.  Example:"
   echo -e "${bldwht}usplash-builder 4.2 lite${txtrst}"
   exit 0
fi
LITE=$(echo $* | grep -i 'lite')
GAMERS=$(echo $* | grep -i 'gamers')

#Code borrowed from Repostorm & ThumbOS
function Columnize () {
   #echo $COLUMNZ
   MAINS=$(echo "scale=2; $COLUMNZ-30" | bc)
   MAINS=${MAINS%.*}
   #echo $MAINS
   MAINS=$(expr $MAINS - 2)
   MAINS=$(expr $MAINS / 4)
   #echo $MAINS
   if ! [[ $1 ]]; then
      #"#" "DEV" "VENDOR" "LABEL" "TYPE" "SIZE"
      printf "%-0s %-4s %-8s %-32s %-7s %-1s\n" "▒" "#" "DATE" "FIRST_LAST" "AMOUNT"
   else
      #MAINS=$(expr $MAINS / 2)
      printf "%-0s %-4s %-8s %-32s %-7s %-1s\n" "▒" $1 $2 $3 $4
   fi
}

# Debugging function to monitor passed arguments.
function CommandLineIntrepreter(){
   echo -e "${bldgrn}Number of switches passed: $#"
   for var in "$@"
   do
      array_counter=$(($array_counter + 1))
      echo "Switch $array_counter: $var"
   done
}

CVERSION=$VERSIONCHECK
EVENODD="${VERSIONCHECK##*.}"
if ! [[ "$(( EVENODD % 2))" -ne 0 ]]; then
   DTYPE='STANDARD'
   PACKAGE='ubiquity-slideshow-ubuntu_90_all'
else
   DTYPE='KUBUNTU BUILD'
   PACKAGE='ubiquity-slideshow-kubuntu_90_all'
fi
for OST in ${UEARRAY[@]}
do
   if [[ $OST == $CVERSION ]]; then
      DIST=${OSARRAY[$array_counter]}
      FULLNAME=${DISTARRAY[$array_counter]}
   fi
   array_counter=$(($array_counter + 1))
done
if [[ $UBUNTU ]]; then
   OUTDISTRO="Ubuntu"
else
   OUTDISTRO="Ultimate Edition"
fi
DONORS=$DONORSFILE
FullBar
if ! [[ $OUTDISTRO && $CVERSION && $DIST && $FULLNAME && $DTYPE && $PACKAGE ]]; then
   echo "DEBUG: $OUTDISTRO || $CVERSION || $DIST || $FULLNAME || $DTYPE || $PACKAGE"
   echo -e "${bldred}Please provide switch.  Example:"
   echo -e "${bldwht}usplash-builder 4.2 donors.csv${txtrst}"
   FullBar
   exit 0;
fi
if [[ $LITE ]]; then
   DTYPE="lite"
fi
Encapsulate "Operating System Output: $OUTDISTRO"
Encapsulate "Operating System version requested: $CVERSION"
Encapsulate "Operating System distribution base: $DIST"
Encapsulate "Distribution Long Name: $FULLNAME"
Encapsulate "Distribution Type: $DTYPE"
if [[ -f $DONORSFILE ]]; then
   Encapsulate "Donors File: $DONORSFILE (exists)"
else
   Encapsulate "Donors File: $DONORSFILE (non-existant, will pull from server / local)"
fi
FullBar
Center "DEBIAN PACKAGE TO BUILD: $PACKAGE.deb"
FullBar
while true; do
   echo -e -n "${bldred}"
   read -p "Is the above information correct (Y/N)? " yn
   case $yn in
      [Nn]* ) echo -e "${txtrst}"; exit 0;;
      [Yy]* ) echo -e "${txtgrn}"
      echo "Initiating process...";
      break;;
      * ) echo "Please answer y or n.";;
   esac
done

echo -e "${bldgrn}Package to contruct: $PACKAGE.deb${txtrst}"
#GENERIC UBIQUITY SPLASH
if [[ -f /usr/share/ultimate_edition/$PACKAGE.tar.gz && ! -d $PACKAGE ]]; then
   echo -e "${bldgrn}Pulling generic tar $PACKAGE.tar.gz"
   cp /usr/share/ultimate_edition/$PACKAGE.tar.gz .
   echo -e -n "${bldgrn}Extracting archive: "
   SUCCESS=$(tar xfv $PACKAGE.tar.gz)
   sync
   if [[ $SUCCESS ]]; then
      echo -e "Success${txtrst}"
      rm $PACKAGE.tar.gz
   else
      echo -e "${bldred}ERROR in extraction.${txtrst}"
      exit 0;
   fi
else
   if [[ -d $PACKAGE ]]; then
      echo -e "${bldgrn}Previous build exists. Continuing.${txtrst}"
   else
      echo -e "${bldred}CRITICAL ERROR: /usr/share/ultimate_edition/$PACKAGE.tar.gz not found.${txtrst}"
      exit 0;
   fi
fi
#DONORS LIST
if ! [[ -f $DONORS ]]; then
   echo -e "${bldgrn}Pulling donors list...${txtrst}"
   wget http://ultimateedition.info/$DONORS
   if ! [[ -f $DONORS ]]; then
      if [[ -f /usr/share/ultimate_edition/donors.csv ]]; then
         echo -e -n "${bldred}Donors list is not on the server, pulling local copy: ${txtrst}"
         cp /usr/share/ultimate_edition/$DONORS .
         if [[ -f $DONORS ]]; then
            echo -e "${bldgrn}Success.${txtrst}"
         else
            echo -e "${bldred}CRITICAL ERROR: $DONORS not found.${txtrst}"
         fi
      else
         echo -e "${bldred}CRITICAL ERROR: /usr/share/ultimate_edition/$DONORS not found.${txtrst}"
         exit 0;
      fi
   else
      echo -e "${bldgrn}Donors list exists, continuing.${txtrst}"
   fi
else
   echo -e "${bldgrn}Donors list exists, continuing.${txtrst}"
fi

FOLDER=$PACKAGE
FTP=$FOLDER/usr/share/ubiquity-slideshow/slides/
FTYPE='html'
cd $FTP
echo -e "${bldgrn}Processing donors list:"
#Drop the header
echo '<div class="header"><h1 class="title">Donors</h1></div>

<div class="main">

<div class="content wrap-top">
<p>We have recently began asking for <a href="http://ultimateedition.info/donations/">donations</a>.&nbsp; The below people are the ones responsible for keeping #DISTRO a float. Thanks,</p>
<b>Donors</b> (in chronological order):<br>
<center>
<table id="wp-table-reloaded-id-1-no-1" border="1">
<tbody>' > donors.html
#Process list of donors written in comma seperated value.
cd $EXEC
cat $DONORS | while read LINE
do
   DDON=$(echo $LINE | cut -d"," -f1)
   DNAME=$(echo $LINE | cut -d"," -f2| sed 's/\"//g')
   DAMOUNT=$(echo $LINE | cut -d"," -f4)
   echo "<tr><td>"$DDON"</td><td>"$DNAME"</td><td>"$DAMOUNT"</td></tr>" >> $FTP/donors.html
   if [[ $NDONORS -ge 1 ]]; then
      DNAME=$(echo $DNAME | sed "s/<.*//g" | sed 's/ /_/g')
      Columnize "$NDONORS" "$DDON" "$DNAME" "$DAMOUNT"
   else
      Columnize
   fi
   NDONORS=$((NDONORS + 1))
done

cd $FTP
#close out the html
echo '</tbody>
</table>
</center></p>
</div>
<img class="icon" src="icons/ubuntu-logo.png" alt="" />' >> donors.html

cd $EXEC

if [[ -d $PACKAGE ]]; then
   echo -e "${bldgrn}Processing $PACKAGE${txtrst}"
   cd $FTP
   for i in $( ls *.html )
   do
      echo "Processing html file:" $i
      sed -i "s/#DISTRO/$DISTRO/g" $i
      sed -i "s/#VERSION/$CVERSION/g" $i
   done
fi
cd $EXEC
echo -e -n "${bldgrn}Donors list & HTML has been processed, building DEBIAN Package: "
SUCCESS=$(dpkg --build $PACKAGE)
if [[ -f $PACKAGE.deb ]]; then
   echo -e "${bldgrn}Success.${txtrst}"
else
   echo -e "${bldred}FAILURE.${txtrst}"
fi
echo -e "${bldgrn}Cleaning up."
if [[ -f donors.csv ]]; then
   SUPRESS=$(rm donors.csv)
fi
if [[ -d $PACKAGE/ ]]; then
   SUPRESS=$(rm -R $PACKAGE/)
fi
function Help() {
   VersionDump
   if [[ $1 == "" ]];
      then
      PRAM="ALL"
   else
      PRAM=$1
   fi

   case $PRAM in
      ALL)
      echo -e "
      ${bldgrn}Usage: $PROGNAME -<-COMMAND>${txtrst}
      Mandatory arguments to long options are identical for short options.
      possible commands...

      -h   --help      this help message
      -v   --version   dump version info

      ${bldgrn}$PROGNAME --help [COMMAND] for further information.${txtrst}";;
      ALL|v|version)
      echo -e "
      ${bldwht}Usage version;${txtrst}
      ${txtgrn}$PROGNAME -v${txtrst}
      Displays $PROGNAMEs version number and exits.";;
      ALL|h|help|\?)
      echo -e "
      ${bldwht}Useage Help [COMMAND];${txtrst}
      ${txtgrn}$PROGNAME -h [COMMAND]${txtrst}
      Displays this message. For futher information $PROGNAME help [COMMAND]
      or refer to the manpages.

      man $PROGNAME"
      echo -e "${txtgrn}"
      echo -e "Example: $PROGNAME -h version"
      echo -e "${txtwht}Will display help about the command version${txtrst}"
   esac
   exit 0
}
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title         :code-cleanup
# description      :Bash code cleanup script
# Author      :root
# date         :10/23/2013
# version      :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================

/bin/uecorebuilder:
Code: Select all
#!/bin/bash
# ==============================================================================
# title         :ultimate-edition-core-builder
# description      :Builds Ultimate Edition core files.
# author      :theemahn <theemahn@ultimateedition.info>
# date         :08/26/2014
# version      :1.8.9
# usage         :uecorebuilder --help
# manual      :man uecorebuilder
# notes         :See change-log below for further information.
# ==============================================================================
# Change-log:   1.8.8:   Initial public release
#      1.8.9:   Added LTS support 4.2.1 for example will build.
# ==============================================================================
# Version Control

APPNAME="TheeMahn O/S Builder"
PROGNAME="uecorebuilder"
VERSION="1.8.9"
BUILDDATE="08/26/2014"
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"

# set colors so errors etc. stand out.
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0

# Function for outputting to X-11 screen a notification of completion and playing sound.
# The sound file is from the "Optional" ultimate-edition-sound-theme
function Notification () {
   # Is X11 running?
   X=$( pidof X )
   # Does the user have the optional Ultimate Edition Sound scheme installed?
   if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
      WAVE=1
   fi
   # Is the user in an X11 GUI environment and have notification OSD installed?
   if [[ $X && $NOTIFY ]]; then
      a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
   fi
   # Does the user have pre-requisites? If so, break out the Cylon voice.
   if [[ $SOUND && $WAVE ]]; then
      a=$(canberra-gtk-play -i itisdone 2>/dev/null)
   fi
   # Display message in terminal unconditionally
   echo $1
}

# Usage: Eye Candy "Message"
function EyeCandy() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   # ▒ Repostorm 1.7.7 is entering extraction mode. ▒
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
      echo -e "▒ "$STP" ▒"
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
   fi
}

function Encapsulate() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒ Repostorm 1.7.7 is entering extraction mode.                       ▒

   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      DISTANCE=$(expr $COLUMNZ - $STRLEN)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      echo -en "▒ "$STP
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
   fi
}

# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
   RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}

# Center data passed to function on screen
function Center () {
   STP=$1
   if [[ $STP ]]; then
      STRLEN=${#STP}
      CENTER=$(expr $STRLEN / 2 )
      #CENTER=CENTER-1
      TCENTER=$(expr $COLUMNZ / 2 )
      #TCENTER=TCENTER-1
      DISTANCE=$(expr $TCENTER - $CENTER)
      DISTANCE=$(expr $DISTANCE - 2)
      echo -en "${txtrst}"
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
      echo -en "${bldgrn} $STP ${txtrst}"
      TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
      CALC=$(expr $RR + $TT + $STRLEN + 2)
      if [[ $CALC -lt $COLUMNZ ]]; then
         ZZZ=0; while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
      fi

      # Dubugging:

   fi      # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}

#Distribution Layout VARS:
DIST_NAME='Ultimate_Edition'
DIST_VERSION=$1
DIST_NAME_LONG='Ultimate Edition '$1
DIST_UNDERSCORED='Ultimate_Edition_'$1
PACKAGE='ultimate-edition-core-files-0.0.1_all'
PACKAGEVERSION='0.0.1'
PACKAGENAME='ultimate-edition-'$1'-core-files'
PACKAGE=$PACKAGENAME
BASEPACK='ultimate-edition'

function VersionDump {
   Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
   Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
   Encapsulate "E-mail bug reports to: $EMAIL."
   Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
   FullBar
}

declare -a ISLTS=("3.4" "3.4.1" "3.4.2" "3.5" "4.2" "4.2.1" "4.2.2" "4.3" "4.3.1" "12.04" "14.04");
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'utopic' 'utopic' 'precise' 'quantal' 'raring' 'saucy' 'trusty' 'utopic');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Utopic Unicorn' 'Utopic Unicorn' 'Precise Pangolin' 'Quantal Quetzal' 'Raring Ringtail' 'Saucy Salamander' 'Trusty Tahr' 'Utopic Unicorn');
VersionDump

if [[ $IUSER != 'root' ]]; then
   echo -e "${bldred}ERROR: This operation requires true root (su) access.${txtrst}"
   exit 0;
fi
if [[ $1 == "" ]]; then
   echo -e "${bldred}Please provide switch.  Example:"
   echo -e "${bldwht}uecorebuilder 4.0 lite${txtrst}"
   exit 0
fi

CVERSION=$1

LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
   #echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
   CVERSION="${CVERSION%.*}"
   LONGVERSION=$1
else
   LONGVERSION=$CVERSION
fi
EVENODD="${CVERSION##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
   DTYPE='STANDARD'
   DE="MATE"
else
   DTYPE='FULL'
   DE="KDE"
fi

for OST in ${UEARRAY[@]}
do
   if [[ $OST == $CVERSION ]]; then
      DIST=${OSARRAY[$array_counter]}
      FULLNAME=${DISTARRAY[$array_counter]}
   fi
   array_counter=$(($array_counter + 1))
done

#Check for LTS
array_counter=0
LTS="NO"

for OST in ${ISLTS[@]}
do
   if [[ $CVERSION == $OST ]]; then
      LTS="YES"
   fi
   array_counter=$(($array_counter + 1))
done
if ! [[ $DIST ]]; then
   DIST=$2
   echo -e "${bldred}Critical ERROR: Halting..."
   #exit 0;
fi

if [[ $UBUNTU ]]; then
   OUTDISTRO="Ubuntu"
else
   OUTDISTRO="Ultimate Edition"
fi


LITE=$(echo $2 | grep -i "lite")
GAMERS=$(echo $2 | grep -i "gamers")

#LTS? 4.2.1 etc... Not fully implemented as of 1.8.5
LONGLTS=$(echo $1 | grep -E '(.*\.){2}')

if [[ $LITE ]]; then
   DISTTYPE='Lite'
   DTYPE='Lite'
   DEBNAME='lite'
fi
if [[ $GAMERS ]]; then
   DISTTYPE='Gamers'
   DTYPE='Gamers'
   DEBNAME='gamers'
fi
if ! [[ $DISTTYPE ]]; then
   DISTTYPE='Standard'
   DTYPE='Standard'
   DEBNAME='standard'
fi

if [[ $LTS == "YES" ]]; then
   if [[ $DISTTYPE == 'Standard' ]]; then
      OUTDISTRO+=" "$LONGVERSION" LTS"
   else
      OUTDISTRO+=" "$LONGVERSION" "$DISTTYPE" LTS"
   fi
else
   if [[ $DISTTYPE == 'Standard' ]]; then
      OUTDISTRO+=" "$LONGVERSION
   else
      OUTDISTRO+=" "$LONGVERSION" "$DISTTYPE
   fi
fi

PACKAGENAME='ultimate-edition-'$1'-'$DEBNAME'-core-files'
PACKAGE=$PACKAGENAME

Encapsulate "Operating System Output: $OUTDISTRO"
Encapsulate "Operating System version requested: $LONGVERSION"
Encapsulate "Operating System distribution base: $DIST"
Encapsulate "Distribution Long Name: $FULLNAME"
Encapsulate "Distribution Type: $DTYPE"
Encapsulate "Long Term Supported (LTS): $LTS"
Encapsulate "Desktop Environment (DE): $DE"
DISTBASE=$DIST
UEVERSION=$1

FullBar
Center "Package to contruct: $PACKAGENAME.deb"
FullBar

# DEBIAN STRUCTURE
mkdir -p $PACKAGE/usr/share/doc/$PACKAGE/
mkdir -p $PACKAGE/lib/plymouth/themes/
mkdir -p $PACKAGE/etc/lightdm/
mkdir -p $PACKAGE/etc/skel/.config/dconf/
mkdir -p $PACKAGE/etc/update-motd.d/
mkdir -p $PACKAGE/DEBIAN/
mkdir -p $PACKAGE/usr/share/software-center/softwarecenter/distro/
mkdir -p $PACKAGE/usr/share/glib-2.0/schemas/
mkdir -p $PACKAGE/usr/share/applications/
mkdir -p $PACKAGE/usr/share/python-apt/templates/
mkdir -p $PACKAGE/etc/dpkg/origins/
mkdir -p $PACKAGE/usr/lib/ubiquity/apt-setup/generators/
mkdir -p $PACKAGE/etc/xdg/autostart/
mkdir -p $PACKAGE/usr/share/applications/
mkdir -p $PACKAGE/usr/share/python-apt/templates/
mkdir -p $PACKAGE/usr/share/software-center/ui/gtk3/css/
mkdir -p $PACKAGE/usr/share/software-center/ui/gtk3/art/


# Check if we are creating a Lite distribution if so create auto login files for mate
if [[ $DTYPE == 'Lite' ]]; then
   Encapsulate "Lite distribution detected. Setting up auto login for mate."
   echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user=ultimate"  >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
   # echo "user-session=mate" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
   echo "Session=mate" >> $PACKAGE/etc/skel/.dmrc
fi

# Gamers? Repeat above process, Gamers runs on a lite distribution to allow more space for games.
if [[ $DTYPE == 'Gamers' ]]; then
   Encapsulate "Lite distribution detected. Setting up auto login for mate."
   echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user=ultimate"  >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
   # echo "user-session=mate" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
   echo "Session=mate" >> $PACKAGE/etc/skel/.dmrc
fi

if [[ $DE == "KDE" ]]; then
   Encapsulate "Odd number distribution detected. Setting up auto login for KDE."
   echo "[SeatDefaults]" > $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user=ultimate"  >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "autologin-user-timeout=0" >> $PACKAGE/etc/lightdm/lightdm.conf
   # echo "user-session=kde-plasma" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "greeter-session=unity-greeter" >> $PACKAGE/etc/lightdm/lightdm.conf
   echo "[Desktop]" > $PACKAGE/etc/skel/.dmrc
   echo "Session=kde-plasma" >> $PACKAGE/etc/skel/.dmrc
fi
# Core files
echo 'DISTRIB_ID='$DIST_NAME > $PACKAGE/etc/lsb-release
echo 'DISTRIB_RELEASE='$LONGVERSION >> $PACKAGE/etc/lsb-release
echo 'DISTRIB_CODENAME='$DIST >> $PACKAGE/etc/lsb-release
echo 'DISTRIB_DESCRIPTION="'$OUTDISTRO'"' >> $PACKAGE/etc/lsb-release

#issue
echo $DIST_NAME_LONG'\n \l' > $PACKAGE/etc/issue
echo $DIST_NAME_LONG > $PACKAGE/etc/issue.net

#os-release
echo 'NAME="'$DIST_NAME'"' > $PACKAGE/etc/os-release
echo 'VERSION='$LONGVERSION', "'$DIST'"' >> $PACKAGE/etc/os-release
echo 'ID=ultimate' >> $PACKAGE/etc/os-release
echo 'ID_LIKE=debian' >> $PACKAGE/etc/os-release
echo 'PRETTY_NAME="'$DIST_NAME' ('$DIST_VERSION')"' >> $PACKAGE/etc/os-release
echo 'VERSION_ID='$LONGVERSION >> $PACKAGE/etc/os-release

#Templates = for synaptic etc.
#apt-get install software-center

cp /usr/share/ultimate_edition/Ultimate_Edition.info $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.info
cp /usr/share/ultimate_edition/Ultimate_Edition.mirrors $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.mirrors
sed -i 's/Ubuntu/Ultimate_Edition/g' $PACKAGE/usr/share/python-apt/templates/$DIST_NAME.info

if [[ -f /usr/share/software-center/softwarecenter/distro/ubuntu.py ]]; then
   cp /usr/share/software-center/softwarecenter/distro/ubuntu.py $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
   sed -i 's/Ubuntu/Ultimate_edition/g' $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
   INJECTED=1
   #apt-get install --reinstall software-center
fi

if [[ -f /usr/share/software-center/softwarecenter/distro/Ubuntu.py ]]; then
   INJECTED=1
   cp /usr/share/software-center/softwarecenter/distro/Ubuntu.py $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
   sed -i 's/Ubuntu/Ultimate_edition/g' $PACKAGE/usr/share/software-center/softwarecenter/distro/ultimate_edition.py
   #apt-get install --reinstall software-center
fi
if [[ $INJECTED ]]; then
   Encapsulate "Software center fix has been injected into the deb."
else
   Encapsulate "Software center is not installed on host system."
fi

# Create Message of the day
cp /etc/update-motd.d/10-help-text $PACKAGE/etc/update-motd.d/
sed -i 's/URL=.*/URL=\"http:\/\/forumubuntusoftware.info\/"/g' $PACKAGE/etc/update-motd.d/10-help-text

#### CUSOMIZATION SECTION ####
# /etc/X11/default-display-manager contained lightdm instead of /usr/sbin/lightdm
#CUSTOM LightDM - optional & will be empty
#Edit the following file :

# Check if the user has requested odd release IE 4.2.1 (non -standard from database)
#if ! [[ $LONGLTS ]]; then
#echo -en "${bldgrn}Setting up auto login for $DIST_NAME_LONG: "
#echo '[com.canonical.unity-greeter]' > $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-user-backgrounds=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-grid=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'theme-name='$DIST_NAME_LONG  >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background='/usr/share/wallpapers/$DIST_UNDERSCORED.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "logo='/usr/share/pixmaps/"$DIST_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-logo='/usr/share/pixmaps/"$DIST_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "icon-theme-name='Ultimate Edition Dark Glass'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'play-ready-sound=true' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "font-name='Liberation Sans 10'"  >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-color='#000000'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#if [[ -f $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override ]]; then
#      echo -en "1 Success, "
#   else
#      echo -en "${bldred}1 Failure, "
#   fi
#echo "[greeter]" > $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "background=/usr/share/wallpapers/Ultimate_Edition_$CVERSION.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "draw-grid=false" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "logo=/usr/share/pixmaps/$CVERSION-logo.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "theme-name=Ultimate Edition $CVERSION" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "icon-theme-name=Ultimate Edition Dark Glass" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "font-name=Liberation Sans 11" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-antialias=true" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-dpi=96" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-hintstyle=hintfull" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-rgba=rgb" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "indicators=~language;~session;~power" >> $PACKAGE/etc/lightdm/unity-greeter.conf
# 14.04 + moved files on me
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter.conf
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter-ubuntu.conf
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
#      Encapsulate "Success."
#else
#   echo -e "${bldred}Failure.${txtrst}"
#fi
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
#   echo -e "Success.${txtrst}"
#else
#   echo -e "${bldred}Failure.${txtrst}"
#fi
#else
#   NEWVERSION=$(echo $LONGLTS | cut -d. -f1-2)
#   NEW_DIST_UNDERSCORED=$(echo $DIST_UNDERSCORED | cut -d. -f1-2)
#   NEWTHEMENAME=$(echo $DIST_NAME_LONG | cut -d. -f1-2)
#   Encapsulate "Setting up auto login for $NEWTHEMENAME:"
#echo '[com.canonical.unity-greeter]' > $PACKAGE/usr/share/glib-2.0/schemas/10_unity_greeter_background.gschema.override
#echo 'draw-user-backgrounds=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'draw-grid=false' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'theme-name='$NEWTHEMENAME  >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background='/usr/share/wallpapers/$NEW_DIST_UNDERSCORED.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "logo='/usr/share/pixmaps/"$NEWVERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-logo='/usr/share/pixmaps/"$NEW_VERSION"-logo.png'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "icon-theme-name='Ultimate Edition Dark Glass'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo 'play-ready-sound=true' >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "font-name='Liberation Sans 10'"  >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#echo "background-color='#000000'" >> $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override
#if [[ -f $PACKAGE/usr/share/glib-2.0/schemas/50_unity-greeter.gschema.override ]]; then
#   echo -e -n "1 Success, "
#else
#   echo -e "${bldred}1 Failure, "
#fi
#echo "[greeter]" > $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "background=/usr/share/wallpapers/Ultimate_Edition_$NEW_VERSION.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "draw-grid=false" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "logo=/usr/share/pixmaps/$NEW_VERSION-logo.png" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "theme-name=Ultimate Edition $NEWVERSION" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "icon-theme-name=Ultimate Edition Dark Glass" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "font-name=Liberation Sans 11" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-antialias=true" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-dpi=96" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-hintstyle=hintfull" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "xft-rgba=rgb" >> $PACKAGE/etc/lightdm/unity-greeter.conf
#echo "indicators=~language;~session;~power" >> $PACKAGE/etc/lightdm/unity-greeter.conf
# 14.04 + moved files on me
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter.conf
#cp $PACKAGE/etc/lightdm/unity-greeter.conf $PACKAGE/etc/lightdm/lightdm-gtk-greeter-ubuntu.conf
#if [[ -f $PACKAGE/etc/lightdm/unity-greeter.conf ]]; then
#   echo -e "Success.${txtrst}"
#else
#   echo -e "${bldred}Failure.${txtrst}"
#fi
#fi

# POST AND PRE-INST Files.
cp /usr/share/ultimate_edition/postinst $PACKAGE/DEBIAN/
cp /usr/share/ultimate_edition/preinst $PACKAGE/DEBIAN/

# Plymouth Stamping
echo '[Plymouth Theme]' > $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'Name=Ultimate Edition Text' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'Description=Text mode theme based on ubuntu-logo theme' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo 'ModuleName=ubuntu-text' >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "[ubuntu-text]" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "title=Ultimate '$1'" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "black=0x000000" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "white=0xffffff" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "brown=0xcccccc" >> $PACKAGE/lib/plymouth/themes/text.plymouth
echo "blue=0xff0000" >> $PACKAGE/lib/plymouth/themes/text.plymouth

# Distro Templates
# Software Center - Skin it with a dark theme
if [[ -f "/usr/share/ultimate_edition/uebuilder/Software-Center/softwarecenter.css" ]]; then
   Encapsulate "Skinning Software center to support dark themes."
   cp "/usr/share/ultimate_edition/uebuilder/Software-Center/softwarecenter.css" $PACKAGE/usr/share/software-center/ui/gtk3/css/
   if [[ -f /usr/share/ultimate_edition/uebuilder/Software-Center/stipple.png ]]; then
      cp "/usr/share/ultimate_edition/uebuilder/Software-Center/stipple.png" $PACKAGE/usr/share/software-center/ui/gtk3/art/
   fi
fi

# Software Center Icon Stamping
if ! [[ -f "$PACKAGE/usr/share/applications/ubuntu-software-center.desktop" ]]; then
   echo '[Desktop Entry]' > $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Name=Ultimate Edition Software Center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'GenericName=Software Center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Comment=Lets you choose from thousands of applications available for Ultimate Edition' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Exec=/usr/bin/software-center %u' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Icon=logo' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Terminal=false' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Type=Application' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Categories=PackageManager;GTK;System;Settings;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'MimeType=application/x-deb;application/x-debian-package;x-scheme-handler/apt;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'StartupNotify=true' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'X-Ubuntu-Gettext-Domain=software-center' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'X-Unity-IconBackgroundColor=#ffbf87' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   echo 'Keywords=Sources;PPA;Install;Uninstall;Remove;Purchase;Catalogue;Store;Apps;' >> $PACKAGE/usr/share/applications/ubuntu-software-center.desktop
   Encapsulate "Stamping Application Icon for software center: Success."
fi

SUCCESS=$((cp -R /usr/share/ultimate_edition/skel/ $PACKAGE/etc/) 2>/dev/null)
if [[ -f $PACKAGE/etc/skel/.face ]]; then
   Encapsulate "Setting up /etc/skel: Success"
else
   Encapsulate "Setting up /etc/skel: Failure."
fi

# Setup Theme distribution specific:
if [[ -f $PACKAGE/etc/skel/.gconf/apps/metacity/general/%gconf.xml ]]; then
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gconf/apps/metacity/general/%gconf.xml
   Encapsulate "Setting up Theme specific to $CVERSION: Success."
fi

# Set Firefox distribution specific:
if [[ -f $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js ]]; then
   sed -i "s/#VERSION/$LONGVERSION/g" $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js
   sed -i "s/#ARCH/$ARCH/g" $PACKAGE/etc/skel/.mozilla/firefox/q2l51o82.default/prefs.js
   Encapsulate "Setting up mozilla firefox specific to $LONGVERSION: Success."
fi
#Create ORIGIN - aditional core files
echo 'Vendor: Ultimate Edition' > $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Vendor-URL: http://www.ultimateedition.info/' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Bugs: https://launchpad.net/ubuntu.ultimate/+filebug' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME
echo 'Parent: Debian' >> $PACKAGE/etc/dpkg/origins/$DIST_NAME

# Create CONTROL FILE
echo 'Package: '$PACKAGENAME > $PACKAGE/DEBIAN/control
echo 'Version: '$DIST_VERSION >> $PACKAGE/DEBIAN/control
echo 'Architecture: all
Maintainer: Ultimate Edition Team <theemahn@ultimateedition.info>
Installed-Size: 5104
Replaces: gnome-system-monitor, mate-system-monitor, mate-system-monitor, mate-system-monitor-common, base-files, bash, unity-greeter, metacity-common, gsettings-desktop-schemas, nautilus-data, ultimate-edition-customizations, software-center, '$PACKAGENAME', mate-desktop-common, network-manager, network-manager-gnome, ubiquity, xubuntu-default-settings, lightdm-gtk-greeter, caja-common, marco-common, mate-panel, mate-control-center-common, mate-control-center, pluma-common, mate-desktop-environment
Section: web
Depends: libglib2.0-bin, gconf2, dconf-cli
Homepage: http://ultimateedition.info/
Priority: optional' >> $PACKAGE/DEBIAN/control
echo 'Description: Ultimate Edition base files'  >> $PACKAGE/DEBIAN/control
echo ' Ultimate Edition specific distribution defaults. This package' >> $PACKAGE/DEBIAN/control
echo ' was auto generated using TheeMahns OS Builder (uecorebuilder).' >> $PACKAGE/DEBIAN/control
#if [[ -f /usr/share/applications/mate-about.desktop ]]; then
Encapsulate "Setting up base files for $PACKAGE."
cp -R /usr/share/ultimate_edition/uebuilder/* $PACKAGE/usr/share/
#Set Wallpaper
if [[ $LONGLTS ]]; then
   Encapsulate "1: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
else
   Encapsulate "2: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
fi

#SET LOGIN:
if [[ $LONGLTS ]]; then
   Encapsulate "1: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   #THEMENAME
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   #LIGHTDM
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override

   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   #THEMENAME
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   if [[ -f $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini ]]; then
      Encapsulate "Setting theme as Ultimate Edition $CVERSION"
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0
   fi
   if [[ -f $PACKAGE/etc/skel/.gtkrc-2.0-kde4 ]]; then
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0-kde4
   fi
   if [[ -f /usr/share/ultimate_edition/dist-specific/$CVERSION ]]; then
      Encapsulate "Checking for distibution specific files: Found & transfering to deb."
      cp -f /usr/share/ultimate_edition/dist-specific/$CVERSION $PACKAGE/etc/skel/.config/dconf/
      mv $PACKAGE/etc/skel/.config/dconf/$CVERSION $PACKAGE/etc/skel/.config/dconf/user
   else
      Encapsulate "$CVERSION does not exist setting 4.2 as default."
      Encapsulate "Please report this error to theemahn <theemahn@os-builder.com>"
      cp /usr/share/ultimate_edition/dist-specific/user $PACKAGE/etc/skel/.config/dconf/
   fi
else
   Encapsulate "2: Setting the default wallpaper as Ultimate_Edition_$CVERSION.png"
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   #THEMENAME
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml
   #LIGHTDM
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.override
   #THEMENAME
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/mate-ubuntu.gschema.override
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.background.gschema.xml
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.interface.gschema.xml
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/usr/share/glib-2.0/schemas/org.mate.marco.gschema.xml
   if [[ -f $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini ]]; then
      Encapsulate "Setting theme as Ultimate Edition $CVERSION"
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.config/gtk-3.0/settings.ini
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0
   fi
   if [[ -f $PACKAGE/etc/skel/.gtkrc-2.0-kde4 ]]; then
      sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/skel/.gtkrc-2.0-kde4
   fi

   if [[ -f /usr/share/ultimate_edition/dist-specific/$CVERSION ]]; then
      Encapsulate "Checking for distibution specific files: Found & transfering to deb."
      cp -f /usr/share/ultimate_edition/dist-specific/$CVERSION $PACKAGE/etc/skel/.config/dconf/
      mv $PACKAGE/etc/skel/.config/dconf/$CVERSION $PACKAGE/etc/skel/.config/dconf/user
   else
      Encapsulate "$CVERSION does not exist setting 4.2 as default."
      Encapsulate "Please report this error to theemahn <theemahn@os-builder.com>"
      cp /usr/share/ultimate_edition/dist-specific/user $PACKAGE/etc/skel/.config/dconf/
   fi
fi
if [[ -f /usr/share/ultimate_edition/00_site_settings ]]; then
   mkdir -p $PACKAGE/etc/dconf/db/site.d/
   SUPPRESS=$(cp /usr/share/ultimate_edition/00_site_settings $PACKAGE/etc/dconf/db/site.d/)
   sed -i "s/#WALLPAPER/Ultimate_Edition_$CVERSION.png/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
   sed -i "s/#THEMENAME/Ultimate Edition $CVERSION/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
   sed -i "s/#VERSION/$CVERSION/g" $PACKAGE/etc/dconf/db/site.d/00_site_settings
   if ! [[ $SUPPRESS ]]; then
      Encapsulate "Setting sitewide settings: Done."
   else
      Encapsulate "Setting sitewide settings: Failure."
   fi
fi

# If this file exists from Ubuiquity package exists installation will fail, a
# workagound is to touch the object and pre-requiste a replaces ubiquity in the
# control file.
Encapsulate "Fixing Installation halt."
touch $PACKAGE/usr/lib/ubiquity/apt-setup/generators/40cdrom

# Set networking as automanaged.
Encapsulate "Repairing networking issues."
mkdir -p $PACKAGE/etc/NetworkManager/
echo "[main]
plugins=ifupdown,keyfile,ofono
dns=dnsmasq

[ifupdown]
managed=true" > $PACKAGE/etc/NetworkManager/NetworkManager.conf

# Set startup applications.

echo "[Desktop Entry]
Name=Network
Comment=Manage your network connections
Icon=nm-device-wireless
Exec=nm-applet
Terminal=false
Type=Application
NoDisplay=true
NotShowIn=KDE;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=NetworkManager
X-GNOME-Bugzilla-Component=nm-applet
X-GNOME-UsesNotifications=true
X-Ubuntu-Gettext-Domain=nm-applet" > $PACKAGE/etc/xdg/autostart/nm-applet.desktop
Encapsulate "Populating documentation for $PACKAGE."
cp /usr/share/ultimate_edition/doc/copyright $PACKAGE/usr/share/doc/$PACKAGE/
cp /usr/share/ultimate_edition/doc/changelog.gz $PACKAGE/usr/share/doc/$PACKAGE/
if [[ -d $PACKAGE ]]; then
   CURRENT=$PWD
   if [[ -d $PACKAGE/etc/ ]]; then
      Encapsulate "Scanning /etc to build conffiles."
      cd $PACKAGE
      find etc/ -name '*' -type f > DEBIAN/conffiles
      #search and replace etc/ with /etc/
      sed -i 's/etc/\/etc/g' DEBIAN/conffiles
      cd $CURRENT
   else
      Encapsulate "No /etc/ so need to build conffiles."
   fi
   cd $PACKAGE
   Encapsulate "Calculating MD5SUMS in "$PACKAGE
   find -name "DEBIAN" -prune -o -type f -exec md5sum {} + > DEBIAN/md5sums
   cd $CURRENT
   Encapsulate "Setting ownership to root in $PACKAGE"
   sudo chown -R root:root $PACKAGE
   sudo find $PACKAGE -type d -exec chmod 755 {} \;
   Encapsulate "Chmodding folders to 755: Success."
   #set 644 for files
   sudo find $PACKAGE -type f -exec chmod 644 {} \;
   Encapsulate "Chmodding files to 644: Success."
   Encapsulate "Scanning for executables in $PACKAGE."
   FullBar
   echo -en "${txtcyn}"
   find $PACKAGE -name "DEBIAN" -prune -o -type f -exec sh -c 'test "$(head -c 2 "$1")" = "#!"' sh {} \; -print -exec chmod 755 {} \;
   cd $PACKAGE/DEBIAN/
   echo "Setting permissions rights for control etc."
   sudo chmod 755 * 2>/dev/null
   sudo chmod 644 control 2>/dev/null
   sudo chmod 644 md5sums 2>/dev/null
   sudo chmod 644 conffiles 2>/dev/null
   sudo chmod 644 shlibs 2>/dev/null
   sudo chmod 644 symbols 2>/dev/null
   sudo chmod 644 templates 2>/dev/null
   cd $CURRENT
   sudo chmod 755 $PACKAGE/etc/update-motd.d/10-help-text
   #sudo chmod 755 $PACKAGE/usr/share/applications/ubuntu-about.desktop
else
   echo -e "${bldred}CRITICAL ERROR: $PACKAGE, not found.${txtrst}"
   exit 0;
fi
FullBar
echo -e -n "${bldgrn}Building Package $PACKAGENAME.deb: "
SUCCESS=$(dpkg --build $PACKAGENAME)
if [[ $SUCCESS ]]; then
   #mv ultimate-edition-core*.deb ultimate-edition-$1-core-files.deb
   echo -e "${bldgrn}Success.${txtrst}"
   echo -e "${bldgrn}Cleaning up.${txtrst}"
   TRASH=$(rm -R ultimate-edition-"$1"-"$DEBNAME"-core-files/)
   FullBar
   Center "$APPNAME($PROGNAME): All operations completed successfully."
   FullBar
else
   echo -e "${bldred}ERROR: Fatal${txtrst}"
fi

# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title         :code-cleanup
# description      :Bash code cleanup script
# Author      :root
# date         :10/23/2013
# version      :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================


/usr/share/ultimate_edition/internal:
Code: Select all
#!/bin/bash
# ==============================================================================
# title         :TheeMahn's O/S Builder
# description      :Internal build software to build Ultimate Edition Operating Systems.
# author      :theemahn <theemahn@ultimateedition.info>
# date         :08/31/2014
# version      :1.8.9
# usage         :tmosb --help
# manual      :man tmosb
# notes         :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8:    Initial public release
#
# ==============================================================================
# Version Control

APPNAME="TheeMahn O/S Builder"
PROGNAME="internal"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0


# set colors so Error "s etc. stand out.

txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1
OS='ultimate-edition'
if [ `getconf LONG_BIT` = "64" ]; then
   ARCH='amd64'
else
   ARCH='i386'
fi
ROOTFOLDER='http://os-builder.com/UETOYS'
declare -a DESKTOPS=('mate' 'kde' 'xfce' 'gnome' 'unity');

#DEB LIST GENERATOR for TheeMahn's personal use: for i in `ls *.deb`; do echo -e -n " '"; dpkg-deb --info $i | grep 'Package:' |cut -d: -f2 | sed 's/ //g' | tr '\n' "'"; done

declare -a FILELIST=('ultimate-edition-os-builder-1.8.9_all.deb' '100-emerald-themes-0.0.1_all.deb' 'any-color-you-like-icon-theme-0.9.4_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'boje-themes-1.2.1-all.deb' 'conky-builder-1.23_all.deb' 'conky-fonts-0.0.2_all.deb' 'copy_agent-1.46.0380_'$ARCH'.deb' 'faenza-cupertino-0.0.1_all.deb' 'faenza-darker-0.0.1_all.deb' 'gimp-brushes-1.1.0_all.deb' 'gimp-scripts-2.8.0_all.deb' 'grey-deck-theme-pack_0.0.1.deb' 'nouvegnomegray-0.0.1_all.deb' 'revolt-0.0.2_all.deb' 'tm-rename-1.0-4_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-female-themes-1.0-all.deb' 'ultimate-edition-icons-baby-blue-0.0.1_all.deb' 'ultimate-edition-icons-dark-glass.0.0.1_all.deb' 'ultimate-edition-icons-dark-one-0.0.1_all.deb' 'ultimate-edition-icons-gold-0.0.1_all.deb' 'ultimate-edition-icons-light-0.0.1_all.deb' 'ultimate-edition-icons-red-0.0.1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-mp4tomp3-1.0.0_all.deb' 'ultimate-edition-multi-monitor_1.7.5_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-sound-scheme-0.0.5_all.deb' 'ultimate-edition-thumbos_1.0.9_all.deb' 'ultimate-edition-user-contributed-wallpapers-1.0_all.deb' 'zoncolor-0.0.1_all.deb' 'zoncolorbrown-0.0.1_all.deb' 'zoncolorgreen-0.0.1_all.deb' 'zoncolorgrey-0.0.1_all.deb' 'zoncolormaroon-0.0.1_all.deb' 'zoncolororange-0.0.1_all.deb' 'zoncolorpink-0.0.1_all.deb' 'zoncolorpurple-0.0.1_all.deb' 'zoncolorred-0.0.1_all.deb' 'zoncolorsilver-0.0.1_all.deb' 'zoncolorsky-0.0.1_all.deb' 'zoncolorslate-0.0.1_all.deb' 'zoncolorturquoise-0.0.1_all.deb' 'zoncolorwhite-0.0.1_all.deb' 'zoncolorxtra-faenzadarkest-0.0.1_all.deb' 'zoncolorxtra-silverfaenzadarkest-0.0.1_all.deb' 'zoncolorxtra-skyfaenzalight-0.0.1_all.deb' 'zoncolorxtra-slatefaenzalight-0.0.1_all.deb');
#CUSTOM MATE? - add to the below to the above list.

#'mate-core_1.6.0.3+quantal_all.deb' 'mate-desktop-environment_1.6.0.3+quantal_all.deb'
#'ultimate-player_1.0.1~precise_amd64.deb' 'ultimate-player_1.0.1~precise_i386.deb'

#declare -a FILELIST=('100-emerald-themes-0.0.1_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'conky-builder-1.22_all.deb' 'conky-fonts-0.0.2_all.deb' 'radiotray_0.7.3_all.deb' 'tm-rename-1.0-4_all.deb' 'ultamatix-2.0.1_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-keysnatcher-1.0.0_all.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-multi-monitor_1.7.1-6_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-nautilus-scripts-1.6.3_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-thumbos_1.0.3_all.deb' 'yarssr_0.2.2-4_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-icons-dark-glass.0.0.2_all.deb');

declare -a INSTALLNAMES=('ultimate-edition-os-builder' '100-emerald-themes' 'any-color-you-like-icon-theme' 'apt-fast' 'bin2iso' 'boje-themes' 'conky-builder' 'conky-fonts' 'copy-agent' 'faenza-cupertino-icon-theme' 'faenza-darker-icon-theme' 'gimp-brushes' 'gimp-scripts' 'grey-deck-theme-pack' 'nouvegnomegray-icon-theme' 'revolt' 'tm-rename' 'ultimate-cover-grabber' 'ultimate-edition-code-cleanup' 'ultimate-edition-cursors' 'ultimate-edition-female-themes-1.0' 'ultimate-edition-icons-baby-blue' 'ultimate-edition-icons-dark-glass' 'ultimate-edition-icons-dark-one' 'ultimate-edition-icons-gold' 'ultimate-edition-icons-light' 'ultimate-edition-icons-red' 'ultimate-edition-installation-guide' 'ultimate-edition-mergepdf' 'ultimate-edition-mp4tomp3' 'ultimate-edition-multi-monitor' 'ultimate-edition-nas-tools' 'ultimate-edition-repairtheme' 'ultimate-edition-sound-scheme' 'ultimate-edition-thumbos' 'ultimate-edition-user-contributed-wallpapers' 'zoncolor-icon-theme' 'zoncolorbrown-icon-theme' 'zoncolorgreen-icon-theme' 'zoncolorgrey-icon-theme' 'zoncolormaroon-icon-theme' 'zoncolororange-icon-theme' 'zoncolorpink-icon-theme' 'zoncolorpurple-icon-theme' 'zoncolorred-icon-theme' 'zoncolorsilver-icon-theme' 'zoncolorsky-icon-theme' 'zoncolorslate-icon-theme' 'zoncolorturquoise-icon-theme' 'zoncolorwhite-icon-theme' 'zoncolorxtra-faenzadarkest-icon-theme' 'zoncolorxtra-silverfaenzadarkest-icon-theme' 'zoncolorxtra-skyfaenzalight-icon-theme' 'zoncolorxtra-slatefaenzalight-icon-theme');
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr');
declare -a UETHEMES=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5');

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
function Notification () {
   # Is X11 running?
   X=$( pidof X )
   # Does the user have the optional Ultimate Edition Sound scheme installed?
   if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
      WAVE=1
   fi
   # Is the user in an X11 GUI environment and have notification OSD installed?
   if [[ $X && $NOTIFY ]]; then
      a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
   fi
   # Does the user have pre-requisites? If so, break out the Cylon voice.
   if [[ $SOUND && $WAVE ]]; then
      a=$(canberra-gtk-play -i itisdone 2>/dev/null)
   fi
   # Display message in terminal unconditionally
   echo $1
}

# Usage: Eye Candy "Message"
function EyeCandy() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   # ▒ Repostorm 1.7.7 is entering extraction mode. ▒
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
      echo -e "▒ "$STP" ▒"
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
   fi
}

function Error () {
   echo -en "${bldred}"
   FullBar
   Center "$1"
   FullBar
   echo -en "${txtrst}"
}

function Encapsulate() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒ Repostorm 1.7.7 is entering extraction mode.                       ▒

   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      DISTANCE=$(expr $COLUMNZ - $STRLEN)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      echo -en "▒ "$STP
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
   fi
}

# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
   RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}

# Center data passed to function on screen
function Center () {
   STP=$1
   if [[ $STP ]]; then
      STRLEN=${#STP}
      CENTER=$(expr $STRLEN / 2 )
      #CENTER=CENTER-1
      TCENTER=$(expr $COLUMNZ / 2 )
      #TCENTER=TCENTER-1
      DISTANCE=$(expr $TCENTER - $CENTER)
      DISTANCE=$(expr $DISTANCE - 2)
      echo -en "${txtrst}"
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
      echo -en "${bldgrn} $STP ${txtrst}"
      TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
      CALC=$(expr $RR + $TT + $STRLEN + 2)
      if [[ $CALC -lt $COLUMNZ ]]; then
         while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
      fi
      
      # Dubugging:

   fi      # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}

function EXIT () {
   if [[ -f /usr/lib/ubiquity/apt-setup/generators/40cdrom ]];then
      Encapsulate "Removing apt-cdrom."
      FullBar
      rm /usr/lib/ubiquity/apt-setup/generators/40cdrom
   fi
#rm /etc/resolv.conf
#rm /var/lib/apt/extended_states
#rm /var/crash/*
#BAIL OUT
   Encapsulate "Unmounting..."
   QUIET=$(umount -f /proc/sys/fs/binfmt_misc > /dev/null 2>&1)
#Lazily umount -l device
#umount /proc
#umount /sys
#umount /dev/pts
   for D in `mount | sed 's/.*on \(\/.\+\) type.*/\1/'`; do echo -e -n "\e[0;32mUNMOUNTING $D..."; umount -l $D; echo -e " [DONE]\e[0m"; > /dev/null 2>&1 || echo -e "\e[1;31mError: Can not umount $D lsof please\e[0m"; done;
   Encapsulate "Cleaning up tmp files and history..."
   SUPPRESS=$(rm -rf ~/.bash_history /var/cache/apt/*.bin /home/root/.bash_history /root/.bash_history /etc/apt/*.save /etc/apt/sources.list.d/*.save /var/crash/* /*.old 2>/dev/null)
#rm -R /var/cache/apt /var/lib/apt/lists /var/cache/apt/*.bin
   if [[ -f /etc/lsb-release ]]; then
      FullBar
      Center "Final internal deployment information:..."
      FullBar
      lsb_release -a
      cat /etc/os-release
      cat /etc/issue
      cat /etc/issue.net
   fi
   Center "Exiting Chroot environment."
   FullBar
exit
}

function VersionDump {
   Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
   Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
   Encapsulate "E-mail bug reports to: $EMAIL."
   Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
   FullBar
}


# Dump program header
VersionDump
#DETECT CHROOTED ARCH
if [ `getconf LONG_BIT` = "64" ]; then
   Center "64 Bit chrooted architecture detected."
   ARCH='amd64'
else
   Center "32 Bit chrooted architecture detected."
   ARCH='i386'
fi
function Download() {
   local url=$1
   echo -n "    "
   wget --progress=dot $url 2>&1 | grep --line-buffered "%" | \
   sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
   echo -ne "\b\b\b\b"
   echo " Done."
}

# Check inode of rootfs if anything other then 2 we are in a chroot environment
# use above IUSER results to further our cause.& guarantee our success ;)
# Inform user of current findings:
root_inode=$(stat -c %i /);
if [ $root_inode -ne 2 ]; then
   Encapsulate "Chroot environment detected. Setting up appropriately."
else
   Error "Non-chroot environment detected. I refuse to execute. Exiting..."
   exit 0;
fi

#This was a rough one to chew ;)
#Detecting 32 bit or 64 bit in a chroot when the end user
#Could be running a 64 bit host building a 32 bit client.

cd /tmp/
Encapsulate "Mounting necessary points."
#mount -t devpts none /dev/pts
#mount -t proc none /proc
#mount -t sysfs none /sys
export HOME=/root
export LC_ALL=C
cd /tmp/

#Turn off prompting for packages.
export DEBIAN_FRONTEND=noninteractive

INSTALLED=$((dpkg-query -l 'wget' | grep 'ii')2>/dev/null)
LISTS=$((ls /var/cache/apt/*.bin) 2>/dev/null)
Encapsulate "Pulling preliminary sources list, please wait..."
FullBar
echo -e "${txtrst}"
SUPPRESS=$(apt-get update)

if ! [[ $INSTALLED ]]; then
   Center "Rectifing dependency issues."
   FullBar
   apt-get install -f -y
   Center "Pulling preliminary apps & prerequisites."
   FullBar
   apt-get install -y --force-yes --no-install-recommends software-properties-common nano wget python-software-properties bc
fi

DISTREL=$((cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p') 2>/dev/null)
VER=$(echo $DISTREL | cut -d "." -f2)
EVENODD=$(( $VER % 2 ))

INSTALLED=$((dpkg-query -l 'ultimate-edition-repositories' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Retriving Ultimate Edition Repositories..."
   FullBar
   if ! [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
      wget $ROOTFOLDER/ultimate-edition-repositories-0.1.3_all.deb
   fi
   if [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
      dpkg -i ultimate-edition-repositories-0.1.3_all.deb
      if [[ -f cache ]]; then
         rm ultimate-edition-repositories-0.1.3_all.deb
      fi
   fi
else
   Center "Ultimate Edition Repositories already installed."
fi

INSTALLED=$((dpkg-query -l 'ultimate-edition-keysnatcher' | grep 'ii') 2>/dev/null)
KEYSNATCHER='ultimate-edition-keysnatcher-1.0.4_all.deb'
if ! [[ $INSTALLED ]]; then
   # Future builds will be SPECIFIC via $DISTREL value
   # wget http://ultimateedition.info/Ultimate_Edition_$DISTREL/ultimate-edition-keysnatcher-1.0.0_all.deb
   if ! [[ -f $KEYSNATCHER ]]; then
      echo -n "Downloading $KEYSNATCHER:"
      Download $ROOTFOLDER/$KEYSNATCHER
   fi
   if [[ -s $KEYSNATCHER ]]; then
      dpkg -i $KEYSNATCHER
      if [[ -f cache ]]; then
         rm $KEYSNATCHER
      fi
   else
      Error "File not found: $KEYSNATCHER"
   fi
else
   Center "Ultimate Edition Keysnatcher previously installed."
fi

INSTALLED=$((dpkg-query -l 'dbus' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing dbus..."
   apt-get install --yes dbus
else
   Center "Dbus previously installed."
fi
EXISTS=$(which keysnatcher)

if [[ -f /etc/lsb-release ]]; then
   Center "Distro release info:"
   FullBar
   lsb_release -a
   FullBar
        LITE=$(cat /etc/lsb-release | grep -i "lite")
        GAMERS=$(cat /etc/lsb-release  | grep -i "gamers")
        ULTIMATEEDITION=$(cat /etc/lsb-release  | grep -i "ultimate")
        #Center "DEBUGGING: ULTIMATEEDITION: $ULTIMATEEDITION GAMERS:$GAMERS LITE:$LITE"
else
   Error "ERROR: Massive failure, no dist-release info, exiting."
   EXIT
fi

if ! [[ -f ~/.keysnatcher ]]; then
   if [[ $EXISTS ]]; then
      keysnatcher --timeout
      keysnatcher --snatch
      keysnatcher --fixerrors
   else
      apt-get update
   fi
fi
#Center "Inserting diversion..."
#dbus-uuidgen > /var/lib/dbus/machine-id
#dpkg-divert --local --rename --add /sbin/initctl
#ln -s /bin/true /sbin/initctl
Center "Distribution Upgrading..."
FullBar
#PUSH ALL UPGRADES
apt-get -f -y dist-upgrade


#BARE-ESSENTIALS - Have to have a kernel and casperfs to read from:

#TODO: DIST SPECIFIC DATA ENTER HERE CASE THE JOINT
if [[ -f DE ]]; then
   for ZZ in `cat DE`
   do

      case "$ZZ" in
         MATE) INSTALLED=$((dpkg-query -l "mate-desktop-environment" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING MINIMAL DE FOR LITE O/S"; FullBar; apt-get install -y -f --no-install-recommends mate-core mate-desktop-environment; Center "Installing Lightdm display manager & Xorg."; FullBar; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; FullBar; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications."; FullBar; apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         KDE) INSTALLED=$((dpkg-query -l 'kubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING KDE."; apt-get install -y -f kubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         XFCE) INSTALLED=$((dpkg-query -l 'xubuntu-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING XFCE."; apt-get install -y -f xubuntu-desktop;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
                        GNOME) INSTALLED=$((dpkg-query -l 'ubuntu-gnome-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Gnome Desktop."; apt-get install -y -f ubuntu-gnome-desktop gnome-session-fallback;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         LXDE) INSTALLED=$((dpkg-query -l 'lubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING LXDE."; apt-get install -y -f lubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         AWESOME) INSTALLED=$((dpkg-query -l 'awesome' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Awesome DE."; apt-get install -y -f awesome; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         RAZORQT) INSTALLED=$((dpkg-query -l 'razorqt' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING RazorQT."; apt-get install -y -f razorqt; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         *) INSTALLED=$((dpkg-query -l "cups" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING FULL MONTE DE FOR NON LITE O/S"; apt-get install -f -y mate-core mate-desktop-environment lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter ubiquity-frontend-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator network-manager build-essential cups; fi;;
      esac
   done
fi

#UBIQUITY INSTALLED?  ADD MATE TO THE LIST...
if [[ -f /usr/share/applications/ubiquity-gtkui.desktop ]]; then
   Center "Ubiquity installation Detected adding Mate to list."
   sed -i 's/OnlyShowIn=GNOME;XFCE;Unity;/OnlyShowIn=MATE;GNOME;XFCE;Unity;/g' /usr/share/applications/ubiquity-gtkui.desktop
fi
Center "Ignore the above and below Error(s), we will fix them at stage 3 later."
Center "Entering Distro customization section..."

for i in ${INSTALLNAMES[@]}
do
   
   INSTALLED=$(dpkg-query -l "$i" 2>/dev/null | grep 'ii' 2>/dev/null)
   if ! [[ $INSTALLED ]]; then
      Center "Checking installation of $i: Not Installed."
      FTG=${FILELIST[$array_counter]}
      if ! [[ -f $FTG ]]; then
         echo -e "${bldgrn}Checking cache for $FTG: ${bldylw}Does not exist."
         echo -en "${bldgrn}Downloading $i: "
         Download $ROOTFOLDER/$FTG
         if [[ -s $FTG ]]; then
            INSTALL=$(dpkg -i $FTG 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Installing $i: Installed.${txtrst}"
            else
               Error "Installing $i: Failed."
            fi
         else
            Error "Failed to download $i."
         fi
      else
         echo -e "${bldgrn}Checking cache for $FTG: Exists.${txtrst}"
         echo -en "${bldgrn}Installing $i: "
         INSTALL=$(dpkg -i $FTG 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed to install $i."
         fi
      fi

      if [[ -f cache ]]; then
         rm $FTG
      fi
   else
      Center "$i has already been Installed."
   fi
   array_counter=$(($array_counter + 1))
done

Center "Installing Ultimate Edition Themes..."
echo -e "\n"
for i in ${UETHEMES[@]}
do
   PRE="ultimate-edition"
   POST=""
   ZZ="ultimate-edition-theme-$i"
   # ultimate-edition-theme-4.4-all.deb
   DEBFILE="ultimate-edition-theme-$i-all.deb"
   echo -en "${bldgrn}Checking installation of $ZZ: "
   INSTALLED=$(dpkg-query -l "$ZZ" 2>/dev/null | grep 'ii' 2>/dev/null)
   if ! [[ $INSTALLED ]]; then
      echo -e "${bldylw}Not installed."
      echo -en "${bldgrn}Checking cache: "
      FTG=$DEBFILE
      if ! [[ -f $FTG ]]; then
         echo -e "${bldylw}Does not exist."
         echo -en "${bldgrn}Downloading $ZZ: "
         Download $ROOTFOLDER/$FTG
         if [[ -s $FTG ]]; then
            echo -en "${bldgrn}Installing $ZZ: "
            INSTALL=$(dpkg -i $FTG 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Done.${txtrst}"
            else
               echo -e "${bldred}Failed.${txtrst}"
            fi
         else
            Error "Failed to download $ZZ"
            Error "Please report issue to TheeMahn <theemahn@os-builder.com>."
         fi
      else
         
         INSTALL=$(dpkg -i $FTG 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installing $i from cache: Done${txtrst}"
         else
            Error "Installing $i from cache: Failed."
         fi
      fi

      if [[ -f cache ]]; then
         rm $FTG
      fi
   else
      echo -e "\n"
      Center "Ultimate edition $i theme has been installed."
   fi
   array_counter=$(($array_counter + 1))
done

Center "Fixing any dependency issues..."
apt-get install -f -y
#Fix for hosed modemmanager.
if ! [[ -f /etc/init.d/modemmanager ]];then
   INSTALLED=$((dpkg-query -l "modemmanager" | grep 'ii') 2>/dev/null)
   if [[ $INSTALLED ]]; then
      Error "Repairing modem manager issue."
      touch /etc/init.d/modemmanager
      apt-get remove --purge -y -f modemmanager
      if [[ -f /etc/init.d/modemmanager ]]; then
         rm /etc/init.d/modemmanager
      fi
   fi
fi
# ultimate-edition-4.4-plymouth_all.deb
INSTALLED=$(dpkg-query -l "ultimate-edition-$DISTREL-plymouth" | grep 'ii')
if ! [[ $INSTALLED ]]; then
   if ! [[ -f ultimate-edition-plymouth-"$DISTREL"-plymouth_all.deb ]]; then
      echo -e -n "${bldgrn}Retrieving plymouth splash for Ultimate Edition $DISTREL: "
      Download "$ROOTFOLDER/ultimate-edition-plymouth-"$DISTREL"_all.deb"
      if [[ -f ultimate-edition-plymouth-"$DISTREL"_all.deb ]]; then
         echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb: "
         INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed."
         fi
      else
         echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb from cache: "
         INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed."
         fi
      fi
      if [[ -f "ultimate-edition-plymouth-"$DISTREL"_all.deb" ]]; then
         if [[ -f cache ]]; then
            rm "ultimate-edition-plymouth-"$DISTREL"_all.deb"
         fi
      fi
   else
      Center "Ultimate Edition $DISTREL Plymouth already installed."
   fi
fi
apt-get install -f -y
#DE SPECIFIC STUFF
Center "Installed sessions:"
ls /usr/share/xsessions/
if [[ -f /usr/share/xsessions/mate.desktop ]]; then
   Center "Mate Installation detected... Setting Mate as default Desktop Environment."
   if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
      /usr/lib/lightdm/lightdm-set-defaults -s mate
   fi
fi

if [[ -f /usr/share/xsessions/kde-plasma.desktop ]]; then
   Center "KDE Installation detected... Setting KDE as default Desktop Environment."
   if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
      /usr/lib/lightdm/lightdm-set-defaults -s kde-plasma
   fi
   if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png && /usr/share/wallpapers/kde-default.png ]]; then
      Center "Setting Ultimate Edition $DISTREL Wallpaper as default for KDE."
      SUPRESS=$(rm /usr/share/wallpapers/kde-default.png)
      SUPRESS=$(ln -s /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/kde-default.png)
      mkdir -p /usr/share/wallpapers/Elarun/contents/images/
      cp /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/Elarun/contents/images/2560x1600.png
   else
      if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png ]]; then
         Error "Error: Ultimate Edition $DISTREL wallpaper not installed."
      fi
      if [[ -f /usr/share/wallpapers/kde-default.png ]]; then
         Error "Error: NO KDE default wallpaper."
      fi
   fi
         
   INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-kubuntu' | grep 'ii') 2>/dev/null)
   if ! [[ $INSTALLED ]] ; then
      apt-get remove -f -y --purge ubiquity-frontend-gtk
      apt-get install -y -f ubiquity-frontend-kde
      if ! [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         echo -e -n "${bldgrn}Downloading ubiquity-slideshow-kubuntu_90_all.deb: "
         Download "$ROOTFOLDER/ubiquity-slideshow-kubuntu_90_all.deb"
      fi
      if [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         echo -e -n "${bldgrn}Installing ubiquity-slideshow-kubuntu_90_all.deb: "
         INSTALL=$(dpkg -i ubiquity-slideshow-kubuntu_90_all.deb 2>/dev/null)
         if [[ $INSTALL ]]; then
            Center "Installed."
         else
            Error "Failed."
         fi
         if [[ -f cache ]]; then
            rm ubiquity-slideshow-kubuntu_90_all.deb
         fi
      else
         Error "Error: File not found: ubiquity-slideshow-kubuntu_90_all.deb"
      fi
   fi
else
   INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-ubuntu' | grep 'ii') 2>/dev/null)
   if ! [[ $INSTALLED ]] ; then
      apt-get remove -f -y --purge ubiquity-frontend-kde
      apt-get install -y -f ubiquity-frontend-gtk
      if [[ -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         echo "Installing Ubiquity Slideshow for Mate / Gnome etc."
         INSTALL=$(dpkg -i ubiquity-slideshow-ubuntu_90_all.deb 2>/dev/null)
      fi
   fi
fi

##CUSTOMIZE GRUB MENU
if [[ -f /etc/default/grub ]]; then
   PRECUSTOM=$((cat /etc/default/grub | grep 'Ultimate') 2>/dev/null)
   if ! [[ $PRECUSTOM ]]; then
      GFONT=$(which grub-mkfont)
      if [[ $GFONT ]]; then
         Center "Customizing the Grub Menu, please wait."
         #Build font
         Center "Building grub font..."
         grub-mkfont --size=16 --output=/boot/grub/liberation.pf2 /usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf
         echo 'GRUB_BACKGROUND="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
         echo 'export GRUB_MENU_PICTURE="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
         echo 'export GRUB_COLOR_NORMAL="black/black"' >> /etc/default/grub
         echo 'export GRUB_COLOR_HIGHLIGHT="red/black"' >> /etc/default/grub
         echo 'GRUB_FONT="/boot/grub/liberation.pf2"' >> /etc/default/grub
      else
         Error "Error: grub-mkfont not availible, grub will not be customized."
      fi
   else
      Center "Grub menu is already customised."
   fi
else
   Error "Error: Grub is currently not installed."
fi

CVERSION=$DISTREL
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
   #echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
   CVERSION="${CVERSION%.*}"
   LONGVERSION=$1
else
   LONGVERSION=$CVERSION
fi
EVENODD="${DISTREL##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
   DTYPE='STANDARD'
   DE="MATE"
else
   DTYPE='FULL'
   DE="KDE"
fi
#APPZ
INSTALLED=$((dpkg-query -l 'vlc' | grep 'ii') 2>/dev/null)
if [[ $ULTIMATEEDITION ]]; then
   if [[ $LITE || $GAMERS ]]; then
      if ! [[ $INSTALLED ]]; then
         Center "Installing $DISTREL Lite / Gamers applications."
         apt-get install -y -f udisks gnome-disk-utility gnome-themes-standard broadcom-sta-common ubuntu-restricted-extras p7zip-full alien alsa-oss arj b43-fwcutter bchunk binutils bootchart build-essential bum bzip2 bzr cheese cvs devede dkms faac faad fakeroot ffmpeg2theora flac fslint ftp genisoimage gftp gimp glade gnome-codec-install wavpack preload pidgin-plugin-pack gstreamer-tools debootstrap unrar mppenc gstreamer0.10-plugins-ugly vorbis-tools ksnapshot pidgin-extprefs pidgin-themes gnome-icon-theme-suede icedtea-7-plugin xvid4conf gtkpod id3v2 hardinfo patchutils gnome-icon-theme-gperfection2 nrg2iso qemu python-chm gstreamer0.10-plugins-bad-multiverse soundkonverter qt4-designer dh-buildinfo mp3gain vorbisgain squashfs-tools isomaster qemu-launcher gnome-themes-extras k3b phatch tidy gnupod-tools kvirc pidgin-guifications kdeartwork-emoticons oss-compat qt4-qmake devscripts gtk-recordmydesktop rar phatch-cli cabextract gstreamer0.10-fluendo-mp3 qtcreator wireshark murrine-themes pidgin ubuntu-dev-tools wifi-radar mpg321 gnome-icon-theme-nuovo ntfs-config sysinfo winbind xnest unace htop lintian linux-firmware-nonfree youtube-dl qemuctl qemubuilder ndiswrapper-utils-1.9 broadcom-sta-common k3b-extrathemes libk3b6-extracodecs imagination terminator vlc gdebi samba calibre clementine fonts-unfonts-extra fonts-unfonts-core mediainfo system-config-samba synaptic xscreensaver-gl-extra xscreensaver-data-extra dconf-tools git subversion cmake qdbus gtk3-engine* transmission-gtk firefox hddtemp xbmc libreoffice ubuntu-restricted* firefox libreoffice xbmc
         
         WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
         if ! [[ $WINE ]]; then
            Center "Installing Wine."
            FullBar
            apt-get install -f -y wine
         fi
         WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
         if [[ $WINE ]]; then
            Download "$ROOTFOLDER/PlayOnLinux_4.2.4.deb"
         else
            Error "Installation of wine failed, not installing play on linux."
         fi
         if [[ -f PlayOnLinux_4.2.4.deb ]]; then
            echo -e -n "${bldgrn}Installing PlayOnLinux_4.2.4.deb: "
            INSTALL=$(dpkg -i PlayOnLinux_4.2.4.deb 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Installed.${txtrst}"
            fi
            if [[ -f cache && -f PlayOnLinux_4.2.4.deb ]]; then
               rm PlayOnLinux_4.2.4.deb
            fi
         else
            Error "Error: File not found: PlayOnLinux_4.2.4.deb"
         fi
         apt-get install -f -y ubuntu-tweak tovid
         # apt-get install -f -y conky-all
         Error "Purging Nautilus..."
         apt-get remove --purge -y nautilus
         else
            Center "Ultimate Edition $DISTREL Lite applications already installed."
         fi
      fi
   if ! [[ $LITE || $GAMERS ]]; then
         Center "Odd release detected."
         Center "Installing a pantheon of applications..."
         FullBar
         apt-get install -y -f abiword abiword-plugin-grammar abiword-plugin-mathview aisleriot alien alsa-oss arj aspell b43-fwcutter backintime-gnome bc bchunk big-cursor binutils blender bootchart brasero broadcom-sta-common build-essential bum bzip2 bzr cabextract cairo-clock calibre calligra ccd2iso cdparanoia cdrdao cervisia chameleon-cursor-theme checkgmail cheese clamav clamav-freshclam clamtk cmake conky-all crystalcursors cvs dconf-tools dctrl-tools debootstrap devede devscripts dh-buildinfo dkms dragonplayer dvdrip dvdrip-utils dvd-slideshow dvdstyler dvgrab elinks entagged exaile faac faad fakeroot fancontrol ffmpeg2theora file-roller flac fonts-unfonts-core fonts-unfonts-extra fslint f-spot ftp gddrescue gdebi gdesklets gedit genisoimage gftp gimp git glade gnome-codec-install gnome-disk-utility gnome-icon-theme-gperfection2 gnome-icon-theme-nuovo gnome-icon-theme-suede gnome-icon-theme-yasis gnome-themes-extras gnome-themes-standard gnumeric gnupod-tools gphpedit gpp gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer-tools gtkpod gtk-recordmydesktop hardinfo hddtemp htop hydrogen icedtea-7-plugin id3v2 imagination industrialtango-theme inkscape isomaster istanbul k3b k3b-extrathemes k3d kdeartwork-emoticons kdemultimedia-kio-plugins kdenlive kino kolourpaint4 kompare kopete kopete-message-indicator krita krosspython ksnapshot ktorrent kvirc libk3b6-extracodecs lintian linux-firmware-nonfree lives lynx mdf2iso mediainfo medit metacity-themes mkvtoolnix mp3gain mpg321 mppenc murrine-themes ndisgtk ndiswrapper-utils-1.9 nrg2iso ntfs-config oss-compat outdoors-theme oxygen-cursor-theme-extra p7zip p7zip-full perl-tk phatch phatch-cli pidgin pidgin-extprefs pidgin-guifications pidgin-plugin-pack pidgin-sipe pidgin-themes preload python-chm python-lxml python-numpy python-pyexiv2 python-renderpm python-reportbug python-reportlab python-reportlab-accel python-uniconvertor python-wxversion qemu qemubuilder qemuctl qemu-launcher qt4-designer qt4-dev-tools qt4-qmake qtcreator rar recordmydesktop ripoff samba sbackup screenlets shutter sound-juicer soundkonverter squashfs-tools subversion synaptic sysinfo system-config-samba t1-xfree86-nonfree terminator tidy transmission-gtk ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac tvtime ubuntu-dev-tools udisks unace unrar vamps videotrans vlc vorbisgain vorbis-tools wavpack wdiff wifi-radar winbind wireshark xcftools xnest xscreensaver-data-extra xscreensaver-gl-extra xvid4conf yakuake youtube-dl firefox libreoffice xbmc ubuntu-restricted*
         apt-get install -f -y ubuntu-tweak tovid tovidgui
         Center "Installing Wine."
         apt-get install -f -y wine
   else
      Center "Non-Odd release detected."
   fi
fi

if [[ $GAMERS ]]; then
   
   apt-get install -y -f broadcom-sta-common ubuntu-restricted-extras p7zip-full alsa-oss arj b43-fwcutter bzip2 conky-all preload gstreamer-tools unrar gstreamer0.10-plugins-ugly icedtea-7-plugin xvid4conf gstreamer0.10-plugins-bad-multiverse rar gstreamer0.10-fluendo-mp3 ntfs-config ndiswrapper-utils-1.9 broadcom-sta-common terminator vlc gdebi samba system-config-samba gtk3-engine*
        Center "Installing Games for Ultimate Edition Gamers $CVERSION"
   FullBar
   apt-get install -f -y childsplay capitalism billard-gl chromium-bsu megaglest scummvm spring dreamchess warzone2100 supertuxkart defendguin xboard djl scorched3d enigma gnome-games armagetronad gelide alien-arena freeciv-client-sdl pax-britannica

   FullBar
   Center "Installing Wine."
   apt-get install -f -y wine

   Error "Purging Nautilus..."
   apt-get remove --purge -y nautilus
fi

#Templates = for synaptic etc.
#apt-get install software-center
#INTERNAL DISTRO STAMPING
#Distribution Layout VARS:
#Necessary for Ultimate Edition Software center to function.
INSTALLED=$((dpkg-query -l 'software-center' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing software center."
   FullBar
   apt-get install -f -y --no-install-recommends software-center
fi


INSTALLED=$((dpkg-query -l 'software-properties-gtk' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing software properties & unhiding it for $DISTREL"
   FullBar
   apt-get install -y -f software-properties-gtk
   if [[ -f /usr/share/applications/software-properties-gtk.desktop ]]; then
      sed -i s/NoDisplay=true/NoDisplay=false/ /usr/share/applications/software-properties-gtk.desktop
   fi
fi
#INTERNAL DISTRO STAMPING

#INSTALLED=$(dpkg-query -l "ultimate-edition-customizations" | grep 'ii')
#if ! [[ $INSTALLED ]]; then
#   Center "Installing customizations for $DISTREL"
#   FTG='ultimate-edition-customizations-'$DISTREL'_all.deb'
#   wget $ROOTFOLDER/$FTG
#   if [[ -f $FTG ]]; then
#      dpkg -i --force-overwrite $FTG
#      #sudo apt-get -o Dpkg::Options::="--force-overwrite" install $FTG
#      rm $FTG
#   else
#      Error "Error ": File not found $FTG."
#   fi
#else
#   echo "Ultimate Edition Customizations already installed."
#fi
DISTREL=$(cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
PRECUSTOM=""
Center "Setting up Startup applications..."
FullBar

#Startup apps:

#Yarssr
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing Yet Another RSS Reader for $DISTREL"
   FullBar
   apt-get install -f -y yarssr

else
   Center "YARSSR is already installed."
fi
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/yarssr.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for YARSSR: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/yarssr.desktop
   echo 'Name=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Name[en_GB]=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Exec=yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Icon=gnome-do' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Comment=Grab News feeds with low resource usage.' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Categories=Internet;' >> /etc/xdg/autostart/yarssr.desktop
   if [[ -f /etc/xdg/autostart/yarssr.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for YARSSR already exists."
fi

#Radiotray
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing Radiotray for $DISTREL"
   FullBar
   apt-get install -f -y radiotray
else
   Center "Radiotray is installed."
   FullBar
fi
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/radiotray.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for radiotray: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/radiotray.desktop
   echo 'Name=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Name[en_GB]=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Exec=radiotray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Icon=radiotray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Comment=Streams Radio stations.' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Categories=Internet;' >> /etc/xdg/autostart/radiotray.desktop
   if [[ -f /etc/xdg/autostart/radiotray.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for radiotray already exists."
   FullBar
fi
INSTALLED=$((dpkg-query -l 'conky-builder' | grep 'ii') 2>/dev/null)
CONKY='conky-builder-1.23_all.deb'
if ! [[ $INSTALLED ]]; then
   if ! [[ -f $CONKY ]]; then
      echo -n "Downloading $CONKY:"
      Download $ROOTFOLDER/$CONKY
   fi
   if [[ -s $CONKY ]]; then
      dpkg -i $CONKY
      if [[ -f cache ]]; then
         rm $CONKY
      fi
   else
      Error "Error: File not found $CONKY"
   fi
else
   Center "Conky Builder previously installed."
   FullBar
fi
INSTALLED=$((dpkg-query -l "conky-builder" | grep 'ii') 2>/dev/null)

#Conky Builder
if ! [[ -f /etc/xdg/autostart/cbuilder.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for Conky Builder: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/cbuilder.desktop
   echo 'Name=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Name[en_GB]=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Exec=/usr/share/ultimate_edition/conkybuilder.sh' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Icon=gnome-do' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Comment=Builds Conky skelaton.' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Categories=System;' >> /etc/xdg/autostart/cbuilder.desktop
   if [[ -f /etc/xdg/autostart/cbuilder.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for conky-builder already exists."
   FullBar
fi
# Fusion Icon deliberatly removed from list, broken in mate.
#   INSTALLED=$(dpkg-query -l "fusion-icon" | grep 'ii')
#   if ! [[ $INSTALLED ]]; then
#      Center "Installing Fusion Icon for $DISTREL"
#      apt-get install -f -y fusion-icon
#   else
#      Center "Fusion Icon is installed."
#   fi
#   #Fusion
#   echo '[Desktop Entry]
#   Name=Fusion Icon
#   Name[en_GB]=Fusion Icon
#   Type=Application
#   Exec=fusion-icon
#   Terminal=false
#   Icon=fusion-icon
#   Comment=Enables access to compiz and emerald.
#   Categories=System;' > /etc/xdg/autostart/fusion.desktop


#Fix for hosed woopsie.
INSTALLED=$((dpkg-query -l "woopsie" | grep 'ii') 2>/dev/null)
if [[ -f /etc/init.d/woopsie && $INSTALLED ]];then
   Error "Repairing woopsie issue."
   touch /etc/init.d/woopsie
   if [[ $INSTALLED ]]; then
      apt-get remove --purge -y -f woopsie;
   fi
   if [[ -f /etc/init.d/woopsie ]]; then
      rm /etc/init.d/woopsie
   fi
fi
apt-get install -f -y
INSTALLED=$((dpkg-query -l "xfsprogs" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing additional filesystem support."
   FullBar
   apt-get install -f -y mtools e2fsprogs jfsutils reiserfsprogs xfsprogs mdadm btrfs-tools ntfs-3g mdadm
fi
if [[ -f cache ]]; then
   Center "Cleaning up..."
   apt-get autoremove -y --force-yes
   apt-get clean
   apt-get autoclean
else
   Center "Not cleaning up old packages, cache switched engaged"
   echo -e "We will move them out to keep the cache when we exit chroot."
   apt-get autoremove -y --force-yes
fi
Center "Cleaning up configuration files. Please ignore any Errors."
FullBar
SUCCESS=$((dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge) 2>/dev/null)
EXIT
#if [[ -f /var/lib/dbus/machine-id ]]; then
#   Center "Removing diversion."
#   rm /sbin/initctl
#   dpkg-divert --rename --remove /sbin/initctl
#   rm /var/lib/dbus/machine-id
#fi
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title         :code-cleanup
# description      :Bash code cleanup script
# Author      :root
# date         :10/23/2013
# version      :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================

/usr/share/ultimate_edition/tmgrub:
Code: Select all
#!/bin/bash
# ==============================================================================
# title         :TheeMahn's O/S Builder
# description      :Internal build software to build Ultimate Edition Operating Systems.
# author      :theemahn <theemahn@ultimateedition.info>
# date         :08/31/2014
# version      :1.8.9
# usage         :tmosb --help
# manual      :man tmosb
# notes         :See change-log below for further information.
# ==============================================================================
# Change-log: 1.8.8:    Initial public release
#
# ==============================================================================
# Version Control

APPNAME="TheeMahn O/S Builder"
PROGNAME="internal"
BUILDDATE="08/31/2014"
VERSION="1.8.9"
EXEC=$PWD
WEBSITE="os-builder.com"
AUTHOR="TheeMahn"
EMAIL="<"$AUTHOR"@"$WEBSITE">"

# Retrieve number of lines & columns the screen supports.
LINEZ=$(tput lines)
COLUMNZ=$(tput cols)
SPLIT=0

# check to see if notify is installed & if sound is supported.
NOTIFY=$(which notify-send)
SOUND=$(which canberra-gtk-play)

# Declare integer to span eye-candy routine
declare -i RR
RR=0
declare -i TT
TT=0
declare -i CALC
CALC=0


# set colors so Error "s etc. stand out.

txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

# Get Directory executed in.
CURRENT=$PWD
BUMPVERSION=$1
OS='ultimate-edition'
if [ `getconf LONG_BIT` = "64" ]; then
   ARCH='amd64'
else
   ARCH='i386'
fi
ROOTFOLDER='http://os-builder.com/UETOYS'
declare -a DESKTOPS=('mate' 'kde' 'xfce' 'gnome' 'unity');

#DEB LIST GENERATOR for TheeMahn's personal use: for i in `ls *.deb`; do echo -e -n " '"; dpkg-deb --info $i | grep 'Package:' |cut -d: -f2 | sed 's/ //g' | tr '\n' "'"; done

declare -a FILELIST=('ultimate-edition-os-builder-1.8.9_all.deb' '100-emerald-themes-0.0.1_all.deb' 'any-color-you-like-icon-theme-0.9.4_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'boje-themes-1.2.1-all.deb' 'conky-builder-1.23_all.deb' 'conky-fonts-0.0.2_all.deb' 'copy_agent-1.46.0380_'$ARCH'.deb' 'faenza-cupertino-0.0.1_all.deb' 'faenza-darker-0.0.1_all.deb' 'gimp-brushes-1.1.0_all.deb' 'gimp-scripts-2.8.0_all.deb' 'grey-deck-theme-pack_0.0.1.deb' 'nouvegnomegray-0.0.1_all.deb' 'revolt-0.0.2_all.deb' 'tm-rename-1.0-4_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-female-themes-1.0-all.deb' 'ultimate-edition-icons-baby-blue-0.0.1_all.deb' 'ultimate-edition-icons-dark-glass.0.0.1_all.deb' 'ultimate-edition-icons-dark-one-0.0.1_all.deb' 'ultimate-edition-icons-gold-0.0.1_all.deb' 'ultimate-edition-icons-light-0.0.1_all.deb' 'ultimate-edition-icons-red-0.0.1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-mp4tomp3-1.0.0_all.deb' 'ultimate-edition-multi-monitor_1.7.5_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-sound-scheme-0.0.5_all.deb' 'ultimate-edition-thumbos_1.0.9_all.deb' 'ultimate-edition-user-contributed-wallpapers-1.0_all.deb' 'zoncolor-0.0.1_all.deb' 'zoncolorbrown-0.0.1_all.deb' 'zoncolorgreen-0.0.1_all.deb' 'zoncolorgrey-0.0.1_all.deb' 'zoncolormaroon-0.0.1_all.deb' 'zoncolororange-0.0.1_all.deb' 'zoncolorpink-0.0.1_all.deb' 'zoncolorpurple-0.0.1_all.deb' 'zoncolorred-0.0.1_all.deb' 'zoncolorsilver-0.0.1_all.deb' 'zoncolorsky-0.0.1_all.deb' 'zoncolorslate-0.0.1_all.deb' 'zoncolorturquoise-0.0.1_all.deb' 'zoncolorwhite-0.0.1_all.deb' 'zoncolorxtra-faenzadarkest-0.0.1_all.deb' 'zoncolorxtra-silverfaenzadarkest-0.0.1_all.deb' 'zoncolorxtra-skyfaenzalight-0.0.1_all.deb' 'zoncolorxtra-slatefaenzalight-0.0.1_all.deb');
#CUSTOM MATE? - add to the below to the above list.

#'mate-core_1.6.0.3+quantal_all.deb' 'mate-desktop-environment_1.6.0.3+quantal_all.deb'
#'ultimate-player_1.0.1~precise_amd64.deb' 'ultimate-player_1.0.1~precise_i386.deb'

#declare -a FILELIST=('100-emerald-themes-0.0.1_all.deb' 'apt-fast_0.0.1_all.deb' 'bin2iso_1.9-2_'$ARCH'.deb' 'conky-builder-1.22_all.deb' 'conky-fonts-0.0.2_all.deb' 'radiotray_0.7.3_all.deb' 'tm-rename-1.0-4_all.deb' 'ultamatix-2.0.1_all.deb' 'ultimate-cover-grabber_1.1.1-1_all.deb' 'ultimate-edition-code-cleanup_1.7.2-1_all.deb' 'ultimate-edition-installation-guide-0.0.4.deb' 'ultimate-edition-keysnatcher-1.0.0_all.deb' 'ultimate-edition-mergepdf_1.7.1-6_all.deb' 'ultimate-edition-multi-monitor_1.7.1-6_all.deb' 'ultimate-edition-nas-tools_1.7.2-2_all.deb' 'ultimate-edition-nautilus-scripts-1.6.3_all.deb' 'ultimate-edition-repairtheme-1.7.3-1_all.deb' 'ultimate-edition-thumbos_1.0.3_all.deb' 'yarssr_0.2.2-4_all.deb' 'ultimate-edition-cursors-0.0.5_all.deb' 'ultimate-edition-icons-dark-glass.0.0.2_all.deb');

declare -a INSTALLNAMES=('ultimate-edition-os-builder' '100-emerald-themes' 'any-color-you-like-icon-theme' 'apt-fast' 'bin2iso' 'boje-themes' 'conky-builder' 'conky-fonts' 'copy-agent' 'faenza-cupertino-icon-theme' 'faenza-darker-icon-theme' 'gimp-brushes' 'gimp-scripts' 'grey-deck-theme-pack' 'nouvegnomegray-icon-theme' 'revolt' 'tm-rename' 'ultimate-cover-grabber' 'ultimate-edition-code-cleanup' 'ultimate-edition-cursors' 'ultimate-edition-female-themes-1.0' 'ultimate-edition-icons-baby-blue' 'ultimate-edition-icons-dark-glass' 'ultimate-edition-icons-dark-one' 'ultimate-edition-icons-gold' 'ultimate-edition-icons-light' 'ultimate-edition-icons-red' 'ultimate-edition-installation-guide' 'ultimate-edition-mergepdf' 'ultimate-edition-mp4tomp3' 'ultimate-edition-multi-monitor' 'ultimate-edition-nas-tools' 'ultimate-edition-repairtheme' 'ultimate-edition-sound-scheme' 'ultimate-edition-thumbos' 'ultimate-edition-user-contributed-wallpapers' 'zoncolor-icon-theme' 'zoncolorbrown-icon-theme' 'zoncolorgreen-icon-theme' 'zoncolorgrey-icon-theme' 'zoncolormaroon-icon-theme' 'zoncolororange-icon-theme' 'zoncolorpink-icon-theme' 'zoncolorpurple-icon-theme' 'zoncolorred-icon-theme' 'zoncolorsilver-icon-theme' 'zoncolorsky-icon-theme' 'zoncolorslate-icon-theme' 'zoncolorturquoise-icon-theme' 'zoncolorwhite-icon-theme' 'zoncolorxtra-faenzadarkest-icon-theme' 'zoncolorxtra-silverfaenzadarkest-icon-theme' 'zoncolorxtra-skyfaenzalight-icon-theme' 'zoncolorxtra-slatefaenzalight-icon-theme');
declare -a OSARRAY=('precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty' 'precise' 'precise' 'quantal' 'quantal' 'raring' 'raring' 'saucy' 'saucy' 'trusty' 'trusty');
declare -a UEARRAY=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5' '12.04' '12.10' '13.04' '13.10' '14.04' '14.10');
declare -a DISTARRAY=('Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr' 'Precise Pangolin' 'Precise Pangolin' 'Quantal Quetzal' 'Quantal Quetzal' 'Raring Ringtail' 'Raring Ringtail' 'Saucy Salamander' 'Saucy Salamander' 'Trusty Tahr' 'Trusty Tahr');
declare -a UETHEMES=('3.4' '3.5' '3.6' '3.7' '3.8' '3.9' '4.0' '4.1' '4.2' '4.3' '4.4' '4.5');

# Pull info we will use to compare against later
IUSER=${SUDO_USER:-$USER}
IHOME="/home/$IUSER"
function Notification () {
   # Is X11 running?
   X=$( pidof X )
   # Does the user have the optional Ultimate Edition Sound scheme installed?
   if [[ -f "/usr/share/sounds/Ultimate Edition Sound Scheme/stereo/itisdone.wav" ]]; then
      WAVE=1
   fi
   # Is the user in an X11 GUI environment and have notification OSD installed?
   if [[ $X && $NOTIFY ]]; then
      a=$(notify-send "$PROGNAME" "$1" -i /usr/share/ultimate_edition/logo.png -t 5000)
   fi
   # Does the user have pre-requisites? If so, break out the Cylon voice.
   if [[ $SOUND && $WAVE ]]; then
      a=$(canberra-gtk-play -i itisdone 2>/dev/null)
   fi
   # Display message in terminal unconditionally
   echo $1
}

# Usage: Eye Candy "Message"
function EyeCandy() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Eye Candy ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   # ▒ Repostorm 1.7.7 is entering extraction mode. ▒
   # ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
      echo -e "▒ "$STP" ▒"
      RR=0; while [ $RR -le $STRLEN ]; do echo -n "▒"; RR=RR+1; done; echo;
   fi
}

function Error () {
   echo -en "${bldred}"
   FullBar
   Center "$1"
   FullBar
   echo -en "${txtrst}"
}

function Encapsulate() {
   # Verify a message has been sent to this function otherwise do squat.
   # Example: Encapsulate ('Repostorm $REPOVERSION is entering extraction mode.')
   # ▒ Repostorm 1.7.7 is entering extraction mode.                       ▒

   STP="$1"
   if [[ $STP ]]; then
      STRLEN=${#STP}
      STRLEN=$(expr $STRLEN + 3)
      DISTANCE=$(expr $COLUMNZ - $STRLEN)
      GREPPED=$(echo $STP | grep -E '\e')
      if [[ $GREPPED ]]; then
         STRLEN=$(expr $STRLEN - 13)
      fi
      echo -en "▒ "$STP
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n " "; RR=RR+1; done; echo "▒";
   fi
}

# Draws a bar across the screen based on screen size detected (columnz)
function FullBar() {
   RR=1; while [ $RR -le $COLUMNZ ]; do echo -n "▒"; RR=RR+1; done; echo;
}

# Center data passed to function on screen
function Center () {
   STP=$1
   if [[ $STP ]]; then
      STRLEN=${#STP}
      CENTER=$(expr $STRLEN / 2 )
      #CENTER=CENTER-1
      TCENTER=$(expr $COLUMNZ / 2 )
      #TCENTER=TCENTER-1
      DISTANCE=$(expr $TCENTER - $CENTER)
      DISTANCE=$(expr $DISTANCE - 2)
      echo -en "${txtrst}"
      RR=0; while [ $RR -lt $DISTANCE ]; do echo -n "▒"; RR=RR+1; done;
      echo -en "${bldgrn} $STP ${txtrst}"
      TT=0; while [ $TT -lt $DISTANCE ]; do echo -n "▒"; TT=TT+1; done;
      CALC=$(expr $RR + $TT + $STRLEN + 2)
      if [[ $CALC -lt $COLUMNZ ]]; then
         while [ $CALC -lt $COLUMNZ ]; do echo -n "▒"; CALC=CALC+1; done; echo;
      fi
      
      # Dubugging:

   fi      # echo "STRING LEN: $STRLEN CENTER: $CENTER TOTAL CNTER: $TCENTER RR=$RR TT=$TT COLUMNZ: $COLUMNZ CALC: $CALC DISTANCE: $DISTANCE"
}

function EXIT () {
   if [[ -f /usr/lib/ubiquity/apt-setup/generators/40cdrom ]];then
      Encapsulate "Removing apt-cdrom."
      FullBar
      rm /usr/lib/ubiquity/apt-setup/generators/40cdrom
   fi
#rm /etc/resolv.conf
#rm /var/lib/apt/extended_states
#rm /var/crash/*
#BAIL OUT
   Encapsulate "Unmounting..."
   QUIET=$(umount -f /proc/sys/fs/binfmt_misc > /dev/null 2>&1)
#Lazily umount -l device
#umount /proc
#umount /sys
#umount /dev/pts
   for D in `mount | sed 's/.*on \(\/.\+\) type.*/\1/'`; do echo -e -n "\e[0;32mUNMOUNTING $D..."; umount -l $D; echo -e " [DONE]\e[0m"; > /dev/null 2>&1 || echo -e "\e[1;31mError: Can not umount $D lsof please\e[0m"; done;
   Encapsulate "Cleaning up tmp files and history..."
   SUPPRESS=$(rm -rf ~/.bash_history /var/cache/apt/*.bin /home/root/.bash_history /root/.bash_history /etc/apt/*.save /etc/apt/sources.list.d/*.save /var/crash/* /*.old 2>/dev/null)
#rm -R /var/cache/apt /var/lib/apt/lists /var/cache/apt/*.bin
   if [[ -f /etc/lsb-release ]]; then
      FullBar
      Center "Final internal deployment information:..."
      FullBar
      lsb_release -a
      cat /etc/os-release
      cat /etc/issue
      cat /etc/issue.net
   fi
   Center "Exiting Chroot environment."
   FullBar
exit
}

function VersionDump {
   Center "$APPNAME ($PROGNAME) $VERSION, $BUILDDATE"
   Encapsulate "GNU $PROGNAME home page: <http://$WEBSITE/>."
   Encapsulate "E-mail bug reports to: $EMAIL."
   Encapsulate "Be sure to include the word $PROGNAME somewhere in the Subject: field."
   FullBar
}


# Dump program header
VersionDump
#DETECT CHROOTED ARCH
if [ `getconf LONG_BIT` = "64" ]; then
   Center "64 Bit chrooted architecture detected."
   ARCH='amd64'
else
   Center "32 Bit chrooted architecture detected."
   ARCH='i386'
fi
function Download() {
   local url=$1
   echo -n "    "
   wget --progress=dot $url 2>&1 | grep --line-buffered "%" | \
   sed -u -e "s,\.,,g" | awk '{printf("\b\b\b\b%4s", $2)}'
   echo -ne "\b\b\b\b"
   echo " Done."
}

# Check inode of rootfs if anything other then 2 we are in a chroot environment
# use above IUSER results to further our cause.& guarantee our success ;)
# Inform user of current findings:
root_inode=$(stat -c %i /);
if [ $root_inode -ne 2 ]; then
   Encapsulate "Chroot environment detected. Setting up appropriately."
else
   Error "Non-chroot environment detected. I refuse to execute. Exiting..."
   exit 0;
fi

#This was a rough one to chew ;)
#Detecting 32 bit or 64 bit in a chroot when the end user
#Could be running a 64 bit host building a 32 bit client.

cd /tmp/
Encapsulate "Mounting necessary points."
#mount -t devpts none /dev/pts
#mount -t proc none /proc
#mount -t sysfs none /sys
export HOME=/root
export LC_ALL=C
cd /tmp/

#Turn off prompting for packages.
export DEBIAN_FRONTEND=noninteractive

INSTALLED=$((dpkg-query -l 'wget' | grep 'ii')2>/dev/null)
LISTS=$((ls /var/cache/apt/*.bin) 2>/dev/null)
Encapsulate "Pulling preliminary sources list, please wait..."
FullBar
echo -e "${txtrst}"
SUPPRESS=$(apt-get update)

if ! [[ $INSTALLED ]]; then
   Center "Rectifing dependency issues."
   FullBar
   apt-get install -f -y
   Center "Pulling preliminary apps & prerequisites."
   FullBar
   apt-get install -y --force-yes --no-install-recommends software-properties-common nano wget python-software-properties bc
fi

DISTREL=$((cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p') 2>/dev/null)
VER=$(echo $DISTREL | cut -d "." -f2)
EVENODD=$(( $VER % 2 ))

INSTALLED=$((dpkg-query -l 'ultimate-edition-repositories' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Retriving Ultimate Edition Repositories..."
   FullBar
   if ! [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
      wget $ROOTFOLDER/ultimate-edition-repositories-0.1.3_all.deb
   fi
   if [[ -f ultimate-edition-repositories-0.1.3_all.deb ]]; then
      dpkg -i ultimate-edition-repositories-0.1.3_all.deb
      if [[ -f cache ]]; then
         rm ultimate-edition-repositories-0.1.3_all.deb
      fi
   fi
else
   Center "Ultimate Edition Repositories already installed."
fi

INSTALLED=$((dpkg-query -l 'ultimate-edition-keysnatcher' | grep 'ii') 2>/dev/null)
KEYSNATCHER='ultimate-edition-keysnatcher-1.0.4_all.deb'
if ! [[ $INSTALLED ]]; then
   # Future builds will be SPECIFIC via $DISTREL value
   # wget http://ultimateedition.info/Ultimate_Edition_$DISTREL/ultimate-edition-keysnatcher-1.0.0_all.deb
   if ! [[ -f $KEYSNATCHER ]]; then
      echo -n "Downloading $KEYSNATCHER:"
      Download $ROOTFOLDER/$KEYSNATCHER
   fi
   if [[ -s $KEYSNATCHER ]]; then
      dpkg -i $KEYSNATCHER
      if [[ -f cache ]]; then
         rm $KEYSNATCHER
      fi
   else
      Error "File not found: $KEYSNATCHER"
   fi
else
   Center "Ultimate Edition Keysnatcher previously installed."
fi

INSTALLED=$((dpkg-query -l 'dbus' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing dbus..."
   apt-get install --yes dbus
else
   Center "Dbus previously installed."
fi
EXISTS=$(which keysnatcher)

if [[ -f /etc/lsb-release ]]; then
   Center "Distro release info:"
   FullBar
   lsb_release -a
   FullBar
        LITE=$(cat /etc/lsb-release | grep -i "lite")
        GAMERS=$(cat /etc/lsb-release  | grep -i "gamers")
        ULTIMATEEDITION=$(cat /etc/lsb-release  | grep -i "ultimate")
        #Center "DEBUGGING: ULTIMATEEDITION: $ULTIMATEEDITION GAMERS:$GAMERS LITE:$LITE"
else
   Error "ERROR: Massive failure, no dist-release info, exiting."
   EXIT
fi

if ! [[ -f ~/.keysnatcher ]]; then
   if [[ $EXISTS ]]; then
      keysnatcher --timeout
      keysnatcher --snatch
      keysnatcher --fixerrors
   else
      apt-get update
   fi
fi
#Center "Inserting diversion..."
#dbus-uuidgen > /var/lib/dbus/machine-id
#dpkg-divert --local --rename --add /sbin/initctl
#ln -s /bin/true /sbin/initctl
Center "Distribution Upgrading..."
FullBar
#PUSH ALL UPGRADES
apt-get -f -y dist-upgrade


#BARE-ESSENTIALS - Have to have a kernel and casperfs to read from:

#TODO: DIST SPECIFIC DATA ENTER HERE CASE THE JOINT
if [[ -f DE ]]; then
   for ZZ in `cat DE`
   do

      case "$ZZ" in
         MATE) INSTALLED=$((dpkg-query -l "mate-desktop-environment" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING MINIMAL DE FOR LITE O/S"; FullBar; apt-get install -y -f --no-install-recommends mate-core mate-desktop-environment; Center "Installing Lightdm display manager & Xorg."; FullBar; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; FullBar; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications."; FullBar; apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         KDE) INSTALLED=$((dpkg-query -l 'kubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING KDE."; apt-get install -y -f kubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         XFCE) INSTALLED=$((dpkg-query -l 'xubuntu-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING XFCE."; apt-get install -y -f xubuntu-desktop;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
                        GNOME) INSTALLED=$((dpkg-query -l 'ubuntu-gnome-desktop' | grep 'ii')2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Gnome Desktop."; apt-get install -y -f ubuntu-gnome-desktop gnome-session-fallback;apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         LXDE) INSTALLED=$((dpkg-query -l 'lubuntu-desktop' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING LXDE."; apt-get install -y -f lubuntu-desktop; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         AWESOME) INSTALLED=$((dpkg-query -l 'awesome' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING Awesome DE."; apt-get install -y -f awesome; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         RAZORQT) INSTALLED=$((dpkg-query -l 'razorqt' | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING RazorQT."; apt-get install -y -f razorqt; Center "Installing Lightdm display manager & Xorg."; apt-get install -y -f --no-install-recommends lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter; Center "Installing Ubiquity installer."; apt-get install -y -f --no-install-recommends ubiquity-frontend-gtk; Center "Installing Standard / base applications.";apt-get install -f -y xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator build-essential cups; fi;;
         *) INSTALLED=$((dpkg-query -l "cups" | grep 'ii') 2>/dev/null); if ! [[ $INSTALLED ]]; then Center "INSTALLING FULL MONTE DE FOR NON LITE O/S"; apt-get install -f -y mate-core mate-desktop-environment lightdm lightdm-gtk-greeter xserver-xorg xorg xserver-xorg-core unity-greeter ubiquity-frontend-gtk xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator command-not-found bash-completion fonts-liberation discover laptop-detect os-prober xdg-user-dirs xdg-user-dirs-gtk xdg-utils terminator network-manager build-essential cups; fi;;
      esac
   done
fi

#UBIQUITY INSTALLED?  ADD MATE TO THE LIST...
if [[ -f /usr/share/applications/ubiquity-gtkui.desktop ]]; then
   Center "Ubiquity installation Detected adding Mate to list."
   sed -i 's/OnlyShowIn=GNOME;XFCE;Unity;/OnlyShowIn=MATE;GNOME;XFCE;Unity;/g' /usr/share/applications/ubiquity-gtkui.desktop
fi
Center "Ignore the above and below Error(s), we will fix them at stage 3 later."
Center "Entering Distro customization section..."

for i in ${INSTALLNAMES[@]}
do
   
   INSTALLED=$(dpkg-query -l "$i" 2>/dev/null | grep 'ii' 2>/dev/null)
   if ! [[ $INSTALLED ]]; then
      Center "Checking installation of $i: Not Installed."
      FTG=${FILELIST[$array_counter]}
      if ! [[ -f $FTG ]]; then
         echo -e "${bldgrn}Checking cache for $FTG: ${bldylw}Does not exist."
         echo -en "${bldgrn}Downloading $i: "
         Download $ROOTFOLDER/$FTG
         if [[ -s $FTG ]]; then
            INSTALL=$(dpkg -i $FTG 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Installing $i: Installed.${txtrst}"
            else
               Error "Installing $i: Failed."
            fi
         else
            Error "Failed to download $i."
         fi
      else
         echo -e "${bldgrn}Checking cache for $FTG: Exists.${txtrst}"
         echo -en "${bldgrn}Installing $i: "
         INSTALL=$(dpkg -i $FTG 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed to install $i."
         fi
      fi

      if [[ -f cache ]]; then
         rm $FTG
      fi
   else
      Center "$i has already been Installed."
   fi
   array_counter=$(($array_counter + 1))
done

Center "Installing Ultimate Edition Themes..."
echo -e "\n"
for i in ${UETHEMES[@]}
do
   PRE="ultimate-edition"
   POST=""
   ZZ="ultimate-edition-theme-$i"
   # ultimate-edition-theme-4.4-all.deb
   DEBFILE="ultimate-edition-theme-$i-all.deb"
   echo -en "${bldgrn}Checking installation of $ZZ: "
   INSTALLED=$(dpkg-query -l "$ZZ" 2>/dev/null | grep 'ii' 2>/dev/null)
   if ! [[ $INSTALLED ]]; then
      echo -e "${bldylw}Not installed."
      echo -en "${bldgrn}Checking cache: "
      FTG=$DEBFILE
      if ! [[ -f $FTG ]]; then
         echo -e "${bldylw}Does not exist."
         echo -en "${bldgrn}Downloading $ZZ: "
         Download $ROOTFOLDER/$FTG
         if [[ -s $FTG ]]; then
            echo -en "${bldgrn}Installing $ZZ: "
            INSTALL=$(dpkg -i $FTG 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Done.${txtrst}"
            else
               echo -e "${bldred}Failed.${txtrst}"
            fi
         else
            Error "Failed to download $ZZ"
            Error "Please report issue to TheeMahn <theemahn@os-builder.com>."
         fi
      else
         
         INSTALL=$(dpkg -i $FTG 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installing $i from cache: Done${txtrst}"
         else
            Error "Installing $i from cache: Failed."
         fi
      fi

      if [[ -f cache ]]; then
         rm $FTG
      fi
   else
      echo -e "\n"
      Center "Ultimate edition $i theme has been installed."
   fi
   array_counter=$(($array_counter + 1))
done

Center "Fixing any dependency issues..."
apt-get install -f -y
#Fix for hosed modemmanager.
if ! [[ -f /etc/init.d/modemmanager ]];then
   INSTALLED=$((dpkg-query -l "modemmanager" | grep 'ii') 2>/dev/null)
   if [[ $INSTALLED ]]; then
      Error "Repairing modem manager issue."
      touch /etc/init.d/modemmanager
      apt-get remove --purge -y -f modemmanager
      if [[ -f /etc/init.d/modemmanager ]]; then
         rm /etc/init.d/modemmanager
      fi
   fi
fi
# ultimate-edition-4.4-plymouth_all.deb
INSTALLED=$(dpkg-query -l "ultimate-edition-$DISTREL-plymouth" | grep 'ii')
if ! [[ $INSTALLED ]]; then
   if ! [[ -f ultimate-edition-plymouth-"$DISTREL"-plymouth_all.deb ]]; then
      echo -e -n "${bldgrn}Retrieving plymouth splash for Ultimate Edition $DISTREL: "
      Download "$ROOTFOLDER/ultimate-edition-plymouth-"$DISTREL"_all.deb"
      if [[ -f ultimate-edition-plymouth-"$DISTREL"_all.deb ]]; then
         echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb: "
         INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed."
         fi
      else
         echo -e -n "${bldgrn}Installing ultimate-edition-plymouth-"$DISTREL"_all.deb from cache: "
         INSTALL=$((dpkg -i "ultimate-edition-plymouth-"$DISTREL"_all.deb") 2>/dev/null)
         if [[ $INSTALL ]]; then
            echo -e "${bldgrn}Installed.${txtrst}"
         else
            Error "Failed."
         fi
      fi
      if [[ -f "ultimate-edition-plymouth-"$DISTREL"_all.deb" ]]; then
         if [[ -f cache ]]; then
            rm "ultimate-edition-plymouth-"$DISTREL"_all.deb"
         fi
      fi
   else
      Center "Ultimate Edition $DISTREL Plymouth already installed."
   fi
fi
apt-get install -f -y
#DE SPECIFIC STUFF
Center "Installed sessions:"
ls /usr/share/xsessions/
if [[ -f /usr/share/xsessions/mate.desktop ]]; then
   Center "Mate Installation detected... Setting Mate as default Desktop Environment."
   if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
      /usr/lib/lightdm/lightdm-set-defaults -s mate
   fi
fi

if [[ -f /usr/share/xsessions/kde-plasma.desktop ]]; then
   Center "KDE Installation detected... Setting KDE as default Desktop Environment."
   if [[ -f /usr/lib/lightdm/lightdm-set-defaults ]]; then
      /usr/lib/lightdm/lightdm-set-defaults -s kde-plasma
   fi
   if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png && /usr/share/wallpapers/kde-default.png ]]; then
      Center "Setting Ultimate Edition $DISTREL Wallpaper as default for KDE."
      SUPRESS=$(rm /usr/share/wallpapers/kde-default.png)
      SUPRESS=$(ln -s /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/kde-default.png)
      mkdir -p /usr/share/wallpapers/Elarun/contents/images/
      cp /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png /usr/share/wallpapers/Elarun/contents/images/2560x1600.png
   else
      if [[ -f /usr/share/wallpapers/Ultimate_Edition_$DISTREL.png ]]; then
         Error "Error: Ultimate Edition $DISTREL wallpaper not installed."
      fi
      if [[ -f /usr/share/wallpapers/kde-default.png ]]; then
         Error "Error: NO KDE default wallpaper."
      fi
   fi
         
   INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-kubuntu' | grep 'ii') 2>/dev/null)
   if ! [[ $INSTALLED ]] ; then
      apt-get remove -f -y --purge ubiquity-frontend-gtk
      apt-get install -y -f ubiquity-frontend-kde
      if ! [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         echo -e -n "${bldgrn}Downloading ubiquity-slideshow-kubuntu_90_all.deb: "
         Download "$ROOTFOLDER/ubiquity-slideshow-kubuntu_90_all.deb"
      fi
      if [[ -f ubiquity-slideshow-kubuntu_90_all.deb ]]; then
         echo -e -n "${bldgrn}Installing ubiquity-slideshow-kubuntu_90_all.deb: "
         INSTALL=$(dpkg -i ubiquity-slideshow-kubuntu_90_all.deb 2>/dev/null)
         if [[ $INSTALL ]]; then
            Center "Installed."
         else
            Error "Failed."
         fi
         if [[ -f cache ]]; then
            rm ubiquity-slideshow-kubuntu_90_all.deb
         fi
      else
         Error "Error: File not found: ubiquity-slideshow-kubuntu_90_all.deb"
      fi
   fi
else
   INSTALLED=$((dpkg-query -l 'ubiquity-slideshow-ubuntu' | grep 'ii') 2>/dev/null)
   if ! [[ $INSTALLED ]] ; then
      apt-get remove -f -y --purge ubiquity-frontend-kde
      apt-get install -y -f ubiquity-frontend-gtk
      if [[ -f ubiquity-slideshow-ubuntu_90_all.deb ]]; then
         echo "Installing Ubiquity Slideshow for Mate / Gnome etc."
         INSTALL=$(dpkg -i ubiquity-slideshow-ubuntu_90_all.deb 2>/dev/null)
      fi
   fi
fi

##CUSTOMIZE GRUB MENU
if [[ -f /etc/default/grub ]]; then
   PRECUSTOM=$((cat /etc/default/grub | grep 'Ultimate') 2>/dev/null)
   if ! [[ $PRECUSTOM ]]; then
      GFONT=$(which grub-mkfont)
      if [[ $GFONT ]]; then
         Center "Customizing the Grub Menu, please wait."
         #Build font
         Center "Building grub font..."
         grub-mkfont --size=16 --output=/boot/grub/liberation.pf2 /usr/share/fonts/truetype/liberation/LiberationMono-Bold.ttf
         echo 'GRUB_BACKGROUND="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
         echo 'export GRUB_MENU_PICTURE="/usr/share/wallpapers/Ultimate_Edition_'$DISTREL'.png"' >> /etc/default/grub
         echo 'export GRUB_COLOR_NORMAL="black/black"' >> /etc/default/grub
         echo 'export GRUB_COLOR_HIGHLIGHT="red/black"' >> /etc/default/grub
         echo 'GRUB_FONT="/boot/grub/liberation.pf2"' >> /etc/default/grub
      else
         Error "Error: grub-mkfont not availible, grub will not be customized."
      fi
   else
      Center "Grub menu is already customised."
   fi
else
   Error "Error: Grub is currently not installed."
fi

CVERSION=$DISTREL
LONGVERSION=$(echo "$CVERSION" | grep -o "\." | wc -l)
if [[ $LONGVERSION -gt 1 ]]; then
   #echo "DETECTED A LTS THAT IS GREATER THEN 2 DIGITS"
   CVERSION="${CVERSION%.*}"
   LONGVERSION=$1
else
   LONGVERSION=$CVERSION
fi
EVENODD="${DISTREL##*.}"
#echo "DEBUGGING: $EVENODD"
if [ $((EVENODD%2)) -eq 0 ]; then
   DTYPE='STANDARD'
   DE="MATE"
else
   DTYPE='FULL'
   DE="KDE"
fi
#APPZ
INSTALLED=$((dpkg-query -l 'vlc' | grep 'ii') 2>/dev/null)
if [[ $ULTIMATEEDITION ]]; then
   if [[ $LITE || $GAMERS ]]; then
      if ! [[ $INSTALLED ]]; then
         Center "Installing $DISTREL Lite / Gamers applications."
         apt-get install -y -f udisks gnome-disk-utility gnome-themes-standard broadcom-sta-common ubuntu-restricted-extras p7zip-full alien alsa-oss arj b43-fwcutter bchunk binutils bootchart build-essential bum bzip2 bzr cheese cvs devede dkms faac faad fakeroot ffmpeg2theora flac fslint ftp genisoimage gftp gimp glade gnome-codec-install wavpack preload pidgin-plugin-pack gstreamer-tools debootstrap unrar mppenc gstreamer0.10-plugins-ugly vorbis-tools ksnapshot pidgin-extprefs pidgin-themes gnome-icon-theme-suede icedtea-7-plugin xvid4conf gtkpod id3v2 hardinfo patchutils gnome-icon-theme-gperfection2 nrg2iso qemu python-chm gstreamer0.10-plugins-bad-multiverse soundkonverter qt4-designer dh-buildinfo mp3gain vorbisgain squashfs-tools isomaster qemu-launcher gnome-themes-extras k3b phatch tidy gnupod-tools kvirc pidgin-guifications kdeartwork-emoticons oss-compat qt4-qmake devscripts gtk-recordmydesktop rar phatch-cli cabextract gstreamer0.10-fluendo-mp3 qtcreator wireshark murrine-themes pidgin ubuntu-dev-tools wifi-radar mpg321 gnome-icon-theme-nuovo ntfs-config sysinfo winbind xnest unace htop lintian linux-firmware-nonfree youtube-dl qemuctl qemubuilder ndiswrapper-utils-1.9 broadcom-sta-common k3b-extrathemes libk3b6-extracodecs imagination terminator vlc gdebi samba calibre clementine fonts-unfonts-extra fonts-unfonts-core mediainfo system-config-samba synaptic xscreensaver-gl-extra xscreensaver-data-extra dconf-tools git subversion cmake qdbus gtk3-engine* transmission-gtk firefox hddtemp xbmc libreoffice ubuntu-restricted* firefox libreoffice xbmc
         
         WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
         if ! [[ $WINE ]]; then
            Center "Installing Wine."
            FullBar
            apt-get install -f -y wine
         fi
         WINE=$((dpkg-query -l 'wine' | grep 'ii') 2>/dev/null)
         if [[ $WINE ]]; then
            Download "$ROOTFOLDER/PlayOnLinux_4.2.4.deb"
         else
            Error "Installation of wine failed, not installing play on linux."
         fi
         if [[ -f PlayOnLinux_4.2.4.deb ]]; then
            echo -e -n "${bldgrn}Installing PlayOnLinux_4.2.4.deb: "
            INSTALL=$(dpkg -i PlayOnLinux_4.2.4.deb 2>/dev/null)
            if [[ $INSTALL ]]; then
               echo -e "${bldgrn}Installed.${txtrst}"
            fi
            if [[ -f cache && -f PlayOnLinux_4.2.4.deb ]]; then
               rm PlayOnLinux_4.2.4.deb
            fi
         else
            Error "Error: File not found: PlayOnLinux_4.2.4.deb"
         fi
         apt-get install -f -y ubuntu-tweak tovid
         # apt-get install -f -y conky-all
         Error "Purging Nautilus..."
         apt-get remove --purge -y nautilus
         else
            Center "Ultimate Edition $DISTREL Lite applications already installed."
         fi
      fi
   if ! [[ $LITE || $GAMERS ]]; then
         Center "Odd release detected."
         Center "Installing a pantheon of applications..."
         FullBar
         apt-get install -y -f abiword abiword-plugin-grammar abiword-plugin-mathview aisleriot alien alsa-oss arj aspell b43-fwcutter backintime-gnome bc bchunk big-cursor binutils blender bootchart brasero broadcom-sta-common build-essential bum bzip2 bzr cabextract cairo-clock calibre calligra ccd2iso cdparanoia cdrdao cervisia chameleon-cursor-theme checkgmail cheese clamav clamav-freshclam clamtk cmake conky-all crystalcursors cvs dconf-tools dctrl-tools debootstrap devede devscripts dh-buildinfo dkms dragonplayer dvdrip dvdrip-utils dvd-slideshow dvdstyler dvgrab elinks entagged exaile faac faad fakeroot fancontrol ffmpeg2theora file-roller flac fonts-unfonts-core fonts-unfonts-extra fslint f-spot ftp gddrescue gdebi gdesklets gedit genisoimage gftp gimp git glade gnome-codec-install gnome-disk-utility gnome-icon-theme-gperfection2 gnome-icon-theme-nuovo gnome-icon-theme-suede gnome-icon-theme-yasis gnome-themes-extras gnome-themes-standard gnumeric gnupod-tools gphpedit gpp gstreamer0.10-fluendo-mp3 gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer-tools gtkpod gtk-recordmydesktop hardinfo hddtemp htop hydrogen icedtea-7-plugin id3v2 imagination industrialtango-theme inkscape isomaster istanbul k3b k3b-extrathemes k3d kdeartwork-emoticons kdemultimedia-kio-plugins kdenlive kino kolourpaint4 kompare kopete kopete-message-indicator krita krosspython ksnapshot ktorrent kvirc libk3b6-extracodecs lintian linux-firmware-nonfree lives lynx mdf2iso mediainfo medit metacity-themes mkvtoolnix mp3gain mpg321 mppenc murrine-themes ndisgtk ndiswrapper-utils-1.9 nrg2iso ntfs-config oss-compat outdoors-theme oxygen-cursor-theme-extra p7zip p7zip-full perl-tk phatch phatch-cli pidgin pidgin-extprefs pidgin-guifications pidgin-plugin-pack pidgin-sipe pidgin-themes preload python-chm python-lxml python-numpy python-pyexiv2 python-renderpm python-reportbug python-reportlab python-reportlab-accel python-uniconvertor python-wxversion qemu qemubuilder qemuctl qemu-launcher qt4-designer qt4-dev-tools qt4-qmake qtcreator rar recordmydesktop ripoff samba sbackup screenlets shutter sound-juicer soundkonverter squashfs-tools subversion synaptic sysinfo system-config-samba t1-xfree86-nonfree terminator tidy transmission-gtk ttf-xfree86-nonfree ttf-xfree86-nonfree-syriac tvtime ubuntu-dev-tools udisks unace unrar vamps videotrans vlc vorbisgain vorbis-tools wavpack wdiff wifi-radar winbind wireshark xcftools xnest xscreensaver-data-extra xscreensaver-gl-extra xvid4conf yakuake youtube-dl firefox libreoffice xbmc ubuntu-restricted*
         apt-get install -f -y ubuntu-tweak tovid tovidgui
         Center "Installing Wine."
         apt-get install -f -y wine
   else
      Center "Non-Odd release detected."
   fi
fi

if [[ $GAMERS ]]; then
   
   apt-get install -y -f broadcom-sta-common ubuntu-restricted-extras p7zip-full alsa-oss arj b43-fwcutter bzip2 conky-all preload gstreamer-tools unrar gstreamer0.10-plugins-ugly icedtea-7-plugin xvid4conf gstreamer0.10-plugins-bad-multiverse rar gstreamer0.10-fluendo-mp3 ntfs-config ndiswrapper-utils-1.9 broadcom-sta-common terminator vlc gdebi samba system-config-samba gtk3-engine*
        Center "Installing Games for Ultimate Edition Gamers $CVERSION"
   FullBar
   apt-get install -f -y childsplay capitalism billard-gl chromium-bsu megaglest scummvm spring dreamchess warzone2100 supertuxkart defendguin xboard djl scorched3d enigma gnome-games armagetronad gelide alien-arena freeciv-client-sdl pax-britannica

   FullBar
   Center "Installing Wine."
   apt-get install -f -y wine

   Error "Purging Nautilus..."
   apt-get remove --purge -y nautilus
fi

#Templates = for synaptic etc.
#apt-get install software-center
#INTERNAL DISTRO STAMPING
#Distribution Layout VARS:
#Necessary for Ultimate Edition Software center to function.
INSTALLED=$((dpkg-query -l 'software-center' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing software center."
   FullBar
   apt-get install -f -y --no-install-recommends software-center
fi


INSTALLED=$((dpkg-query -l 'software-properties-gtk' | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing software properties & unhiding it for $DISTREL"
   FullBar
   apt-get install -y -f software-properties-gtk
   if [[ -f /usr/share/applications/software-properties-gtk.desktop ]]; then
      sed -i s/NoDisplay=true/NoDisplay=false/ /usr/share/applications/software-properties-gtk.desktop
   fi
fi
#INTERNAL DISTRO STAMPING

#INSTALLED=$(dpkg-query -l "ultimate-edition-customizations" | grep 'ii')
#if ! [[ $INSTALLED ]]; then
#   Center "Installing customizations for $DISTREL"
#   FTG='ultimate-edition-customizations-'$DISTREL'_all.deb'
#   wget $ROOTFOLDER/$FTG
#   if [[ -f $FTG ]]; then
#      dpkg -i --force-overwrite $FTG
#      #sudo apt-get -o Dpkg::Options::="--force-overwrite" install $FTG
#      rm $FTG
#   else
#      Error "Error ": File not found $FTG."
#   fi
#else
#   echo "Ultimate Edition Customizations already installed."
#fi
DISTREL=$(cat /etc/lsb-release | sed -n 's/^DISTRIB_RELEASE=[ \t]*\(.*\)/\1/p')
PRECUSTOM=""
Center "Setting up Startup applications..."
FullBar

#Startup apps:

#Yarssr
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing Yet Another RSS Reader for $DISTREL"
   FullBar
   apt-get install -f -y yarssr

else
   Center "YARSSR is already installed."
fi
INSTALLED=$((dpkg-query -l "yarssr" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/yarssr.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for YARSSR: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/yarssr.desktop
   echo 'Name=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Name[en_GB]=Yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Exec=yarssr' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Icon=gnome-do' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Comment=Grab News feeds with low resource usage.' >> /etc/xdg/autostart/yarssr.desktop
   echo 'Categories=Internet;' >> /etc/xdg/autostart/yarssr.desktop
   if [[ -f /etc/xdg/autostart/yarssr.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for YARSSR already exists."
fi

#Radiotray
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing Radiotray for $DISTREL"
   FullBar
   apt-get install -f -y radiotray
else
   Center "Radiotray is installed."
   FullBar
fi
INSTALLED=$((dpkg-query -l "radiotray" | grep 'ii') 2>/dev/null)
if ! [[ -f /etc/xdg/autostart/radiotray.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for radiotray: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/radiotray.desktop
   echo 'Name=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Name[en_GB]=Radio Tray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Exec=radiotray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Icon=radiotray' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Comment=Streams Radio stations.' >> /etc/xdg/autostart/radiotray.desktop
   echo 'Categories=Internet;' >> /etc/xdg/autostart/radiotray.desktop
   if [[ -f /etc/xdg/autostart/radiotray.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for radiotray already exists."
   FullBar
fi
INSTALLED=$((dpkg-query -l 'conky-builder' | grep 'ii') 2>/dev/null)
CONKY='conky-builder-1.23_all.deb'
if ! [[ $INSTALLED ]]; then
   if ! [[ -f $CONKY ]]; then
      echo -n "Downloading $CONKY:"
      Download $ROOTFOLDER/$CONKY
   fi
   if [[ -s $CONKY ]]; then
      dpkg -i $CONKY
      if [[ -f cache ]]; then
         rm $CONKY
      fi
   else
      Error "Error: File not found $CONKY"
   fi
else
   Center "Conky Builder previously installed."
   FullBar
fi
INSTALLED=$((dpkg-query -l "conky-builder" | grep 'ii') 2>/dev/null)

#Conky Builder
if ! [[ -f /etc/xdg/autostart/cbuilder.desktop && $INSTALLED ]]; then
   echo -e -n "${bldgrn}Creating startup file for Conky Builder: "
   echo '[Desktop Entry]' > /etc/xdg/autostart/cbuilder.desktop
   echo 'Name=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Name[en_GB]=ConkyBuilder' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Type=Application' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Exec=/usr/share/ultimate_edition/conkybuilder.sh' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Terminal=false' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Icon=gnome-do' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Comment=Builds Conky skelaton.' >> /etc/xdg/autostart/cbuilder.desktop
   echo 'Categories=System;' >> /etc/xdg/autostart/cbuilder.desktop
   if [[ -f /etc/xdg/autostart/cbuilder.desktop ]]; then
      Center "Success."
   else
      Error "Failure."
   fi
else
   Center "Startup file for conky-builder already exists."
   FullBar
fi
# Fusion Icon deliberatly removed from list, broken in mate.
#   INSTALLED=$(dpkg-query -l "fusion-icon" | grep 'ii')
#   if ! [[ $INSTALLED ]]; then
#      Center "Installing Fusion Icon for $DISTREL"
#      apt-get install -f -y fusion-icon
#   else
#      Center "Fusion Icon is installed."
#   fi
#   #Fusion
#   echo '[Desktop Entry]
#   Name=Fusion Icon
#   Name[en_GB]=Fusion Icon
#   Type=Application
#   Exec=fusion-icon
#   Terminal=false
#   Icon=fusion-icon
#   Comment=Enables access to compiz and emerald.
#   Categories=System;' > /etc/xdg/autostart/fusion.desktop


#Fix for hosed woopsie.
INSTALLED=$((dpkg-query -l "woopsie" | grep 'ii') 2>/dev/null)
if [[ -f /etc/init.d/woopsie && $INSTALLED ]];then
   Error "Repairing woopsie issue."
   touch /etc/init.d/woopsie
   if [[ $INSTALLED ]]; then
      apt-get remove --purge -y -f woopsie;
   fi
   if [[ -f /etc/init.d/woopsie ]]; then
      rm /etc/init.d/woopsie
   fi
fi
apt-get install -f -y
INSTALLED=$((dpkg-query -l "xfsprogs" | grep 'ii') 2>/dev/null)
if ! [[ $INSTALLED ]]; then
   Center "Installing additional filesystem support."
   FullBar
   apt-get install -f -y mtools e2fsprogs jfsutils reiserfsprogs xfsprogs mdadm btrfs-tools ntfs-3g mdadm
fi
if [[ -f cache ]]; then
   Center "Cleaning up..."
   apt-get autoremove -y --force-yes
   apt-get clean
   apt-get autoclean
else
   Center "Not cleaning up old packages, cache switched engaged"
   echo -e "We will move them out to keep the cache when we exit chroot."
   apt-get autoremove -y --force-yes
fi
Center "Cleaning up configuration files. Please ignore any Errors."
FullBar
SUCCESS=$((dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge) 2>/dev/null)
EXIT
#if [[ -f /var/lib/dbus/machine-id ]]; then
#   Center "Removing diversion."
#   rm /sbin/initctl
#   dpkg-divert --rename --remove /sbin/initctl
#   rm /var/lib/dbus/machine-id
#fi
# ==============================================================================
# This code was automatically cleaned up using code-cleanup
# title         :code-cleanup
# description      :Bash code cleanup script
# Author      :root
# date         :10/23/2013
# version      :1.7.2-1
# http://ultimateedition.info/
# ==============================================================================


Massive changes are coming, what does not work today WILL work tomorrow, figuratively speaking of course.
theemahn@JackHammer:~$ tmosb --build
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.6 Lucid Lynx x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.6-x86-lite.iso
tmosb --build ultimate-edition-2.6-x64-lite.iso
tmosb --build ultimate-edition-2.6-x86-gamers.iso
tmosb --build ultimate-edition-2.6-x64-gamers.iso
tmosb --build ultimate-edition-2.6-x64.iso
tmosb --build ultimate-edition-2.6-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.7 Lucid Lynx x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.7-x86-lite.iso
tmosb --build ultimate-edition-2.7-x64-lite.iso
tmosb --build ultimate-edition-2.7-x86-gamers.iso
tmosb --build ultimate-edition-2.7-x64-gamers.iso
tmosb --build ultimate-edition-2.7-x64.iso
tmosb --build ultimate-edition-2.7-x86.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE


Adjustment of code and your cellphone / tablet comes to life. The potential for the app is once again massive:
theemahn@JackHammer:~$ tmosb --build
ERROR: Invalid switch. Generating valid switches:
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.6 Lucid Lynx x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.6-x86-lite.iso
tmosb --build ultimate-edition-2.6-x64-lite.iso
tmosb --build ultimate-edition-2.6-x86-gamers.iso
tmosb --build ultimate-edition-2.6-x64-gamers.iso
tmosb --build ultimate-edition-2.6-x64.iso
tmosb --build ultimate-edition-2.6-x86.iso
tmosb --build ultimate-edition-2.6-armel.iso
tmosb --build ultimate-edition-2.6-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 2.7 Lucid Lynx x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-2.7-x86-lite.iso
tmosb --build ultimate-edition-2.7-x64-lite.iso
tmosb --build ultimate-edition-2.7-x86-gamers.iso
tmosb --build ultimate-edition-2.7-x64-gamers.iso
tmosb --build ultimate-edition-2.7-x64.iso
tmosb --build ultimate-edition-2.7-x86.iso
tmosb --build ultimate-edition-2.7-armel.iso
tmosb --build ultimate-edition-2.7-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.4 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.4-x86-lite.iso
tmosb --build ultimate-edition-3.4-x64-lite.iso
tmosb --build ultimate-edition-3.4-x86-gamers.iso
tmosb --build ultimate-edition-3.4-x64-gamers.iso
tmosb --build ultimate-edition-3.4-x64.iso
tmosb --build ultimate-edition-3.4-x86.iso
tmosb --build ultimate-edition-3.4-armel.iso
tmosb --build ultimate-edition-3.4-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.5 Precise Pangolin x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.5-x86-lite.iso
tmosb --build ultimate-edition-3.5-x64-lite.iso
tmosb --build ultimate-edition-3.5-x86-gamers.iso
tmosb --build ultimate-edition-3.5-x64-gamers.iso
tmosb --build ultimate-edition-3.5-x64.iso
tmosb --build ultimate-edition-3.5-x86.iso
tmosb --build ultimate-edition-3.5-armel.iso
tmosb --build ultimate-edition-3.5-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.6 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.6-x86-lite.iso
tmosb --build ultimate-edition-3.6-x64-lite.iso
tmosb --build ultimate-edition-3.6-x86-gamers.iso
tmosb --build ultimate-edition-3.6-x64-gamers.iso
tmosb --build ultimate-edition-3.6-x64.iso
tmosb --build ultimate-edition-3.6-x86.iso
tmosb --build ultimate-edition-3.6-armel.iso
tmosb --build ultimate-edition-3.6-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.7 Quantal Quetzal x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.7-x86-lite.iso
tmosb --build ultimate-edition-3.7-x64-lite.iso
tmosb --build ultimate-edition-3.7-x86-gamers.iso
tmosb --build ultimate-edition-3.7-x64-gamers.iso
tmosb --build ultimate-edition-3.7-x64.iso
tmosb --build ultimate-edition-3.7-x86.iso
tmosb --build ultimate-edition-3.7-armel.iso
tmosb --build ultimate-edition-3.7-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.8 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.8-x86-lite.iso
tmosb --build ultimate-edition-3.8-x64-lite.iso
tmosb --build ultimate-edition-3.8-x86-gamers.iso
tmosb --build ultimate-edition-3.8-x64-gamers.iso
tmosb --build ultimate-edition-3.8-x64.iso
tmosb --build ultimate-edition-3.8-x86.iso
tmosb --build ultimate-edition-3.8-armel.iso
tmosb --build ultimate-edition-3.8-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 3.9 Raring Ringtail x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-3.9-x86-lite.iso
tmosb --build ultimate-edition-3.9-x64-lite.iso
tmosb --build ultimate-edition-3.9-x86-gamers.iso
tmosb --build ultimate-edition-3.9-x64-gamers.iso
tmosb --build ultimate-edition-3.9-x64.iso
tmosb --build ultimate-edition-3.9-x86.iso
tmosb --build ultimate-edition-3.9-armel.iso
tmosb --build ultimate-edition-3.9-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.0 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.0-x86-lite.iso
tmosb --build ultimate-edition-4.0-x64-lite.iso
tmosb --build ultimate-edition-4.0-x86-gamers.iso
tmosb --build ultimate-edition-4.0-x64-gamers.iso
tmosb --build ultimate-edition-4.0-x64.iso
tmosb --build ultimate-edition-4.0-x86.iso
tmosb --build ultimate-edition-4.0-armel.iso
tmosb --build ultimate-edition-4.0-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.1 Saucy Salamander x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.1-x86-lite.iso
tmosb --build ultimate-edition-4.1-x64-lite.iso
tmosb --build ultimate-edition-4.1-x86-gamers.iso
tmosb --build ultimate-edition-4.1-x64-gamers.iso
tmosb --build ultimate-edition-4.1-x64.iso
tmosb --build ultimate-edition-4.1-x86.iso
tmosb --build ultimate-edition-4.1-armel.iso
tmosb --build ultimate-edition-4.1-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.2 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.2-x86-lite.iso
tmosb --build ultimate-edition-4.2-x64-lite.iso
tmosb --build ultimate-edition-4.2-x86-gamers.iso
tmosb --build ultimate-edition-4.2-x64-gamers.iso
tmosb --build ultimate-edition-4.2-x64.iso
tmosb --build ultimate-edition-4.2-x86.iso
tmosb --build ultimate-edition-4.2-armel.iso
tmosb --build ultimate-edition-4.2-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.3 Trusty Tahr x86/x64 YES STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.3-x86-lite.iso
tmosb --build ultimate-edition-4.3-x64-lite.iso
tmosb --build ultimate-edition-4.3-x86-gamers.iso
tmosb --build ultimate-edition-4.3-x64-gamers.iso
tmosb --build ultimate-edition-4.3-x64.iso
tmosb --build ultimate-edition-4.3-x86.iso
tmosb --build ultimate-edition-4.3-armel.iso
tmosb --build ultimate-edition-4.3-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.4 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.4-x86-lite.iso
tmosb --build ultimate-edition-4.4-x64-lite.iso
tmosb --build ultimate-edition-4.4-x86-gamers.iso
tmosb --build ultimate-edition-4.4-x64-gamers.iso
tmosb --build ultimate-edition-4.4-x64.iso
tmosb --build ultimate-edition-4.4-x86.iso
tmosb --build ultimate-edition-4.4-armel.iso
tmosb --build ultimate-edition-4.4-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ultimate Edition 4.5 Utopic Unicorn x86/x64 NO STANDARD KDE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ultimate-edition-4.5-x86-lite.iso
tmosb --build ultimate-edition-4.5-x64-lite.iso
tmosb --build ultimate-edition-4.5-x86-gamers.iso
tmosb --build ultimate-edition-4.5-x64-gamers.iso
tmosb --build ultimate-edition-4.5-x64.iso
tmosb --build ultimate-edition-4.5-x86.iso
tmosb --build ultimate-edition-4.5-armel.iso
tmosb --build ultimate-edition-4.5-armhf.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.04 Precise Pangolin x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.04-x86.iso
tmosb --build ubuntu-desktop-12.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 12.10 Quantal Quetzal x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-12.10-x86.iso
tmosb --build ubuntu-desktop-12.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.04 Raring Ringtail x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.04-x86.iso
tmosb --build ubuntu-desktop-13.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 13.10 Saucy Salamander x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-13.10-x86.iso
tmosb --build ubuntu-desktop-13.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.04 Trusty Tahr x86/x64 YES LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.04-x86.iso
tmosb --build ubuntu-desktop-14.04-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ OPERATING SYSTEM VERSION RELEASE BASE ARCH LTS DIST TYPE DE(s)
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ Ubuntu 14.10 Utopic Unicorn x86/x64 NO LITE/STANDARD MATE
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
Default Build command(s):
tmosb --build ubuntu-desktop-14.10-x86.iso
tmosb --build ubuntu-desktop-14.10-x64.iso
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ TheeMahn O/S Builder (tmosb) 1.8.9, 08/26/2014 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▒ GNU tmosb home page: <http://os-builder.com/>. ▒
▒ E-mail bug reports to: <TheeMahn@os-builder.com>. ▒
▒ Be sure to include the word tmosb somewhere in the Subject: field. ▒
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
theemahn@JackHammer:~$


The Anti-Malware Inititive
If you don't know what zeitgeist is I suggest a read of a few articles:
http://wiki.zeitgeist-project.com/Getti ... _Zeitgeist

Don't be fooled, Canonical The company behind Ubuntu, this includes Mint etc. as they are now in cohoots with Ubuntu as well uses the data it collects on users I'm sure in various forms. One such tragedy is to send you relevant ads and direct you to amazon etc. based on the data collected. I understand they want to make money, spying on their users is not the way to go about it. Software is in production to ensure that does not happen to Ultimate Edition users:
Code: Select all
declare -a MALWARE=('zeitgeist');
#Smash spyware, we want our users free to do as they like w/o being spied on...
function AntiMalware () {
   # Begin cycling array - allows for future introduction of other nasty programs
   for EACH in ${MALWARE[@]}
   do
      # Check for installation of spyware one program at a time.
      INSTALLED=$((dpkg-query -l $EACH | grep 'ii')2>/dev/null)
      if [[ $INSTALLED ]]; then
         # Thusly inform the user there is spyware in thier system.
         Center "MALWARE detected: $EACH purging $EACH from the system."
         # Scrap it from thier system.
         apt-get remove --purge -y -f $EACH
      fi
   done
}

While the above code does beautifully in tmgrub a subprogram of tmosb, will render any Unity based O/S worthless. I may have to take a more stringent approach, I do not want our users to have to live w/o Unity because of a simple spyware program which Unity "REQUIRES". I declared an array in the above code to allow me to expand it's detection and removal of additional software should they so develop additional nastiness ;)

I hope I got my point across. Few adjustments in software make large changes in the overall picture. Many doors will soon open... Unpubished currently. I wont allow a programmer to come in after analysing my code to tell me I should consoidate code. Encapsulate, Center functions etc. is in all programs. I hate to say this I hate the C language, sould I #include the popular functions / software?

To be honest would accelerate my development and avoid some errors. Please tell me why I did not do so. Hard to replace a job that pays that well, a programmer makes squat compared to that of a Operating System Architect. I will replace that position, even if I have to load software onto a server (most likely locally) to fix problems before they are introduced into your system. I may have to setup a build server with repostorm on it.

Earlier when I said a more stringent approach, I'm talking downloading the source for Zeitgeist and ripping out all reporting to Canonical, so fuctionality remains. Damn, I love open source. I could also aproach it from another perspective and build an empty binary that does absolutely nothing, debianize / repostorm it and inject it into the Operating System. Now, I love being a programmer ;)

I could drop a 100 links of people begging to get rid of Zeitgeist, I won't waste my time or others. I'm not here to question things, I am here to fix things. If its's not me doing so, it will be software doing so for me. Now that I really think about this... It is not my place to say, but I'm betting the entire OZ Unity hopes I resolve the issue. Thier O/S is plauged by this very issue across the board, not thier fault. Shysty individuals ruin everything down the chain, no consideration.

Article progression ~ 50%
Home of Ultimate Edition. Got a question? Please review the F.A.Q. Browse the How to section.

Main O/S: Builder of O/S Guess.
Mainboard: ASUS Sabertooth 990FX TUF (The Ultimate Force) R2.0
CPU: AMD FX 8150 Bulldozer Eight Core Black Edition
Ram: 16 GB GSkill Ripjaws Dual Channel DDR3 2133
Video: 2 X ATI 7770HD GHZ Edition 1GB PCI 3.0 Crossfire (main cards) various others for testing
Hard Disks: Over 30 TB Mechanical and Multiple SSD's. (Sans Digital 32TB raid tower - dual Esata)
Raid: Onboard 10 sata / e-sata ports, HighPoint RocketRAID 640 PCI-Express 2.0 x4 SATA III (6.0Gb/s)
custom software mirrored - tmbackup
Monitors: 4K Samsung 28", HannsG HH281, Various others
730 Watt modular PSU
700 Watt Amp & 4 X 600 Watt speakers
User avatar
TheeMahn
Site Admin
 
Posts: 4193
Joined: Fri Oct 12, 2007 10:02 am
Location: U.S.A.
Age: 46
Operating System: Ultimate Edition Developer



Re: TheeMahn's O/S Builder

Postby chris47 » Sat Nov 01, 2014 11:34 pm

Next they will be wanting you to pay for it.. No thanks..
MB-ASUS Sabertooth FX 990 Rev 2.0
CPU- AMD FX 6200 X6 3.8Ghz Black Edition
RAM- 8Gig 2x4 Corsair XMS 3 1600 C9
Video-ASUS Nvidia GTX 550ti Fermi
HD Segate 2T 7400RPm
HD- WD Raptor 10,000 RPm 150Gig
Monitor-Asus 23.6
PSU- Antec Earth Watts 650
User avatar
chris47
U.E. College Professor
U.E. College Professor
 
Posts: 214
Joined: Thu Sep 06, 2012 8:30 pm
Location: Texas USA
Age: 52
Operating System: Ultimate Edition 3.3 64 BIT



Re: TheeMahn's O/S Builder

Postby TheeMahn » Sun Nov 09, 2014 4:29 pm

We are not stuck in a Ubuntu system a few lines of code...
debootstrap bootstraps a basic Debian system of SUITE (eg, sarge, etch,
lenny, sid) into TARGET from MIRROR by running SCRIPT. MIRROR can be
an http:// URL, a file:/// URL, or an ssh:/// URL. Notice that file:/
URLs are translated to file:/// (correct scheme as described in RFC1738
for local filenames), and file:// will not work. ssh://USER@HOST/PATH
URLs are retrieved using scp; use of ssh-agent or similar is strongly
recommended.


Things get that bad I will mirror their entire repository.
a1.png
Enter Debian

a2.png

a3.png
Once added internally these numbers will skyrocket.


How do I obtain those values currently?
a4.png


They will expand massively. To be honest with you, I was working on enhancing the help system when I stumbled across the above post. I wanted to demonstrate how easy it is to adjust the software to gear it to work its way into Debian, I can do the same with mint etc. I spent meticulous time & effort to allow me or anyone else to make adjustments at a whim in tmosb.

I hate to re-create the wheel in software development. I used 0 other developers source code in the development of this app. I did used to work for reconstructor many years ago, perhaps gives me an edge. The end result as of current a new spin or twist and hopeful replacement for the geeks initially. Without a doubt will replace me as an Operating System Architect. The Ultimate result? Click a few boxes and have exactly what you want repostormed entire Operating System. We are talking a long way from now. A perfect operating system by YOUR standards, let the clock tick and envelop exactly that. I did not spend 3, or is it now 4 years writing one program. When it is all over and the smoke settles, you will understand. Tmosb is jack dittly squat compared to repostorm. In conjunction rules the roost, I have other apps to address many other issues I see.

I did not start building Operating Systems yesterday & more importantly address the issues I commonly see & write software therein rectify that issue. The world has yet to see.

I want you to think about this, i openly have made a program for fixing GTK errors, most do not know how to use it. When shoved from another program?

TheeMahn,
Im about to bust Bruce Lee up:
Ever since I was a child I have been encompased by gathering an education.
No matter the involvement, I wanted nothing more then education, I do the same. Day by day I learn.
I have been pushed to thee point where I no longer care, I want nothing more then you to be the same as me.
Home of Ultimate Edition. Got a question? Please review the F.A.Q. Browse the How to section.

Main O/S: Builder of O/S Guess.
Mainboard: ASUS Sabertooth 990FX TUF (The Ultimate Force) R2.0
CPU: AMD FX 8150 Bulldozer Eight Core Black Edition
Ram: 16 GB GSkill Ripjaws Dual Channel DDR3 2133
Video: 2 X ATI 7770HD GHZ Edition 1GB PCI 3.0 Crossfire (main cards) various others for testing
Hard Disks: Over 30 TB Mechanical and Multiple SSD's. (Sans Digital 32TB raid tower - dual Esata)
Raid: Onboard 10 sata / e-sata ports, HighPoint RocketRAID 640 PCI-Express 2.0 x4 SATA III (6.0Gb/s)
custom software mirrored - tmbackup
Monitors: 4K Samsung 28", HannsG HH281, Various others
730 Watt modular PSU
700 Watt Amp & 4 X 600 Watt speakers
User avatar
TheeMahn
Site Admin
 
Posts: 4193
Joined: Fri Oct 12, 2007 10:02 am
Location: U.S.A.
Age: 46
Operating System: Ultimate Edition Developer



Re: TheeMahn's O/S Builder

Postby BBOSAK2143 » Mon Nov 10, 2014 3:58 pm

I am going to have to say this as I believe it firmly. "A program is nothing without the know how of the person who created it" Simple terms, yes you create the greatest programs on this earth and there is nothing that will ever replace that fact. You know, I fuddled with these Ubuntu's since 12.10 when you started "Build with Me" and I still feel like I have a blindfold on doing them. It takes a very and I mean extremely long time to build the knowledge you have. No replacement for that whatsoever. Sure, current 14.10 is doing well, but would look like the work of a 6 year old compared to yours.

I looked at some of that code with TMOSB and am totally baffled. I could not come close to that unless I had a good 10 more years of schooling and training. I can't even figure where to start on gtk these days as the changes are massive and what took me a year to figure is more less trash now. I know, many do not care for the type of look, I provide, but is what I enjoy and now is lost for a bit til I can figure that out. Now, magnify that by least 20 fold since Linux has changed dramatically and I know that is what you have to contend with. So, you better believe I know you are fighting one tough battle in all this.

Repostorm is a total phenomenon. That is a miracle in itself that should be understood as one of the greatest works of all time. Anyone that has ever built an OS for themselves can understand the extreme value of Repostorm. All this building has made me understand some things you have done. With that I have gained even more respect for you as I know none of this is simple and take an extreme amount of knowledge and long hours of work. Most likely, will give another run on TMOSB this next month as burned up too much data this month with Verizon. I blew it last time as did it on Laptop and must have had some connection failure. Next time will be on here, never get that issue on the PC, least when I am building.

Am looking forward to that OS creator still, that is going to be right there with Repostorm a total marvel. Thinking of all the variations for how all of us want different things for our systems, makes my head spin. As said, I still can't believe TMOSB can do what it does. I watched it just grabbing away doing what takes me a good day, in about 20 minutes. Absolutely astounding, amazing and unbelievable unless you watch it do it. This time around for my OS I did not even bother to install Unetbootin, since there is nothing that can beat thumbOS which still amazes me every single time I use it. I still can't believe how lucky all of us are in Linux that you are working this hard. There is no real way to express the gratitude you deserve, but know this, you deserve it.
Firm believer in Asus, Linux and Technology
"Art is to be enjoyed by all that enjoy it"
Asus M5A97 Plus motherboard
AMD FX 4350 Processor
Asus R7250 2GD5 graphics card
16gig DDR3-1333
2TB Hitachi Hard Drive
24in Asus VE248 LED Monitor
OS=My 8th OS Star Trek(Ubuntu 16.04)
Desktops=Gnome 3.20 and LXDE
Warp Speed!
ASUS Laptop R503U
AMD E2-1800
ATI HD7340
4gig Memory
500gig Hitachi HD
OS= Win7 SP1/8th OS Star Trek(Ubuntu 16.04)
Desktops Gnome 3.20 and LXDE
2nd 500gig Seagate HD R.I.P
User avatar
BBOSAK2143
U.E. God
U.E. God
 
Posts: 921
Joined: Tue Jul 03, 2012 7:56 pm
Location: Mount Pleasant, Tennessee
Age: 54
Operating System: Ultimate Edition 3.5 64 BIT



Re: TheeMahn's O/S Builder

Postby TheeMahn » Tue Nov 11, 2014 9:06 pm

I'm not ignoring you guys posts, I am getting source code out there, until I can crush the 3 or is it 400,000 character limit (this forum / phpbb) has:
Tapping twice in the terminal is what bash completion is fills in the blanks for you or provides what you are thusly looking for, quick and straight to the point.
/etc/bash_completion.d/tmosb
Code: Select all
# Debian tmosb(8) completion.

have tmosb &&
_tmosb()
{
   dashify()
   {
      local i

      for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
         if [ ${#COMPREPLY[i]} -le 2 ]; then
            COMPREPLY[i]=-${COMPREPLY[i]}
         else
            COMPREPLY[i]=--${COMPREPLY[i]}
         fi
      done
   }

   local cur cur_nodash prev

   COMPREPLY=()
   cur=${COMP_WORDS[COMP_CWORD]}
   cur_nodash=${cur#-}
   prev=${COMP_WORDS[COMP_CWORD-1][COMP_CWORD-2]}

   if [ $COMP_CWORD = 1 ]; then
      # first parameter on line
      case "$cur" in
      -b*)
         COMPREPLY=( $( compgen -W 'build' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -d*)
         COMPREPLY=( $( compgen -W 'debootstrap' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -C*)
         COMPREPLY=( $( compgen -W 'clearcache' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -e*)
         COMPREPLY=( $( compgen -W 'extract' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -t*)
         COMPREPLY=( $( compgen -W 'test' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -h*)
         COMPREPLY=( $( compgen -W 'help' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -p*)
         COMPREPLY=( $( compgen -W 'pull' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -u*)
         COMPREPLY=( $( compgen -W 'upgrade' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      -v*)
         COMPREPLY=( $( compgen -W 'version' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      --*)
         COMPREPLY=( $( compgen -W 'build clearcache debootstrap extract help pull test upgrade version' ${cur_nodash#-} ) )
         dashify;
         return 0
         ;;
      *)
         COMPREPLY=( $( compgen -W 'b C e h p t u v' \
                   $cur_nodash ) )
         dashify
         return 0
         ;;
      esac
   fi
   if [ $COMP_CWORD = 2 ]; then
      case "${COMP_WORDS[1]}" in
      --b*)
         # standard filename completion
         COMPREPLY=( $( compgen -W "ultimate-edition-3.4-x86-lite.iso ultimate-edition-3.4-x64-lite.iso ultimate-edition-3.4-x86-gamers.iso ultimate-edition-3.4-x64-gamers.iso ultimate-edition-3.4-x64.iso ultimate-edition-3.4-x86.iso ultimate-edition-3.4-armel.iso ultimate-edition-3.4-armhf.iso ultimate-edition-3.4-powerpc.iso ultimate-edition-3.5-x86-lite.iso ultimate-edition-3.5-x64-lite.iso ultimate-edition-3.5-x86-gamers.iso ultimate-edition-3.5-x64-gamers.iso ultimate-edition-3.5-x64.iso ultimate-edition-3.5-x86.iso ultimate-edition-3.5-armel.iso ultimate-edition-3.5-armhf.iso ultimate-edition-3.5-powerpc.iso ultimate-edition-3.6-x86-lite.iso ultimate-edition-3.6-x64-lite.iso ultimate-edition-3.6-x86-gamers.iso ultimate-edition-3.6-x64-gamers.iso ultimate-edition-3.6-x64.iso ultimate-edition-3.6-x86.iso ultimate-edition-3.6-armel.iso ultimate-edition-3.6-armhf.iso ultimate-edition-3.6-powerpc.iso ultimate-edition-3.7-x86-lite.iso ultimate-edition-3.7-x64-lite.iso ultimate-edition-3.7-x86-gamers.iso ultimate-edition-3.7-x64-gamers.iso ultimate-edition-3.7-x64.iso ultimate-edition-3.7-x86.iso ultimate-edition-3.7-armel.iso ultimate-edition-3.7-armhf.iso ultimate-edition-3.7-powerpc.iso ultimate-edition-3.8-x86-lite.iso ultimate-edition-3.8-x64-lite.iso ultimate-edition-3.8-x86-gamers.iso ultimate-edition-3.8-x64-gamers.iso ultimate-edition-3.8-x64.iso ultimate-edition-3.8-x86.iso ultimate-edition-3.8-armel.iso ultimate-edition-3.8-armhf.iso ultimate-edition-3.8-powerpc.iso ultimate-edition-3.9-x86-lite.iso ultimate-edition-3.9-x64-lite.iso ultimate-edition-3.9-x86-gamers.iso ultimate-edition-3.9-x64-gamers.iso ultimate-edition-3.9-x64.iso ultimate-edition-3.9-x86.iso ultimate-edition-3.9-armel.iso ultimate-edition-3.9-armhf.iso ultimate-edition-3.9-powerpc.iso ultimate-edition-4.0-x86-lite.iso ultimate-edition-4.0-x64-lite.iso ultimate-edition-4.0-x86-gamers.iso ultimate-edition-4.0-x64-gamers.iso ultimate-edition-4.0-x64.iso ultimate-edition-4.0-x86.iso ultimate-edition-4.0-armel.iso ultimate-edition-4.0-armhf.iso ultimate-edition-4.0-powerpc.iso ultimate-edition-4.1-x86-lite.iso ultimate-edition-4.1-x64-lite.iso ultimate-edition-4.1-x86-gamers.iso ultimate-edition-4.1-x64-gamers.iso ultimate-edition-4.1-x64.iso ultimate-edition-4.1-x86.iso ultimate-edition-4.1-armel.iso ultimate-edition-4.1-armhf.iso ultimate-edition-4.1-powerpc.iso ultimate-edition-4.2-x86-lite.iso ultimate-edition-4.2-x64-lite.iso ultimate-edition-4.2-x86-gamers.iso ultimate-edition-4.2-x64-gamers.iso ultimate-edition-4.2-x64.iso ultimate-edition-4.2-x86.iso ultimate-edition-4.2-armel.iso ultimate-edition-4.2-armhf.iso ultimate-edition-4.2-powerpc.iso ultimate-edition-4.3-x86-lite.iso ultimate-edition-4.3-x64-lite.iso ultimate-edition-4.3-x86-gamers.iso ultimate-edition-4.3-x64-gamers.iso ultimate-edition-4.3-x64.iso ultimate-edition-4.3-x86.iso ultimate-edition-4.3-armel.iso ultimate-edition-4.3-armhf.iso ultimate-edition-4.3-powerpc.iso ultimate-edition-4.4-x86-lite.iso ultimate-edition-4.4-x64-lite.iso ultimate-edition-4.4-x86-gamers.iso ultimate-edition-4.4-x64-gamers.iso ultimate-edition-4.4-x64.iso ultimate-edition-4.4-x86.iso ultimate-edition-4.4-armel.iso ultimate-edition-4.4-armhf.iso ultimate-edition-4.4-powerpc.iso ultimate-edition-4.5-x86-lite.iso ultimate-edition-4.5-x64-lite.iso ultimate-edition-4.5-x86-gamers.iso ultimate-edition-4.5-x64-gamers.iso ultimate-edition-4.5-x64.iso ultimate-edition-4.5-x86.iso ultimate-edition-4.5-armel.iso ultimate-edition-4.5-armhf.iso ultimate-edition-4.5-powerpc.iso ubuntu-desktop-12.04-x86.iso ubuntu-desktop-12.04-x64.iso ubuntu-desktop-12.04-armel.iso ubuntu-desktop-12.04-armhf.iso ubuntu-desktop-12.04-powerpc.iso ubuntu-desktop-12.10-x86.iso ubuntu-desktop-12.10-x64.iso ubuntu-desktop-12.10-armel.iso ubuntu-desktop-12.10-armhf.iso ubuntu-desktop-12.10-powerpc.iso ubuntu-desktop-13.04-x86.iso ubuntu-desktop-13.04-x64.iso ubuntu-desktop-13.04-armel.iso ubuntu-desktop-13.04-armhf.iso ubuntu-desktop-13.04-powerpc.iso ubuntu-desktop-13.10-x86.iso ubuntu-desktop-13.10-x64.iso ubuntu-desktop-13.10-armel.iso ubuntu-desktop-13.10-armhf.iso ubuntu-desktop-13.10-powerpc.iso ubuntu-desktop-14.04-x86.iso ubuntu-desktop-14.04-x64.iso ubuntu-desktop-14.04-armel.iso ubuntu-desktop-14.04-armhf.iso ubuntu-desktop-14.04-powerpc.iso ubuntu-desktop-14.10-x86.iso ubuntu-desktop-14.10-x64.iso ubuntu-desktop-14.10-armel.iso ubuntu-desktop-14.10-armhf.iso ubuntu-desktop-14.10-powerpc.iso " $cur ) )
         # COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      -b)
         # standard filename completion
         COMPREPLY=( $( compgen -W "ultimate-edition-3.4-x86-lite.iso ultimate-edition-3.4-x64-lite.iso ultimate-edition-3.4-x86-gamers.iso ultimate-edition-3.4-x64-gamers.iso ultimate-edition-3.4-x64.iso ultimate-edition-3.4-x86.iso ultimate-edition-3.4-armel.iso ultimate-edition-3.4-armhf.iso ultimate-edition-3.4-powerpc.iso ultimate-edition-3.5-x86-lite.iso ultimate-edition-3.5-x64-lite.iso ultimate-edition-3.5-x86-gamers.iso ultimate-edition-3.5-x64-gamers.iso ultimate-edition-3.5-x64.iso ultimate-edition-3.5-x86.iso ultimate-edition-3.5-armel.iso ultimate-edition-3.5-armhf.iso ultimate-edition-3.5-powerpc.iso ultimate-edition-3.6-x86-lite.iso ultimate-edition-3.6-x64-lite.iso ultimate-edition-3.6-x86-gamers.iso ultimate-edition-3.6-x64-gamers.iso ultimate-edition-3.6-x64.iso ultimate-edition-3.6-x86.iso ultimate-edition-3.6-armel.iso ultimate-edition-3.6-armhf.iso ultimate-edition-3.6-powerpc.iso ultimate-edition-3.7-x86-lite.iso ultimate-edition-3.7-x64-lite.iso ultimate-edition-3.7-x86-gamers.iso ultimate-edition-3.7-x64-gamers.iso ultimate-edition-3.7-x64.iso ultimate-edition-3.7-x86.iso ultimate-edition-3.7-armel.iso ultimate-edition-3.7-armhf.iso ultimate-edition-3.7-powerpc.iso ultimate-edition-3.8-x86-lite.iso ultimate-edition-3.8-x64-lite.iso ultimate-edition-3.8-x86-gamers.iso ultimate-edition-3.8-x64-gamers.iso ultimate-edition-3.8-x64.iso ultimate-edition-3.8-x86.iso ultimate-edition-3.8-armel.iso ultimate-edition-3.8-armhf.iso ultimate-edition-3.8-powerpc.iso ultimate-edition-3.9-x86-lite.iso ultimate-edition-3.9-x64-lite.iso ultimate-edition-3.9-x86-gamers.iso ultimate-edition-3.9-x64-gamers.iso ultimate-edition-3.9-x64.iso ultimate-edition-3.9-x86.iso ultimate-edition-3.9-armel.iso ultimate-edition-3.9-armhf.iso ultimate-edition-3.9-powerpc.iso ultimate-edition-4.0-x86-lite.iso ultimate-edition-4.0-x64-lite.iso ultimate-edition-4.0-x86-gamers.iso ultimate-edition-4.0-x64-gamers.iso ultimate-edition-4.0-x64.iso ultimate-edition-4.0-x86.iso ultimate-edition-4.0-armel.iso ultimate-edition-4.0-armhf.iso ultimate-edition-4.0-powerpc.iso ultimate-edition-4.1-x86-lite.iso ultimate-edition-4.1-x64-lite.iso ultimate-edition-4.1-x86-gamers.iso ultimate-edition-4.1-x64-gamers.iso ultimate-edition-4.1-x64.iso ultimate-edition-4.1-x86.iso ultimate-edition-4.1-armel.iso ultimate-edition-4.1-armhf.iso ultimate-edition-4.1-powerpc.iso ultimate-edition-4.2-x86-lite.iso ultimate-edition-4.2-x64-lite.iso ultimate-edition-4.2-x86-gamers.iso ultimate-edition-4.2-x64-gamers.iso ultimate-edition-4.2-x64.iso ultimate-edition-4.2-x86.iso ultimate-edition-4.2-armel.iso ultimate-edition-4.2-armhf.iso ultimate-edition-4.2-powerpc.iso ultimate-edition-4.3-x86-lite.iso ultimate-edition-4.3-x64-lite.iso ultimate-edition-4.3-x86-gamers.iso ultimate-edition-4.3-x64-gamers.iso ultimate-edition-4.3-x64.iso ultimate-edition-4.3-x86.iso ultimate-edition-4.3-armel.iso ultimate-edition-4.3-armhf.iso ultimate-edition-4.3-powerpc.iso ultimate-edition-4.4-x86-lite.iso ultimate-edition-4.4-x64-lite.iso ultimate-edition-4.4-x86-gamers.iso ultimate-edition-4.4-x64-gamers.iso ultimate-edition-4.4-x64.iso ultimate-edition-4.4-x86.iso ultimate-edition-4.4-armel.iso ultimate-edition-4.4-armhf.iso ultimate-edition-4.4-powerpc.iso ultimate-edition-4.5-x86-lite.iso ultimate-edition-4.5-x64-lite.iso ultimate-edition-4.5-x86-gamers.iso ultimate-edition-4.5-x64-gamers.iso ultimate-edition-4.5-x64.iso ultimate-edition-4.5-x86.iso ultimate-edition-4.5-armel.iso ultimate-edition-4.5-armhf.iso ultimate-edition-4.5-powerpc.iso ubuntu-desktop-12.04-x86.iso ubuntu-desktop-12.04-x64.iso ubuntu-desktop-12.04-armel.iso ubuntu-desktop-12.04-armhf.iso ubuntu-desktop-12.04-powerpc.iso ubuntu-desktop-12.10-x86.iso ubuntu-desktop-12.10-x64.iso ubuntu-desktop-12.10-armel.iso ubuntu-desktop-12.10-armhf.iso ubuntu-desktop-12.10-powerpc.iso ubuntu-desktop-13.04-x86.iso ubuntu-desktop-13.04-x64.iso ubuntu-desktop-13.04-armel.iso ubuntu-desktop-13.04-armhf.iso ubuntu-desktop-13.04-powerpc.iso ubuntu-desktop-13.10-x86.iso ubuntu-desktop-13.10-x64.iso ubuntu-desktop-13.10-armel.iso ubuntu-desktop-13.10-armhf.iso ubuntu-desktop-13.10-powerpc.iso ubuntu-desktop-14.04-x86.iso ubuntu-desktop-14.04-x64.iso ubuntu-desktop-14.04-armel.iso ubuntu-desktop-14.04-armhf.iso ubuntu-desktop-14.04-powerpc.iso ubuntu-desktop-14.10-x86.iso ubuntu-desktop-14.10-x64.iso ubuntu-desktop-14.10-armel.iso ubuntu-desktop-14.10-armhf.iso ubuntu-desktop-14.10-powerpc.iso " $cur ) )
         return 0
         ;;
      --d*)
         # standard filename completion
         COMPREPLY=( $( compgen -W "ultimate-edition-3.4-x86-lite.iso ultimate-edition-3.4-x64-lite.iso ultimate-edition-3.4-x86-gamers.iso ultimate-edition-3.4-x64-gamers.iso ultimate-edition-3.4-x64.iso ultimate-edition-3.4-x86.iso ultimate-edition-3.4-armel.iso ultimate-edition-3.4-armhf.iso ultimate-edition-3.4-powerpc.iso ultimate-edition-3.5-x86-lite.iso ultimate-edition-3.5-x64-lite.iso ultimate-edition-3.5-x86-gamers.iso ultimate-edition-3.5-x64-gamers.iso ultimate-edition-3.5-x64.iso ultimate-edition-3.5-x86.iso ultimate-edition-3.5-armel.iso ultimate-edition-3.5-armhf.iso ultimate-edition-3.5-powerpc.iso ultimate-edition-3.6-x86-lite.iso ultimate-edition-3.6-x64-lite.iso ultimate-edition-3.6-x86-gamers.iso ultimate-edition-3.6-x64-gamers.iso ultimate-edition-3.6-x64.iso ultimate-edition-3.6-x86.iso ultimate-edition-3.6-armel.iso ultimate-edition-3.6-armhf.iso ultimate-edition-3.6-powerpc.iso ultimate-edition-3.7-x86-lite.iso ultimate-edition-3.7-x64-lite.iso ultimate-edition-3.7-x86-gamers.iso ultimate-edition-3.7-x64-gamers.iso ultimate-edition-3.7-x64.iso ultimate-edition-3.7-x86.iso ultimate-edition-3.7-armel.iso ultimate-edition-3.7-armhf.iso ultimate-edition-3.7-powerpc.iso ultimate-edition-3.8-x86-lite.iso ultimate-edition-3.8-x64-lite.iso ultimate-edition-3.8-x86-gamers.iso ultimate-edition-3.8-x64-gamers.iso ultimate-edition-3.8-x64.iso ultimate-edition-3.8-x86.iso ultimate-edition-3.8-armel.iso ultimate-edition-3.8-armhf.iso ultimate-edition-3.8-powerpc.iso ultimate-edition-3.9-x86-lite.iso ultimate-edition-3.9-x64-lite.iso ultimate-edition-3.9-x86-gamers.iso ultimate-edition-3.9-x64-gamers.iso ultimate-edition-3.9-x64.iso ultimate-edition-3.9-x86.iso ultimate-edition-3.9-armel.iso ultimate-edition-3.9-armhf.iso ultimate-edition-3.9-powerpc.iso ultimate-edition-4.0-x86-lite.iso ultimate-edition-4.0-x64-lite.iso ultimate-edition-4.0-x86-gamers.iso ultimate-edition-4.0-x64-gamers.iso ultimate-edition-4.0-x64.iso ultimate-edition-4.0-x86.iso ultimate-edition-4.0-armel.iso ultimate-edition-4.0-armhf.iso ultimate-edition-4.0-powerpc.iso ultimate-edition-4.1-x86-lite.iso ultimate-edition-4.1-x64-lite.iso ultimate-edition-4.1-x86-gamers.iso ultimate-edition-4.1-x64-gamers.iso ultimate-edition-4.1-x64.iso ultimate-edition-4.1-x86.iso ultimate-edition-4.1-armel.iso ultimate-edition-4.1-armhf.iso ultimate-edition-4.1-powerpc.iso ultimate-edition-4.2-x86-lite.iso ultimate-edition-4.2-x64-lite.iso ultimate-edition-4.2-x86-gamers.iso ultimate-edition-4.2-x64-gamers.iso ultimate-edition-4.2-x64.iso ultimate-edition-4.2-x86.iso ultimate-edition-4.2-armel.iso ultimate-edition-4.2-armhf.iso ultimate-edition-4.2-powerpc.iso ultimate-edition-4.3-x86-lite.iso ultimate-edition-4.3-x64-lite.iso ultimate-edition-4.3-x86-gamers.iso ultimate-edition-4.3-x64-gamers.iso ultimate-edition-4.3-x64.iso ultimate-edition-4.3-x86.iso ultimate-edition-4.3-armel.iso ultimate-edition-4.3-armhf.iso ultimate-edition-4.3-powerpc.iso ultimate-edition-4.4-x86-lite.iso ultimate-edition-4.4-x64-lite.iso ultimate-edition-4.4-x86-gamers.iso ultimate-edition-4.4-x64-gamers.iso ultimate-edition-4.4-x64.iso ultimate-edition-4.4-x86.iso ultimate-edition-4.4-armel.iso ultimate-edition-4.4-armhf.iso ultimate-edition-4.4-powerpc.iso ultimate-edition-4.5-x86-lite.iso ultimate-edition-4.5-x64-lite.iso ultimate-edition-4.5-x86-gamers.iso ultimate-edition-4.5-x64-gamers.iso ultimate-edition-4.5-x64.iso ultimate-edition-4.5-x86.iso ultimate-edition-4.5-armel.iso ultimate-edition-4.5-armhf.iso ultimate-edition-4.5-powerpc.iso ubuntu-desktop-12.04-x86.iso ubuntu-desktop-12.04-x64.iso ubuntu-desktop-12.04-armel.iso ubuntu-desktop-12.04-armhf.iso ubuntu-desktop-12.04-powerpc.iso ubuntu-desktop-12.10-x86.iso ubuntu-desktop-12.10-x64.iso ubuntu-desktop-12.10-armel.iso ubuntu-desktop-12.10-armhf.iso ubuntu-desktop-12.10-powerpc.iso ubuntu-desktop-13.04-x86.iso ubuntu-desktop-13.04-x64.iso ubuntu-desktop-13.04-armel.iso ubuntu-desktop-13.04-armhf.iso ubuntu-desktop-13.04-powerpc.iso ubuntu-desktop-13.10-x86.iso ubuntu-desktop-13.10-x64.iso ubuntu-desktop-13.10-armel.iso ubuntu-desktop-13.10-armhf.iso ubuntu-desktop-13.10-powerpc.iso ubuntu-desktop-14.04-x86.iso ubuntu-desktop-14.04-x64.iso ubuntu-desktop-14.04-armel.iso ubuntu-desktop-14.04-armhf.iso ubuntu-desktop-14.04-powerpc.iso ubuntu-desktop-14.10-x86.iso ubuntu-desktop-14.10-x64.iso ubuntu-desktop-14.10-armel.iso ubuntu-desktop-14.10-armhf.iso ubuntu-desktop-14.10-powerpc.iso " $cur ) )
         # COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      -d)
         # standard filename completion
         COMPREPLY=( $( compgen -W "ultimate-edition-3.4-x86-lite.iso ultimate-edition-3.4-x64-lite.iso ultimate-edition-3.4-x86-gamers.iso ultimate-edition-3.4-x64-gamers.iso ultimate-edition-3.4-x64.iso ultimate-edition-3.4-x86.iso ultimate-edition-3.4-armel.iso ultimate-edition-3.4-armhf.iso ultimate-edition-3.4-powerpc.iso ultimate-edition-3.5-x86-lite.iso ultimate-edition-3.5-x64-lite.iso ultimate-edition-3.5-x86-gamers.iso ultimate-edition-3.5-x64-gamers.iso ultimate-edition-3.5-x64.iso ultimate-edition-3.5-x86.iso ultimate-edition-3.5-armel.iso ultimate-edition-3.5-armhf.iso ultimate-edition-3.5-powerpc.iso ultimate-edition-3.6-x86-lite.iso ultimate-edition-3.6-x64-lite.iso ultimate-edition-3.6-x86-gamers.iso ultimate-edition-3.6-x64-gamers.iso ultimate-edition-3.6-x64.iso ultimate-edition-3.6-x86.iso ultimate-edition-3.6-armel.iso ultimate-edition-3.6-armhf.iso ultimate-edition-3.6-powerpc.iso ultimate-edition-3.7-x86-lite.iso ultimate-edition-3.7-x64-lite.iso ultimate-edition-3.7-x86-gamers.iso ultimate-edition-3.7-x64-gamers.iso ultimate-edition-3.7-x64.iso ultimate-edition-3.7-x86.iso ultimate-edition-3.7-armel.iso ultimate-edition-3.7-armhf.iso ultimate-edition-3.7-powerpc.iso ultimate-edition-3.8-x86-lite.iso ultimate-edition-3.8-x64-lite.iso ultimate-edition-3.8-x86-gamers.iso ultimate-edition-3.8-x64-gamers.iso ultimate-edition-3.8-x64.iso ultimate-edition-3.8-x86.iso ultimate-edition-3.8-armel.iso ultimate-edition-3.8-armhf.iso ultimate-edition-3.8-powerpc.iso ultimate-edition-3.9-x86-lite.iso ultimate-edition-3.9-x64-lite.iso ultimate-edition-3.9-x86-gamers.iso ultimate-edition-3.9-x64-gamers.iso ultimate-edition-3.9-x64.iso ultimate-edition-3.9-x86.iso ultimate-edition-3.9-armel.iso ultimate-edition-3.9-armhf.iso ultimate-edition-3.9-powerpc.iso ultimate-edition-4.0-x86-lite.iso ultimate-edition-4.0-x64-lite.iso ultimate-edition-4.0-x86-gamers.iso ultimate-edition-4.0-x64-gamers.iso ultimate-edition-4.0-x64.iso ultimate-edition-4.0-x86.iso ultimate-edition-4.0-armel.iso ultimate-edition-4.0-armhf.iso ultimate-edition-4.0-powerpc.iso ultimate-edition-4.1-x86-lite.iso ultimate-edition-4.1-x64-lite.iso ultimate-edition-4.1-x86-gamers.iso ultimate-edition-4.1-x64-gamers.iso ultimate-edition-4.1-x64.iso ultimate-edition-4.1-x86.iso ultimate-edition-4.1-armel.iso ultimate-edition-4.1-armhf.iso ultimate-edition-4.1-powerpc.iso ultimate-edition-4.2-x86-lite.iso ultimate-edition-4.2-x64-lite.iso ultimate-edition-4.2-x86-gamers.iso ultimate-edition-4.2-x64-gamers.iso ultimate-edition-4.2-x64.iso ultimate-edition-4.2-x86.iso ultimate-edition-4.2-armel.iso ultimate-edition-4.2-armhf.iso ultimate-edition-4.2-powerpc.iso ultimate-edition-4.3-x86-lite.iso ultimate-edition-4.3-x64-lite.iso ultimate-edition-4.3-x86-gamers.iso ultimate-edition-4.3-x64-gamers.iso ultimate-edition-4.3-x64.iso ultimate-edition-4.3-x86.iso ultimate-edition-4.3-armel.iso ultimate-edition-4.3-armhf.iso ultimate-edition-4.3-powerpc.iso ultimate-edition-4.4-x86-lite.iso ultimate-edition-4.4-x64-lite.iso ultimate-edition-4.4-x86-gamers.iso ultimate-edition-4.4-x64-gamers.iso ultimate-edition-4.4-x64.iso ultimate-edition-4.4-x86.iso ultimate-edition-4.4-armel.iso ultimate-edition-4.4-armhf.iso ultimate-edition-4.4-powerpc.iso ultimate-edition-4.5-x86-lite.iso ultimate-edition-4.5-x64-lite.iso ultimate-edition-4.5-x86-gamers.iso ultimate-edition-4.5-x64-gamers.iso ultimate-edition-4.5-x64.iso ultimate-edition-4.5-x86.iso ultimate-edition-4.5-armel.iso ultimate-edition-4.5-armhf.iso ultimate-edition-4.5-powerpc.iso ubuntu-desktop-12.04-x86.iso ubuntu-desktop-12.04-x64.iso ubuntu-desktop-12.04-armel.iso ubuntu-desktop-12.04-armhf.iso ubuntu-desktop-12.04-powerpc.iso ubuntu-desktop-12.10-x86.iso ubuntu-desktop-12.10-x64.iso ubuntu-desktop-12.10-armel.iso ubuntu-desktop-12.10-armhf.iso ubuntu-desktop-12.10-powerpc.iso ubuntu-desktop-13.04-x86.iso ubuntu-desktop-13.04-x64.iso ubuntu-desktop-13.04-armel.iso ubuntu-desktop-13.04-armhf.iso ubuntu-desktop-13.04-powerpc.iso ubuntu-desktop-13.10-x86.iso ubuntu-desktop-13.10-x64.iso ubuntu-desktop-13.10-armel.iso ubuntu-desktop-13.10-armhf.iso ubuntu-desktop-13.10-powerpc.iso ubuntu-desktop-14.04-x86.iso ubuntu-desktop-14.04-x64.iso ubuntu-desktop-14.04-armel.iso ubuntu-desktop-14.04-armhf.iso ubuntu-desktop-14.04-powerpc.iso ubuntu-desktop-14.10-x86.iso ubuntu-desktop-14.10-x64.iso ubuntu-desktop-14.10-armel.iso ubuntu-desktop-14.10-armhf.iso ubuntu-desktop-14.10-powerpc.iso " $cur ) )
         return 0
         ;;
      --e*)
         COMPREPLY=( $( compgen -f $cur ) )
         # complete on deb files
         COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      -e)
         COMPREPLY=( $( compgen -f $cur ) )
         # complete on deb files
         COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      --h*)
         # complete on list of relevant options
         COMPREPLY=( $( compgen -W 'build clearcache extract help pull test upgrade version' ${cur_nodash#-} ) )
         #dashify;
         return 0
         ;;
      -h)
         # complete on list of relevant options
         COMPREPLY=( $( compgen -W 'build clearcache extract help pull test upgrade version' ${cur_nodash#-} ) )
         #dashify;
         return 0
         ;;
      -u)
         # relax short
         COMPREPLY=( $( compgen -d $cur ) )
         return 0
         ;;
      -t*)
         # standard filename completion
         COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      --t*)
         # long filename completion
         COMPREPLY=( $( compgen -G $cur\*.iso ) )
         return 0
         ;;
      esac
   fi
   case "${COMP_WORDS[2]}" in
   build)
      # standard filename completion
      COMPREPLY=( $( compgen -W '--defaultde=' ${cur_nodash#-} ) )
      return 0
      ;;
   esac
}
complete -F _tmosb tmosb


What does this do? I am not going to re-create the wheel, just drop a post from facebook is the quickest answer ATM:
tmosb --pullsource modify it to meet RhinoLINUX's needs and dont look back. Let it do your work for you. I wrote bash autocompletion for it this eve. Tap the tab key twice and presentation begins.
theemahn@JackHammer:~$ tmosb --build u
Display all 138 possibilities? (y or n)

What would happen if I added a simple letter L?
theemahn@JackHammer:~$ tmosb --build ultimate-edition-
Display all 108 possibilities? (y or n)

Ok, so 30 O/S's are Ubuntu that it will build. Rhino can be a chunk. Is that what you are looking for. Pulling source will not do that for you.


Adding RhinoLinux to this mix makes it so a simple letter r starts to reveal rhino-linux or what ever convention you choose to implement. I suggest you implement rhino-linux v/s Rhino-Linux, unix friendly is the first implementation. I'm not telling you what to do, but take it from a veteran it is in your best intrest to do so. Look above and see what the computer kicks based on info provided, what would have happened if I said yes?
theemahn@JackHammer:~$ tmosb --build ultimate-edition-
Display all 108 possibilities? (y or n)
ultimate-edition-3.4-armel.iso ultimate-edition-3.6-armel.iso ultimate-edition-3.8-armel.iso ultimate-edition-4.0-armel.iso ultimate-edition-4.2-armel.iso ultimate-edition-4.4-armel.iso
ultimate-edition-3.4-armhf.iso ultimate-edition-3.6-armhf.iso ultimate-edition-3.8-armhf.iso ultimate-edition-4.0-armhf.iso ultimate-edition-4.2-armhf.iso ultimate-edition-4.4-armhf.iso
ultimate-edition-3.4-powerpc.iso ultimate-edition-3.6-powerpc.iso ultimate-edition-3.8-powerpc.iso ultimate-edition-4.0-powerpc.iso ultimate-edition-4.2-powerpc.iso ultimate-edition-4.4-powerpc.iso
ultimate-edition-3.4-x64-gamers.iso ultimate-edition-3.6-x64-gamers.iso ultimate-edition-3.8-x64-gamers.iso ultimate-edition-4.0-x64-gamers.iso ultimate-edition-4.2-x64-gamers.iso ultimate-edition-4.4-x64-gamers.iso
ultimate-edition-3.4-x64.iso ultimate-edition-3.6-x64.iso ultimate-edition-3.8-x64.iso ultimate-edition-4.0-x64.iso ultimate-edition-4.2-x64.iso ultimate-edition-4.4-x64.iso
ultimate-edition-3.4-x64-lite.iso ultimate-edition-3.6-x64-lite.iso ultimate-edition-3.8-x64-lite.iso ultimate-edition-4.0-x64-lite.iso ultimate-edition-4.2-x64-lite.iso ultimate-edition-4.4-x64-lite.iso
ultimate-edition-3.4-x86-gamers.iso ultimate-edition-3.6-x86-gamers.iso ultimate-edition-3.8-x86-gamers.iso ultimate-edition-4.0-x86-gamers.iso ultimate-edition-4.2-x86-gamers.iso ultimate-edition-4.4-x86-gamers.iso
ultimate-edition-3.4-x86.iso ultimate-edition-3.6-x86.iso ultimate-edition-3.8-x86.iso ultimate-edition-4.0-x86.iso ultimate-edition-4.2-x86.iso ultimate-edition-4.4-x86.iso
ultimate-edition-3.4-x86-lite.iso ultimate-edition-3.6-x86-lite.iso ultimate-edition-3.8-x86-lite.iso ultimate-edition-4.0-x86-lite.iso ultimate-edition-4.2-x86-lite.iso ultimate-edition-4.4-x86-lite.iso
ultimate-edition-3.5-armel.iso ultimate-edition-3.7-armel.iso ultimate-edition-3.9-armel.iso ultimate-edition-4.1-armel.iso ultimate-edition-4.3-armel.iso ultimate-edition-4.5-armel.iso
ultimate-edition-3.5-armhf.iso ultimate-edition-3.7-armhf.iso ultimate-edition-3.9-armhf.iso ultimate-edition-4.1-armhf.iso ultimate-edition-4.3-armhf.iso ultimate-edition-4.5-armhf.iso
ultimate-edition-3.5-powerpc.iso ultimate-edition-3.7-powerpc.iso ultimate-edition-3.9-powerpc.iso ultimate-edition-4.1-powerpc.iso ultimate-edition-4.3-powerpc.iso ultimate-edition-4.5-powerpc.iso
ultimate-edition-3.5-x64-gamers.iso ultimate-edition-3.7-x64-gamers.iso ultimate-edition-3.9-x64-gamers.iso ultimate-edition-4.1-x64-gamers.iso ultimate-edition-4.3-x64-gamers.iso ultimate-edition-4.5-x64-gamers.iso
ultimate-edition-3.5-x64.iso ultimate-edition-3.7-x64.iso ultimate-edition-3.9-x64.iso ultimate-edition-4.1-x64.iso ultimate-edition-4.3-x64.iso ultimate-edition-4.5-x64.iso
ultimate-edition-3.5-x64-lite.iso ultimate-edition-3.7-x64-lite.iso ultimate-edition-3.9-x64-lite.iso ultimate-edition-4.1-x64-lite.iso ultimate-edition-4.3-x64-lite.iso ultimate-edition-4.5-x64-lite.iso
ultimate-edition-3.5-x86-gamers.iso ultimate-edition-3.7-x86-gamers.iso ultimate-edition-3.9-x86-gamers.iso ultimate-edition-4.1-x86-gamers.iso ultimate-edition-4.3-x86-gamers.iso ultimate-edition-4.5-x86-gamers.iso
ultimate-edition-3.5-x86.iso ultimate-edition-3.7-x86.iso ultimate-edition-3.9-x86.iso ultimate-edition-4.1-x86.iso ultimate-edition-4.3-x86.iso ultimate-edition-4.5-x86.iso
ultimate-edition-3.5-x86-lite.iso ultimate-edition-3.7-x86-lite.iso ultimate-edition-3.9-x86-lite.iso ultimate-edition-4.1-x86-lite.iso ultimate-edition-4.3-x86-lite.iso ultimate-edition-4.5-x86-lite.iso
theemahn@JackHammer:~$ tmosb --build ultimate-edition-


Ready for mass input on a lazy level ;) Stops asking as you close the gap:
theemahn@JackHammer:~$ tmosb --build ultimate-edition-4.5-
ultimate-edition-4.5-armel.iso ultimate-edition-4.5-powerpc.iso ultimate-edition-4.5-x64.iso ultimate-edition-4.5-x86-gamers.iso ultimate-edition-4.5-x86-lite.iso
ultimate-edition-4.5-armhf.iso ultimate-edition-4.5-x64-gamers.iso ultimate-edition-4.5-x64-lite.iso ultimate-edition-4.5-x86.iso
theemahn@JackHammer:~$ tmosb --build ultimate-edition-4.5-


What you see above is the difference between a good programmer and a great programmer. I don't want to be hindered, nor do I want our users to be hindered by convention simple as that. I'm sure I have said this before, I will spend 10 hours writing software that will save me or someone else 10 minutes on the keyboard. I can promise you it is with good reason I do so.
Home of Ultimate Edition. Got a question? Please review the F.A.Q. Browse the How to section.

Main O/S: Builder of O/S Guess.
Mainboard: ASUS Sabertooth 990FX TUF (The Ultimate Force) R2.0
CPU: AMD FX 8150 Bulldozer Eight Core Black Edition
Ram: 16 GB GSkill Ripjaws Dual Channel DDR3 2133
Video: 2 X ATI 7770HD GHZ Edition 1GB PCI 3.0 Crossfire (main cards) various others for testing
Hard Disks: Over 30 TB Mechanical and Multiple SSD's. (Sans Digital 32TB raid tower - dual Esata)
Raid: Onboard 10 sata / e-sata ports, HighPoint RocketRAID 640 PCI-Express 2.0 x4 SATA III (6.0Gb/s)
custom software mirrored - tmbackup
Monitors: 4K Samsung 28", HannsG HH281, Various others
730 Watt modular PSU
700 Watt Amp & 4 X 600 Watt speakers
User avatar
TheeMahn
Site Admin
 
Posts: 4193
Joined: Fri Oct 12, 2007 10:02 am
Location: U.S.A.
Age: 46
Operating System: Ultimate Edition Developer



Re: TheeMahn's O/S Builder

Postby XXxjoker21xXX » Wed Apr 19, 2017 6:34 am

I have yet to get the New 1.9.8 TMOSB to finish a build it hangs at core files and once i got it past that when testing the iso it doesn't go past the boot menu tried building from 5.1 to 5.5 !
AMD FX8370 BEAST @ 4.9ghrz in a Asus Sabertooth 990FX r2 Motherboard with 16 gigs of Mushkin Enhanced Blackline 2400mghrz ram and XFX Radeon R9 390X DD Black Edition GPU with 10 Hard drives running Win10, Manjaro, Ultimate Edition 5.0 custom, Ultimate Edition 5.1 and others....
User avatar
XXxjoker21xXX
U.E. Newbie
U.E. Newbie
 
Posts: 13
Joined: Tue Dec 13, 2016 9:17 pm
Operating System: Ultimate Edition Beta Tester


Return to Programming

Who is online

Users browsing this forum: No registered users and 1 guest