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 "Events generated by the user vs programmatically generated events" paragraph
in the "Event handling overview" topic for more info 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): All (GUI):
- Support for right-to-left text layout (started by Diaa Sami during Google Summer of - Support for right-to-left text layout (started by Diaa Sami during Google Summer of