FlagShip 7 (Visual FlagShip) for Linux -------------------------------------- FlagShip is cross-platform Database Development System supporting common xBase syntax and databases. It has three different i/o engines, which enables you to run the same application in GUI, Textual or Basic (CGI/Web) mode. FlagShip ensures that all your source code and databases are 100% cross-compatible to other OS. Ports for all common Unix systems including Linux are available, same as 32-bit MS-Windows port. You simply re-compile the application on the target system to get stand-alone executable, which can be freely redistributed (with the PRO license, see license.html or http://www.fship.com/license.html). For requirements and installation, please read the INSTALL file first. 1. Requirements --------------- a. There are different FlagShip ports for 32bit and 64bit Linux systems available, depending on the used kernel, glibc and gcc. Please see details in the INSTALL file and http://www.fship.com/linux.html Minimal requirements are same as for the target Linux system: approx Pentium/Celeron/AMD 200MHz (faster is suggested), 256MB RAM (more is suggested), approx 60MB free hard disk space, VGA or better graphic. For the GUI i/o mode, X11 system needs to be installed, otherwise you may use the Terminal (and Basic) i/o mode only. 64bit systems are supported as well, see para 5.g below or http://www.fship.com/linux64bit.html b. This port requires installed gcc (it version depends on the port) with accompanying libraries to be able to develop with FlagShip. For GUI mode, also the g++ development package is required. Installing the make utility is highly recommended. c. During the installation, you will be asked to enter your license data, i.e. the Serial Number and Activation Key. If you don't have it yet, obtain the free Eval license via http://www.fship.com/eval.html According to License terms, you may install the FlagShip package on a single computer and use it by single programmer/developer. Add-on and group licenses are available. d. The by FlagShip produced application is a stand-alone executable and hence does not require any C compiler nor other tools. The produced application will run on Linux 32-bit system (either in GUI or textual or basic mode). Note: To create executables for other operating systems (like MS- Windows, SUN, SCO, IBM, HP etc), you only need to obtain FlagShip port and license for the target operating system and re-compile. e. The executable created by the Eval or Personal license can only be executed on the same computer where FlagShip is installed. This restriction does NOT apply for the usual PRO license, where you may freely use or distribute the created applications according to your needs. See also LICENSE.txt or http://www.fship.com/license.html f. The on-line manual is accessible via "fsman". You will find there additional information. See also section 3 below. 2. Installation, Deinstallation ------------------------------- a. The installation can either be done by the 'rpm' packager (suggested) or by tar based installation. Please see all details in the INSTALL file. b. To uninstall FlagShip, simply invoke the un-installer "FS7uninstall" as described in detail in the INSTALL file. Further details are available in the on-line manual "fsman" section REL after installation, or alternatively in the ascii file relnotes.asc 3. Documentation, next issues ----------------------------- a. Short information is available in /docu/how-to*.txt files, where is the directory where FlagShip was installed (usually /usr/local/FlagShip7). Read these how-to* text files (less how-to*) first for an overview. b. A full documentation is available in the on-line manual named 'fsman'. It is available also in .pdf format in /manual/fsman.html or via http://www.fship.com/manual.html and/or as printed manual with more than 2500 pages. c. For porting available Clipper sources to FlagShip, refer to fsman section LNG.9.6 (Porting to Linux step-by-step) 4. Step-by-step instruction --------------------------- Once your FlagShip for Linux was successfully installed 1) Open the KDE or Gnome console when using X11 environment 2) Test and study supplied examples in the examples and tools directory cd /usr/local/FlagShip7/examples less README make clean ; make and optional for terminal i/o mode make terminal 3) select your work directory in the console window (1): cd /your/working/directory 4) create a small test program in (3) using your preferred editor (or vi, emacs, nedit, jedit, gedit etc), save as hello.prg (or copy the supplied source from /usr/local/FlagShip7/examples/hello.prg): // hello.prg ? "Hello world !" wait quit // eof 5) invoke the compiler: FlagShip hello.prg -o hello 6) if no errors occurs in (5), invoke: ./hello # auto mode, usually GUI ./hello -io=t # terminal i/o mode newfswin ./hello # terminal i/o mode with PC8 charset ./hello -io=b # basic i/o mode 7) if (5) was ok, you are ready to compile your application by the same way, e.g. invoke in (1)+(3) FlagShip -v myapplic.prg ; ./a.out where myapplic.prg is your main program, or e.g. FlagShip -m *.prg -Mmymain -o myapplic where mymain is your start procedure, see fsman sect. FSC for details 8) if errors occurred in (5) or (7), first check for typos in the source and compiler invocation, the compiler will display syntax errors in readable form. If everything seems correct, a) Read section FSC in the on-line FlagShip manual fsman and FAQs in http://www.fship.com/faq_vfs.html b) Invoke script error.log uname -a env FlagShip -v -q ...your switches and data... exit #the script by the same way as in (5) or (7) but with additional -v -q switches. It creates log file named 'error.log' located in the current directory. c) Describe your problem in plain textual e-mail and forward the error.log file as binary attachment to your mail. Best to attach also the .prg source file causing your problem. Address you mail to - we grant free technical support as stated below. d) Don't forget to register your FlagShip if not done yet, i.e. fill-in and forward the /usr/local/FlagShip7/docu/REGCARD file as well with your support request. 9) If you have enabled SELinux, and get "error while loading shared libraries: /usr/lib/libFlagShip7*.so: cannot restore segment prot after reloc: Permission denied" at the time of invoking dynamically linked executable, you need to modify the SELinux policy to permit loading of shared libraries. This is a SELinux feature. Invoke in terminal su -c "chcon -t textrel_shlib_t /usr/local/FlagShip7/lib/libFlagShip7*.so" 5. Release Info --------------- a. This Visual FlagShip version 7 is fully data and source compatible to Visual FlagShip 7 for MS-Windows/MSVC6 or BCC32 or other operating systems. b. This release supports statically or dynamically linked executables, see details in fsman section FSC.1.7 for the difference and advantages of each. c. Notes for Visual FlagShip, Environment: When the application is compiled/linked in hybrid mode, i.e. when it support all available i/o modes (see 1), you may override the auto-detection by -io=[g/t/b] parameter, e.g.: a.out -io=t params... Of course, running GUI mode in non-X11 environment is not possible and it gives corresponding message. Running Terminal i/o mode in X11 is possible by the same way as with FS4 to FS6, i.e. you may also use the newfswin script. The Basic i/o mode is mainly designed for background and CGI/Web operation and is comparable to FS4 with disabled Curses. On some Linux systems, the LANG environment variable is set to Unicode. This may cause display problems for national characters and PC8 graphic characters in Terminal i/o mode. Since the start-up scripts 'newfswin', 'newfscons' and 'newfsterm' (see fsman section REL for details) checks and temporarily set proper LANG, we strongly suggest to use these utils in Terminal i/o mode. Otherwise check "echo $LANG" and if it displays e.g. en_US.UTF-8, set "export LANG=en_US.iso-8859-1". Some systems (like RedHat) also sets Unicode in /etc/profile.d/lang.sh. If so, comment-out there (by prefacing '#') the line: unicode_start $SYSFONT $SYSFONTACM In SuSE, Unicode my be set/disabled in yast/System/Language/Details d. Backward compatibility and multiple FlagShip installations: VFS7 can be installed parallely to VFS6, VFS5 or FS4, although not suggested. The main directory is /usr/local/FlagShip7 as opposite to /usr/local/FlagShip6 of VFS6. For your convenience, the installer script (fsinstall or make, see INSTALL) creates links for compiler to /usr/bin and libraries to /usr/lib. If the installer detects some older FlagShip version in /usr/bin, it creates symbolic link FlagShip7 there instead of FlagShip, so you will need to invoke the compiler by "FlagShip7" or "FS7" instead of "FlagShip" in such a case. When you already have FS4, FS5 or FS6 Makefile's or compilation scripts, you may continue to use them "as is" when unistalling FlagShip 6, 5 and 4.48 (in this order). The only difference is the name if the libraries which changed from libFlagShip.* to libFlagShip7.* but this is usually taken from the FS7config file and set accordingly. Otherwise, if you want to use installed FS4.48, FS5, FS6 _and_ FS7, you have two choices: a) create copy of your Makefile's or scripts for FS7 and change the FlagShip compiler invocation in these Makefile's or scripts from "FlagShip" to "FlagShip7" or to "FS7" to compile by FS7. b) alternatively, you may set export PATH=/usr/local/FlagShip7:$PATH for compiling by the same scripts or Makefile's as with previous FS versions. To make these alternative settings permanent for the current user, include this line in $HOME/.bashrc or $HOME/.profile To avoid conflicts and linking problems, the suggestion (5a) should be preferred. Please note, the object files and FS libraries are incompatible between FS4, FS5, FS6 and FS7. For multiple FS installation, we suggest to create one common source and different object directories for FS4, FS5, FS6 and FS7, where (in the object dirs) the sources are symbolic links to the same named files in the source dir. You can then compile the required executable by FlagShip 4.48 or by FlagShip 5..7 in the corresponding directory by the same/different/modified Makefiles or scripts. If you have modified the former [/etc/]FS*config file, check the changes against /usr/local/FlagShip7/FS7config Since the used ncurses 5.5 in the FS7*_26 port differs from ncurses used in FS4.48, FS6*_24 and FS7*_24, use for terminal i/o applications (apply with multiple FlagShip installations on the same computer): - default terminfo entries in /usr/share/terminfo for FS4, FS5 and FS6*_24, FS7*_24applications - export FSTERMINFO=/usr/local/FlagShip7/terminfo for applications created by FS7*_26 or FS6*_26 version with ncurses 5.5 These settings are considered in newfswin and newfscons scripts. e. Most significant differences of FS7 to FS6: - The file structure is very similar to VFS6 - VFS7 is backward source compatible - Databases (.dbf, .dbt, .dbv) and indices (.idx) are fully compatible to VFS6 - The compiler pre-defines #define FlagShip, in the FS7config there are additionally defined FlagShip7, FlagShip6 and FlagShip5, so you may distinguish by e.g. #ifdef FlagShip7 at compile time different code. - For the *_26 port with gcc 2.4 and glibc 2.8 and newer, there are no compatibility libraries required anymore. - There are several new commands, functions and features in FS6 not available in previous FS versions (see CHANGES.LOG for details), most significant are heavy extended graphical features and advanced printing functions via PrintGui() comparable to screen output. f. Most significant differences of FS6 to FS5: - The compiler pre-defines #define FlagShip6 instead of FlagShip5. To be backward source compatible, there is -DFlagShip5 switch available in the FS6config file. If you wish to determine FlagShip6 only, remove this switch. - There are several new commands, functions and features in FS6 not available in previous FS versions, see fsman section REL. - The extended dbf structure (i.e. variable and compressed character or binary/blob fields) are not backward compatible. Avoid it use when you have FS4/FS5 applications accessing the same database. - The indices and locking are backward compatible to FS5 but not to FS4. - The curses 5.5 database is incompatible to curses 1.94 used in VFS5, see details in chapter 5.d above. - The sources and databases/indices are fully cross-compatible to FlagShip 6 for MS-Windows. g. Most significant differences to FS4: - When you are upgrading from FlagShip 4.4x, you will need to rebuild (re-compile and link) your sources. - The source code is fully backward compatible to all previous FlagShip versions, although there are many new commands, functions and classes available in FS6 which are not available in FS4. If you need to manage also older sources, you can use the preprocessor directive #ifdef FlagShip6 ... [#else ...] #endif which is true for and hence compiles FS6 part of the code only. The general #ifdef FlagShip ... #endif directive as well as the "FlagShip" variable (if Flagship ... else ... endif) remain valid too to on-line decide between FlagShip and other compilers (like Clipper). - To get proper GUI look and feel, the colors and line drawing via extended PC8 character set is disabled in the GUI mode per default, but you can explicitly enable it at any time, see SET GUI* commands and Set() function in the on-line manual 'fsman'. The current i/o mode can be tested at run-time via AppIoMode() which return "G" or "T" or "B" for GUI, Terminal or Basic i/o mode. - The start-up settings are fully transparent and available in the initio.prg source. Also the automatic menu creation is modifiable in initiomenu.prg, both in the /usr/local/FlagShip6/system directory. - The databases (.dbf, .dbt) are fully compatible to FS4 and Clipper. - The .idx index structure was reworked to support ANSI/ISO conversion and is significantly faster than in FS4. You will need to re-build the indices (INDEX ON..TO..) at the first start of FS6 application. - The curses 5.5 database is incompatible to curses 1.94 used in 4.48, see details in chapter 5.d above. - All the new FS6 features are documented in the on-line manual 'fsman' in section 'REL'. h. Using FlagShip 6.x with 64bit Linux FlagShip is ported on 32bit Linux, since it ensures so compatibility to all current x86 Linux versions. Also, 32bit code is commonly faster than 64bit code. You can use FlagShip 6.x also for development on 64bit x86 based Linux system (AMD64, Xeon etc) : 1. install 32bit libraries from your 64bit Linux distribution For details, please refer to your system manual/documentation or e.g. to http://www.amd.com/us-en/assets/content_type/DownloadableAssets/ dwamd_AMD64_Porting_FAQ.pdf or http://www-uxsup.csx.cam.ac.uk/pub/doc/ suse/suse9.3/suselinux-adminguide_en/cha.64bit.html which says: To develop binaries for the other architecture on a biarch architecture, the respective libraries for the second architecture must additionally be installed. These packages are called (in SuSE) rpmname-32bit . For development, you also need the respective headers and libraries from the rpmname-devel packages and the development libraries for the second architecture from rpmname-devel-32bit. 2. add the switch -m32 to CCNAME in FS6config file Once the 32-bit libraries are installed on your 64-bit system, add the switch -m32 to cc (gcc) in line#13 of /usr/local/FlagShip6/etc/FS6config file to read e.g. CCNAME : cc -pipe -m32 3. check the library path The 32bit system libs are usually installed in the common /usr/lib and 64bit libs in /usr/lib64. If you use other dirs, add the switch -L/usr/lib32 (or whichever 32bit directory is used) in front of MACRO1 in line#17 of the FS6config file. Note that the order of lib dirs is significant for linker search (hence 32bit must be in front). The above steps are required for development stage only. You and your customers will be able to execute the application on 32bit and 64bit Linux systems. All the required run-time 32bit dynamic libs are usually installed automatically also on 64bit systems - if not so, install them according to step 1 above. When your application is linked statically, no additional libraries are required. 6. Support, Updates ------------------- Support: we grant 6 months (!) free technical support after purchase for the PRO license, and 30 days for the Personal and Eval license, or for Upgrades. Please preferably contact your local distributor or or otherwise, read the requirements in http://www.fship.com/support.html Updates: Please check frequently http://www.fship.com/whatsnew.html for updates, new releases and additional info. Enjoy. Read next: /usr/local/FlagShip6/docu/how-to* files and invoke 'fsman' for the on-line manual.