]> git.saurik.com Git - wxWidgets.git/commitdiff
added autopackage-related files
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 20:43:01 +0000 (20:43 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Oct 2006 20:43:01 +0000 (20:43 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

distrib/autopackage/Readme.txt [new file with mode: 0644]
distrib/autopackage/makeautopackage [new file with mode: 0644]
distrib/autopackage/sample/README [new file with mode: 0644]
distrib/autopackage/sample/autopackage/default.apspec [new file with mode: 0644]
distrib/autopackage/sample/minimal.bkl [new file with mode: 0644]
distrib/autopackage/sample/minimal.cpp [new file with mode: 0644]
distrib/autopackage/wxgtk.apspec.in [new file with mode: 0644]
docs/changes.txt

diff --git a/distrib/autopackage/Readme.txt b/distrib/autopackage/Readme.txt
new file mode 100644 (file)
index 0000000..061b5e2
--- /dev/null
@@ -0,0 +1,13 @@
+ wxWidgets Autopackage
+ =====================
+
+ This directory contains the wxGTK autopackage of the latest
+ stable release.
+
+ An autopackage is an archive containing compiled binaries
+ which aims to be distribution-neutral and as much as compatible
+ as possible with linux systems.
+
+ For more info see http://www.autopackage.org.
+
+
diff --git a/distrib/autopackage/makeautopackage b/distrib/autopackage/makeautopackage
new file mode 100644 (file)
index 0000000..f2cb43d
--- /dev/null
@@ -0,0 +1,51 @@
+#!/bin/bash
+# Author: Francesco Montorsi <frm@users.sourceforge.net>
+
+rootdir=../..
+thisdir=distrib/autopackage
+currloc="http://biolpc22.york.ac.uk/pub/autopackage/wxgtk/"
+
+function reminder
+{
+    echo = REMINDER ===================================================
+    echo Now that the autopackage has been built successfully, remember
+    echo to upload the .meta, .package and .xml files to the
+    echo "    $currloc"
+    echo folder.
+    echo ==============================================================
+}
+
+function build_package
+{
+    me=`basename $0`
+    cd $rootdir
+    if [[ ! -f "config.status" ]]; then
+        echo $me: Running a fake configure just to create a config.status
+        echo $me: with a valid PACKAGE_VERSION set... please wait.
+        ./configure >/dev/null 2>&1
+    fi
+
+    if [[ "$1" = "--help" ]]; then
+        makeinstaller $@
+        exit 0
+    fi
+
+    # this will automatically update wxgtk.apspec from wxgtk.apspec.in
+    # using config.status script
+    makeinstaller $@ $thisdir/wxgtk.apspec
+
+    if [[ "$?" = "0" ]]; then
+        mv *.package *.xml *.meta $thisdir >/dev/null 2>&1
+        reminder
+    fi
+}
+
+function clean_previous
+{
+    rm -f wxgtk.apspec     # this was generated from wxgtk.apspec.in
+    rm -f *.xml *.package *.meta
+}
+
+
+clean_previous
+build_package $@
diff --git a/distrib/autopackage/sample/README b/distrib/autopackage/sample/README
new file mode 100644 (file)
index 0000000..388abf0
--- /dev/null
@@ -0,0 +1,29 @@
+
+ A simple autopackaged wxWidgets application
+ ==============================================================================
+
+ This directory contains the minimal wxWidgets sample program, a bakefile,
+ and an Autopackage spec file; this file shows you how to use them to create
+ the release of a wxWidgets-based application for Linux.
+
+ For more info about Autopackage refer to:
+  http://autopackage.org
+
+ A generic quick-start guide for non-wxWidgets based applications is at:
+  http://autopackage.org/developer-quickstart.html
+
+
+ Assuming you already have downloaded wxGTK port of wxWidgets, compiled it and
+ installed it, you need to install Autopackage and bakefile.
+ Search http://autopackage.org and http://bakefile.sourceforge.net for the download
+ page and grab the latest release.
+
+ Once you've got your development environment ready, just do from your shell:
+
+    bakefile -f gnu minimal.bkl     # to create the GNUmakefile for our app
+    makeinstaller                   # to create the Autopackage for our app
+
+ Yes: it's so easy. Now try to run "package install wxminimal-1.0-1.x86.package' and
+ admire your brand-new distro-neutral installer for Linux.
+
+
diff --git a/distrib/autopackage/sample/autopackage/default.apspec b/distrib/autopackage/sample/autopackage/default.apspec
new file mode 100644 (file)
index 0000000..acbb2d2
--- /dev/null
@@ -0,0 +1,99 @@
+# -*-shell-script-*-
+
+# RCS-ID:  $Id$
+# Author:  Francesco Montorsi <frm@users.sourceforge.net>
+# Purpose: A minimal Autopackage SPEC file which can be used as template
+#          for creating autopackages of wxWidgets-based applications.
+#          See http://www.autopackage.org for more information about Autopackage.
+#
+#          IMPORTANT: this spec file requires Autopackage 1.2 or later.
+
+
+# Notes about [Meta] section:
+# - if your project uses configure, you can use the @PACKAGE_VERSION@ string instead
+#   of a fixed value for the "SoftwareVersion:" key:
+
+[Meta]
+RootName: @site.org/appname:$SOFTWAREVERSION
+DisplayName: wxWidgets-based minimal program
+ShortName: wxminimal
+Maintainer: The wxWidgets Developers <devel@nowhere.com>
+Packager: Anonymous <anonymous@nowhere.com>
+Summary: wxMinimal is an example minimal program based on wxGTK.
+URL: http://www.site.org/
+License: wxWindows license
+SoftwareVersion: 1.0
+AutopackageTarget: 1.2
+Revision: 1
+PackageVersion: 1
+PackageFileName: $SHORTNAME-$SOFTWAREVERSION-$PACKAGEVERSION.x86.package
+
+
+[BuildPrepare]
+# if you need to link your executable with some static libraries, whose
+# order to the linker is important, then you should add a regexp matching
+# the name of that libraries using this env var:
+export APBUILD_RESOLVE_LIBPATH=".*mywxbasedlib.*"
+
+# libraries used by wxWidgets like tiff and expat should always be linked
+# statically (as they broke ABI recently - 9/2006)...
+export APBUILD_STATIC="tiff expat"
+
+# build in release mode against a stable release of wxGTK.
+# The wxGTK builds present in linux distributions are always compiled in
+# multilib, shared, unicode, release mode.
+# Thus your project needs to be compiled in release, unicode mode, too.
+#
+
+# run the commands to build your package using apbuild's tool instead of
+# the standard GCC compiler:
+make CXX="apg++" CPP="apgcc"
+make install prefix=$build_root
+
+# NB: if your project uses a configure script then you probably want to use
+#     the prepareBuild autopackage API instead:
+#
+#         prepareBuild --disable-debug --enable-unicode --with-wxdir=/some/path/to/wxGTK/2.6.x
+#
+
+
+[BuildUnprepare]
+make clean
+
+# NB: if your project uses a configure script then you probably want to use
+#     the unprepareBuild autopackage API instead
+
+
+[Imports]
+echo '*' | import
+
+
+[Prepare]
+# Check for dependencies which are dynamically linked to your projects; you don't
+# need to check for statically linked projects.
+
+# Now you need to check for presence of wxGTK libraries; that's done using:
+#    require @wxwidgets.org/wxgtk 26.0
+#
+# NOTE: the interface version that you specify must be in form A.B where A is
+#       the major##minor version of wxGTK. This is because binary compatibility
+#       of wxGTK libraries are reserved only among different releases of the
+#       same major and minor versions.
+#       So that if you need at least wxGTK 2.6.3, you should e.g. use the
+#       "require @wxwidgets.org/wxgtk 26.3" command
+#
+require @wxwidgets.org/wxgtk 26.0
+
+# wxGTK requires GTK+ 2.0 but you don't need to add the:
+#     require @gtk.org/gtk 2.0
+# check to your apspec - if wxGTK is installed, also GTK is.
+
+
+
+[Install]
+# Put your installation script here
+installExe bin/minimal
+
+[Uninstall]
+# Usually just the following line is enough to uninstall everything
+uninstallFromLog
diff --git a/distrib/autopackage/sample/minimal.bkl b/distrib/autopackage/sample/minimal.bkl
new file mode 100644 (file)
index 0000000..4750ba7
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" ?>
+<!-- $Id$ -->
+
+<makefile>
+
+    <include file="presets/wx.bkl"/>
+
+    <exe id="minimal" template="wx">
+        <app-type>gui</app-type>
+        <debug-info>on</debug-info>
+        <runtime-libs>dynamic</runtime-libs>
+
+        <sources>minimal.cpp</sources>
+
+        <wx-lib>core</wx-lib>
+        <wx-lib>base</wx-lib>
+
+        <install-to>$(BINDIR)</install-to>
+    </exe>
+
+</makefile>
diff --git a/distrib/autopackage/sample/minimal.cpp b/distrib/autopackage/sample/minimal.cpp
new file mode 100644 (file)
index 0000000..4825c00
--- /dev/null
@@ -0,0 +1,182 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        minimal.cpp
+// Purpose:     Minimal wxWindows sample
+// Author:      Julian Smart
+// Modified by:
+// Created:     04/01/98
+// RCS-ID:      $Id$
+// Copyright:   (c) Julian Smart
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// ============================================================================
+// declarations
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+// For compilers that support precompilation, includes "wx/wx.h".
+#include "wx/wxprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+// for all others, include the necessary headers (this file is usually all you
+// need because it includes almost all "standard" wxWindows headers)
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif
+
+// ----------------------------------------------------------------------------
+// resources
+// ----------------------------------------------------------------------------
+
+
+// ----------------------------------------------------------------------------
+// private classes
+// ----------------------------------------------------------------------------
+
+// Define a new application type, each program should derive a class from wxApp
+class MyApp : public wxApp
+{
+public:
+    // override base class virtuals
+    // ----------------------------
+
+    // this one is called on application startup and is a good place for the app
+    // initialization (doing it here and not in the ctor allows to have an error
+    // return: if OnInit() returns false, the application terminates)
+    virtual bool OnInit();
+};
+
+// Define a new frame type: this is going to be our main frame
+class MyFrame : public wxFrame
+{
+public:
+    // ctor(s)
+    MyFrame(const wxString& title);
+
+    // event handlers (these functions should _not_ be virtual)
+    void OnQuit(wxCommandEvent& event);
+    void OnAbout(wxCommandEvent& event);
+
+private:
+    // any class wishing to process wxWindows events must use this macro
+    DECLARE_EVENT_TABLE()
+};
+
+// ----------------------------------------------------------------------------
+// constants
+// ----------------------------------------------------------------------------
+
+// IDs for the controls and the menu commands
+enum
+{
+    // menu items
+    Minimal_Quit = wxID_EXIT,
+
+    // it is important for the id corresponding to the "About" command to have
+    // this standard value as otherwise it won't be handled properly under Mac
+    // (where it is special and put into the "Apple" menu)
+    Minimal_About = wxID_ABOUT
+};
+
+// ----------------------------------------------------------------------------
+// event tables and other macros for wxWindows
+// ----------------------------------------------------------------------------
+
+// the event tables connect the wxWindows events with the functions (event
+// handlers) which process them. It can be also done at run-time, but for the
+// simple menu events like this the static method is much simpler.
+BEGIN_EVENT_TABLE(MyFrame, wxFrame)
+    EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)
+    EVT_MENU(Minimal_About, MyFrame::OnAbout)
+END_EVENT_TABLE()
+
+// Create a new application object: this macro will allow wxWindows to create
+// the application object during program execution (it's better than using a
+// static object for many reasons) and also implements the accessor function
+// wxGetApp() which will return the reference of the right type (i.e. MyApp and
+// not wxApp)
+IMPLEMENT_APP(MyApp)
+
+// ============================================================================
+// implementation
+// ============================================================================
+
+// ----------------------------------------------------------------------------
+// the application class
+// ----------------------------------------------------------------------------
+
+// 'Main program' equivalent: the program execution "starts" here
+bool MyApp::OnInit()
+{
+    // create the main application window
+    MyFrame *frame = new MyFrame(_T("Minimal wxWindows App"));
+
+    // and show it (the frames, unlike simple controls, are not shown when
+    // created initially)
+    frame->Show(true);
+
+    // success: wxApp::OnRun() will be called which will enter the main message
+    // loop and the application will run. If we returned false here, the
+    // application would exit immediately.
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+// main frame
+// ----------------------------------------------------------------------------
+
+// frame constructor
+MyFrame::MyFrame(const wxString& title)
+       : wxFrame(NULL, wxID_ANY, title)
+{
+    // set the frame icon
+
+#if wxUSE_MENUS
+    // create a menu bar
+    wxMenu *menuFile = new wxMenu;
+
+    // the "About" item should be in the help menu
+    wxMenu *helpMenu = new wxMenu;
+    helpMenu->Append(Minimal_About, _T("&About...\tF1"), _T("Show about dialog"));
+
+    menuFile->Append(Minimal_Quit, _T("E&xit\tAlt-X"), _T("Quit this program"));
+
+    // now append the freshly created menu to the menu bar...
+    wxMenuBar *menuBar = new wxMenuBar();
+    menuBar->Append(menuFile, _T("&File"));
+    menuBar->Append(helpMenu, _T("&Help"));
+
+    // ... and attach this menu bar to the frame
+    SetMenuBar(menuBar);
+#endif // wxUSE_MENUS
+
+#if wxUSE_STATUSBAR
+    // create a status bar just for fun (by default with 1 pane only)
+    CreateStatusBar(2);
+    SetStatusText(_T("Welcome to wxWindows!"));
+#endif // wxUSE_STATUSBAR
+}
+
+
+// event handlers
+
+void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
+{
+    // true is to force the frame to close
+    Close(true);
+}
+
+void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
+{
+    wxString msg;
+    msg.Printf( _T("This is the About dialog of the minimal sample.\n")
+                _T("Welcome to %s"), wxVERSION_STRING);
+
+    wxMessageBox(msg, _T("About Minimal"), wxOK | wxICON_INFORMATION, this);
+}
diff --git a/distrib/autopackage/wxgtk.apspec.in b/distrib/autopackage/wxgtk.apspec.in
new file mode 100644 (file)
index 0000000..c407d68
--- /dev/null
@@ -0,0 +1,93 @@
+# -*-shell-script-*-
+
+#
+# NOTE1:
+#  This apspec provides wxGTK locales and compiled libraries only;
+#  it does not provide headers nor wx-config since this package is not
+#  targeted to developers but rather end-users of wx-based applications.
+#  Also, making a -devel autopackage wouldn't be very useful given the
+#  big number of possible configurations for building wxWidgets...
+#
+# NOTE2:
+#  This wxGTK autopackage contains wx libraries built in
+#  Unicode, shared, multilib, release mode.
+#  This is because:
+#  1) UNICODE is better than ansi
+#  2) Autopackages of a library only have sense when shipping with SHARED libraries
+#  3) MULTILIB builds of wxWidgets are the default and suggested build mode
+#  4) Released applications should use RELEASE builds of wxWidgets not debug ones!
+#
+
+
+[Meta]
+RootName: @wxwidgets.org/wxgtk:$SOFTWAREVERSION
+DisplayName: wxGTK port of wxWidgets
+ShortName: wxgtk
+Maintainer: Francesco Montorsi <frm@users.sourceforge.net>
+Packager: Francesco Montorsi <frm@users.sourceforge.net>
+Summary: Library for cross-platform GUI programming (gtk2-unicode-release port)
+URL: http://www.wxwidgets.org/
+License: wxWidgets license
+SoftwareVersion: @PACKAGE_VERSION@
+PackageVersion: 1
+AutopackageTarget: 1.2
+Type: Library
+Revision: 1
+Compression: bzip2
+PackageFileName: $SHORTNAME-$SOFTWAREVERSION-$PACKAGEVERSION.x86.package
+
+# The interface of this port is majorminor.release; for more info about the interface version
+# look at the wxGTK skeleton.
+# NOTE: there *must* be no dot between the major and minor digits.
+InterfaceVersion: `getMajor $SOFTWAREVERSION``getMinor $SOFTWAREVERSION`.`getMicro $SOFTWAREVERSION`
+
+
+[BuildPrepare]
+export APBUILD_STATIC="tiff expat"
+export APBUILD_BOGUS_DEPS="Xi Xrandr Xcursor Xrender Xinerama"  # not really needed
+
+# For info why we give --enable-unicode --enable-shared --disable-debug options see note2 at beginning
+# of this file.
+# The --disable-dependency-tracking --disable-precomp-headers are because these things confuse apgcc.
+# The --with-libtiff=builtin --with-expat=builtin are because we want wxWidgets not to use the system's
+# version of these libraries: tiff has recently broken its ABI and must be linked statically, expat is
+# not always available.
+prepareBuild --enable-unicode --enable-shared --disable-debug --with-gtk --disable-dependency-tracking --disable-precomp-headers --with-opengl --with-gtk --with-libtiff=builtin --with-expat=builtin
+
+[BuildUnprepare]
+unprepareBuild
+
+
+[Imports]
+
+# remove stuff useless to final binary users: headers, wxwin.m4 and bakefile presets
+rm -rf include share/aclocal share/bakefile
+
+# this imports also some symlink which won't be used...
+# anyway symlinks give no problems since they won't be installed so it's not necessary
+# to complicate this section to exclude them...
+bash
+echo '*' | import
+
+
+[Prepare]
+# GTK+2 is the only requirement
+require @gtk.org/gtk 2.0
+
+
+[Install]
+# install wxrc-$SOFTWAREVERSION and its symbolic link
+installExe bin/wxrc*
+
+# install shared libraries (not symlinks - they are recreated by installLib!)
+installLib lib/*.so.*.*.*
+
+# install wx's things which goes in lib\ but are not libraries
+copyFiles lib/wx/* "$PREFIX/lib/wx"
+
+# install locales
+installLocale share/locale
+
+
+[Uninstall]
+uninstallFromLog
index 724aaf6f5c096199dbde67386d87ad0ca9cd8a6f..8fe35169b65bdd30f2fe9c6bd37dc420574e5bcd 100644 (file)
@@ -94,6 +94,11 @@ All:
   "Events generated by the user vs programmatically generated events" paragraph
   in the "Event handling overview" topic for more info
 
   "Events generated by the user vs programmatically generated events" paragraph
   in the "Event handling overview" topic for more info
 
+Unix Ports:
+
+- Added autopackage for wxGTK and an example of using autopackage for a wx
+  program (Francesco Montorsi)
+
 All (GUI):
 
 - Support for right-to-left text layout (started by Diaa Sami during Google Summer of
 All (GUI):
 
 - Support for right-to-left text layout (started by Diaa Sami during Google Summer of