Historical EuShip, Revision 2

EuShip

Building a deploy-able package should not be difficult. However, because Euphoria is both cross platform and potentially compiled, there is a need for a Package Tool that addresses these concerns. EuShip is that tool.

Who is this tool for?

This tool is for developers that want to create installers for their program that does not rely on 3rd party package managers, such as RPM or DEB. The user of this tool does not want to rely on any preexisting tool to be present on the target machine other than what would have been installed by default during a clean OS install. The user of this tool does not wish to restrict the end user to installing software in any particular location on the target machine. The developer using this tool probably also uses the EuDrop Project during his development process.

How it works

When you are developing a project designed for EuShip, you will be expected to have at least the following directories/files.

└── MyProject/ 
    ├── dist/ 
    ├── installersrc/ 
    └── euship.xml 

EuShip comes tools that make building a complete EuShip project from scratch super easy. In particular a default EuShip project resembles the following directory structure.

└── MyProject/ 
    ├── bin/ 
    ├── build/ 
    ├── demo/ 
    ├── dist/ 
    ├── docs/ 
    ├── include/ 
    ├── installerbin/ 
    ├── installersrc/ 
    ├── resources/ 
    ├── src/ 
    ├── test/ 
    ├── euship.xml 
    └── Makefile 

When this recommended directory structure is used by the developer and the developer is also using EuDrop for library management, EuShip can easily automate most of your package building needs.

Metadata related to the project is stored in the euship.xml file. This data includes information such as supported platforms, version information, description, and other such information. Most importantly, euship.xml includes a URL to an online resource hosting the project. Github is recommended for this purpose but that is not required. For example https://github.com/xecronix/myproject/blob/master/dist/

TODO: investigate if Euphoria does https out of the box without additional dlls. May need to link libcurl.

When you create a package using EuShip it will automatically create zip packages of your program and a file named eushipper.ex in the installersrc/ directory.

├── bin 
├── build 
├── demo 
├── dist 
│   ├── linMyProject.zip 
│   ├── macMyProject.zip 
│   └── winMyProject.zip 
├── docs 
├── include 
├── installerbin 
│   ├── linshipper.ex 
│   ├── macshipper.ex 
│   └── winshipper.ex 
├── installersrc 
│   ├── eushipper.ex 
│   └── Makefile 
├── resources 
├── src 
├── test 
├── euship.xml 
└── Makefile 

You're are free to examine that program and make any needed changes or add features required for your installer. When you are satisfied that the installer will perform the tasks needed to install your program EuShip will run the Makefile and create your installer. Essentially what the eushipper.ex program accomplishes by default are the following tasks.

  • Download a zip version of your software found at the URL resource identified in the euship.xml metadata (for a specific platform)
  • Prompt the user for an install directory and provide reasonable defaults.
  • Unzip

EuShip will use make to cross compile the eushipper.ex script to an executable program. One program will be generated for each platform you program supports. The compiled executable will be found in the installerbin/ bin directory.

├── installerbin/ 
│   ├── linshipper 
│   ├── macshipper 
│   └── winshipper.exe 
 

Simply distribute the shipper program to your users to have your program automatically installed.

Why zip format? The resulting installer binaries are statically linked against libzip in order meet so as not to rely on any particular soft being installed on the target system.

Guidelines

What follows is a set of recommended guidelines to make working with EuShip as easy, breezy and most importantly automated as possible.

TODO: Write best practices.

Not Categorized, Please Help

Search



Quick Links

User menu

Not signed in.

Misc Menu