~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to docs/Packages.txt

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Overview over the lazarus package system
2
 
========================================
3
 
 
4
 
What is a lazarus package:
5
 
  A lazarus package is a collection of units and components, containing
6
 
  information how they can be compiled and how they can be used by projects or
7
 
  other packages or the IDE. In contrary to Delphi, packages are not limited
8
 
  to libraries and they can be OS independent.
9
 
  (Delphi: a package is a specially compiled library used by applications,
10
 
  the IDE or both. Delphi packages require compiler magic, which fpc is not
11
 
  capable of at the moment and of course this magic is OS dependent.)
12
 
  
13
 
  Currently the FreePascal compiler only supports static packages. Therefore
14
 
  you must compile and restart the IDE, each time a package is installed or
15
 
  uninstalled.
16
 
 
17
 
  A lazarus package is distinguished by the name and its version.
18
 
 
19
 
--------------------------------------------------------------------------------
20
 
 
21
 
Quick Start:
22
 
============
23
 
 
24
 
To see the packagesystem in action and to get used to it, do the following:
25
 
 
26
 
- Create a new package:
27
 
  File->New... -> Package -> Standard Package
28
 
  A package editor opens
29
 
- Use the Save button at top left.
30
 
- Depending on your 'naming' setting in the 'environment options',
31
 
  the IDE will ask you to save the file lowercase. Say yes.
32
 
- Congratulations: You have just created your first package.
33
 
 
34
 
 
35
 
- Add a new component:
36
 
  - Use the Add button -> New component
37
 
  - Choose a component in the ancestor type combobox.
38
 
    For instance: TBevel.
39
 
  - Click Ok
40
 
    The file will be added to the package and opened
41
 
    in the editor
42
 
- Install the package by clicking the 'install' button in the top of the
43
 
  package editor.
44
 
  Lazarus will save the package and ask you,
45
 
  if the IDE should be rebuilt. Say yes.
46
 
  The packages are statically linked, so a restart of the IDE is needed.
47
 
- Restart Lazarus and see your new component in the component palette
48
 
  (For example: A TBevel1 will be on the 'Additional' page).
49
 
- Congratulations: You have just installed your first package with your first
50
 
  package component.
51
 
 
52
 
 
53
 
Now you can have a look at the new IDE items.
54
 
 
55
 
--------------------------------------------------------------------------------
56
 
 
57
 
 
58
 
The IDE menu items for packages:
59
 
================================
60
 
 
61
 
File->New... -> Package -> Standard Package
62
 
  Creates a new package.
63
 
 
64
 
Project -> Project Inspector
65
 
  Here you can see, what packages are required by the currently open project.
66
 
  You can add new dependencies and remove unneeded ones.
67
 
 
68
 
Run -> Compiler options -> Inherited
69
 
  Here you can see what compiler options are inherited from which package.
70
 
 
71
 
Components -> 5 new items
72
 
  - 'Open package'
73
 
    A dialog shows all open packages with their state.
74
 
    
75
 
  - 'Open package file'
76
 
    Open a .lpk file
77
 
    
78
 
  - 'Open recent package'
79
 
    Open a recently open package file (lpk file)
80
 
    
81
 
  - 'Package Graph'
82
 
    The package graph shows all open packages and their dependencies.
83
 
 
84
 
 
85
 
--------------------------------------------------------------------------------
86
 
 
87
 
The theory:
88
 
===========
89
 
 
90
 
- Each Lazarus package has a .lpk file. A package is identified by its name
91
 
and its version. The name must correspond to the lpk filename. For example:
92
 
Name: Package1, Version: 1.0, Filename: /home/.../package1.lpk.
93
 
The IDE automatically creates the main source file (package1.pas). See below.
94
 
 
95
 
- The lpk file contains information about the required packages, the files
96
 
it uses, how to compile them, and what is needed to use the package by
97
 
other packages/projects. The directory where the lpk file is, is called the
98
 
"package directory".
99
 
 
100
 
- The IDE maintains a list of all package files (packagelinks.xml). Everytime a
101
 
package is opened in the IDE it will be added to this list. When a package is
102
 
opened, the IDE automatically opens all required packages via this list.
103
 
 
104
 
- There are three base packages: FCL, LCL and SynEdit. These are parts of
105
 
the IDE and so they are autocreated, readonly and have no lpk file.
106
 
 
107
 
- Normally a package has a source directory with some pascal units. And
108
 
normally the lpk file will be there too. A package has also an output
109
 
directory. Default is the subdirectory 'lib' in the package directory.
110
 
 
111
 
- Before a package is compiled the IDE checks all required packages and if
112
 
they need update and have the auto update flag, they are compiled first.
113
 
Then the IDE creates the package main source file. If the lpk file was
114
 
package1.lpk, then the main source file is package1.pas. This file contains
115
 
all units in the uses section plus a 'Register' procedure, which is called in
116
 
the intialization section. For example:
117
 
 
118
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
119
 
{ This file was automatically created by Lazarus. Do not edit!
120
 
  This source is only used to compile and install
121
 
  the package GTKOpenGL 1.0.
122
 
}
123
 
 
124
 
unit GTKOpenGL;
125
 
 
126
 
interface
127
 
 
128
 
uses
129
 
  GTKGLArea, GTKGLArea_Int, NVGL, NVGLX, LazarusPackageIntf;
130
 
 
131
 
implementation
132
 
 
133
 
procedure Register;
134
 
begin
135
 
  RegisterUnit('GTKGLArea', @GTKGLArea.Register);
136
 
end;
137
 
 
138
 
initialization
139
 
  RegisterPackage('GTKOpenGL', @Register)
140
 
end.
141
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
142
 
 
143
 
 
144
 
 
145
 
- Then the compiler is called and the package is compiled to the output
146
 
directory.
147
 
 
148
 
- After successful compilation the state file is created. The state file is put
149
 
into the output directory. It has the name <packagename>.compiled and contains
150
 
the information, how the package was compiled. This state file is used by
151
 
the IDE to check if update is needed. For example: gtkopengl.compiled:
152
 
 
153
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
154
 
<?xml version="1.0"?>
155
 
<CONFIG>
156
 
  <Compiler Value="/usr/bin/ppc386" Date="781388725"/>
157
 
  <Params Value=" -Rintel -S2cgi -CD -Ch8000000 -OG1p1
158
 
    -Tlinux -gl -vewnhi -l -Fu../../../lcl/units
159
 
    -Fu../../../lcl/units/gtk -Fu../../../packager/units
160
 
    -Fu. -FElib/ gtkopengl.pas"/>
161
 
</CONFIG>
162
 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
163
 
 
164
 
 
165
 
 
166
 
- The IDE opens all needed packages automatically. This means, it opens all
167
 
installed packages, all packages marked for installation (auto install), all
168
 
packages with an open Editor, all packages required by the project and all
169
 
packages required by one of the other packages. Unneeded packages are
170
 
automatically unloaded, when the IDE becomes idle.
171
 
 
172
 
- The IDE never opens two packages with the same name at the same time. When
173
 
the user opens another package file with the same name as an already opened
174
 
package the IDE will ask to replace the old one.
175
 
 
176
 
- The IDE maintains two extra sets of packages: The 'installed' packages and
177
 
the 'auto install' packages. The auto install packages will be linked into
178
 
the IDE on next compile. It creates two new files in the config directory:
179
 
staticpackages.inc and idemake.cfg. Then it calls
180
 
'make ide OPT=@/path/to/your/config/idemake.cfg' to compile itself.
181
 
 
182