added autopackage-related files

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-10-22 20:43:01 +00:00
parent f540e5bd06
commit f8b35b7b9a
8 changed files with 493 additions and 0 deletions

View File

@ -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.

View File

@ -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 $@

View File

@ -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.

View File

@ -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

View File

@ -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>

View File

@ -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);
}

View File

@ -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

View 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
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