source: trunk/README.OS2@ 803

Last change on this file since 803 was 803, checked in by Dmitry A. Kuminov, 15 years ago
File size: 27.9 KB
Line 
1This is Qt version 4.6.2 for OS/2 and eCS.
2
3This document contains a brief information on the OS/2 version of the Qt
4library. Please read it carefully before starting your work. You may also
5visit the project page at
6
7 http://svn.netlabs.org/qt4/wiki
8
9to get more information and the latest news and also to report bugs.
10
11To get a brief list of OS/2-specific changes from release to release
12please see the CHANGES.OS2 file included in this distribution.
13
14Please note that this version is binary incompatible with previous versions of
15Qt 4 for OS/2! This is not a behavior of the original Qt library (where versions
16with the same major number are usually binary compatible), but it is due to the
17fact that we continue to add missing features to the OS/2 version ot Qt and this
18cannot be done witout breaking the binary compatibility. On practice, this means
19that you need to recompile your applications with the new version of the Qt
20library in order to make them work with it.
21
22
23
24REQUIREMENTS
25
26In order to compile the Qt library and Qt-based applications, you will need
27the following tools:
28
29 - One of the OS/2 Warp 4, OS/2 Warp 4.5 or eComStation operating systems.
30
31 - GCC compiler version 4.4.2 for OS/2, patched OpenWatcom linker and
32 GNU Make 3.81beta1 or above. The GCC compiler must be set up to use the
33 OpenWatcom linker for linking.
34
35 If you do not have a working GCC environment with the above requirements, it
36 is recommended to download a ready-to-use GCC 4.2.2 distribution from here:
37
38 ftp://ftp.netlabs.org/pub/qt4/gcc-4_4_2-complete-20091205.zip
39
40 This distribution includes all tools necessary to compile and build the Qt
41 library from the source code. Just follow the installation instructions
42 contained in the README file inside this ZIP archive to set up the GCC
43 environment.
44
45 Please note that starting from Qt 4.6.2, support for GCC 3.3.5 and earlier
46 versions of the compiler has been dropped and the Qt library will most
47 likely not build if you use one of these compilers. Later versions prior to
48 GCC 4.4.2 may work but they are not tested and not supported.
49
50There is also a set of optional tools which are necessary to enable the selected
51features of the Qt library. If these tools are missing, the Qt configuration
52script (discussed in section "COMPILING QT" below) will automatically disable
53the corresponding feature:
54
55 - LxLite 1.3.3 or above (not tested) to enable the compression of Qt DLLs and
56 application executables (which saves hard disk space and application startup
57 time). If you use a recent version of eComStation (e.g. 2.0 rc6) you will
58 already have LxLite installed. Otherwise, you may take it from here:
59
60 http://www.os2site.com/sw/util/archiver/lxlt133.zip
61
62 - CUPS 1.3.11 or later to support printing in Qt. The CUPS libraries are
63 available at:
64
65 http://download.smedley.info/cups-1.3.11-os2-20090807.zip
66
67 Linking against eCUPS also requires pthread.lib:
68
69 http://web.os2power.com/download/lib/pthread-20100217-os2.zip
70
71 - OpenSSL 0.9.8o or later to support OpenSSL in Qt. The OpenSSL libraries are
72 available at:
73
74 http://bauxite.sakura.ne.jp/tmp/os2/openssl-1.0.0a-os2knix-20100706-runtime.zip
75 http://bauxite.sakura.ne.jp/tmp/os2/openssl-1.0.0a-os2knix-20100706-dev.zip
76
77 - MySQL 5.1 or later for the MySQL Qt plugin. The MySQL libraries are
78 available at:
79
80 http://download.smedley.info/mysql-5.1.51-os2-20101001.zip
81
82 Note that you will also need the above OpenSSL libraries and pthread.lib to
83 be able to use this MySQL build.
84
85 - PostgersSQL 9.0.1 or later to support the PostgresSQL Qt plugin. The
86 PostgresSQL libraries are available at:
87
88 http://download.smedley.info/postgresql-9.0.1-os2-20101012.zip
89
90 Note that you will also need libc064x.dll for this PostgresSQL build and a
91 patched PostgresSQL DLL that fixes one critical bug (this will not be
92 necessary for the next PostgresSQL build as it will incorporate the fix):
93
94 http://download.smedley.info/libc064x.zip
95 http://smedley.info/libpq.zip
96
97 Note that you will also need the above OpenSSL libraries and pthread.lib to
98 be able to use this PostgresSQL build.
99
100
101
102SETTING UP THE ENVIRONMENT
103
104First of all, make sure that your GCC environment is set up and meets the
105specified requirements. To perform a quick check, you may run the following
106command:
107
108 gcc --version && make --version && wl /version
109
110If the setup is done properly, it will print the versions of the key tools
111to the console.
112
113The next step is to set up the Qt environment. If you installed the Qt
114development libraries from the WPI archive (refer to section "USING OFFICIAL
115BINARY QT ARCHIVES" below for more details about existing WPI archives), you
116will only need to run the supplied "QtEnv.cmd" script which will do all the
117setup job for you. The script is located in the directory where you installed
118the developmnent libraries (or in the WPS folder created by the WPI installer).
119Execute this script in a command line session to make it ready for building
120Qt 4 applications (for example, using the "qmake" command follwed by "make"
121for applications based on qmake project files which most of them are). If you
122go that way, you may skip the rest of this section and proceed directly to
123section "USING OFFICIAL BINARY QT ARCHIVES" below.
124
125If you use the full source code ZIP distribution of the Qt library or work
126directly with the Qt SVN tree, you will need to set up the environment yourself
127by performing the following steps:
128
129 - Add the "bin" subdirectory of the directory where you unpacked the Qt4
130 source tree to PATH and BEGINLIBPATH, like this:
131
132 set PATH=D:\Coding\Qt4\bin;%PATH%
133 set BEGINLIBPATH=D:\Coding\Qt4\bin;%BEGINLIBPATH%
134
135 - Add the system DLLs to the GCC library path with the following command:
136
137 set LIBRARY_PATH=C:\OS2\DLL;C:\MPTN\DLL;%LIBRARY_PATH%
138
139 where C: is your boot drive.
140
141 - Make sure CMD.EXE is your command line processor (the generated makefiles
142 will rely on its 'copy', 'if' and other commands). If you have a Unix shell
143 (SH.EXE) in your environment, you may need to force GNU make to use CMD.EXE
144 by executing the followingn command:
145
146 set MAKESHELL=C:\OS2\CMD.EXE
147
148 where C: is your boot drive.
149
150Note that the QTDIR environment variable used in previous Qt versions is not
151used in Qt4 anymore. Therefore, there is no need to set this variable
152explicitly.
153
154There is also no need to set the QMAKESPEC variable explicitly. If it is absent,
155qmake will use the specification stored in the <Qt4_Home>/mkspecs/default
156directory, which on OS/2 always refers to the "os2-g++" specification, the only
157one supported at the present time.
158
159NOTE:
160
161 It is especially important to make sure that there are no traces of any
162 other Watcom or OpenWatcom installation in the environment where you build
163 Qt as it will interfere with the patched OpenWatcom linker we use. This
164 basically means removing all environment variables containing "WATCOM" in
165 their names and also removing references to all those Watcom installations
166 from PATH.
167
168
169
170SETTING UP OPTIONAL TOOLS
171
172The following list describes the steps necessary to set up the optional tools
173that the Qt library depends on:
174
175 - Unzip the CUPS libraries to some directory and set the following environment
176 variables to tell the Qt configure script its location:
177
178 set CUPS_INCLUDEPATH=<path_to_CUPS>\include
179 set CUPS_LIBS=-L<path_to_CUPS>\lib -llibcups.a -L<path_to_pthread> -lpthread.lib
180
181 - Unzip the OpenSSL libraries to some directory and set the following
182 environment variables to tell the Qt configure script its location:
183
184 set OPENSSL_INCLUDEPATH=<path_to_OpenSSL>\include
185 set OPENSSL_LIBS=
186
187 Note that you will also need to place OpenSSL DLLs to BEGINLIBPATH (if they
188 are not already in your LIBPATH) so that Qt applications can find them at
189 runtime:
190
191 set BEGINLIBPATH=<path_to_OpenSSL>\dll;%BEGINLIBPATH%
192
193 - Unzip the MySQL archive to some directory and set the following environment
194 variables to tell the Qt configure script the library location:
195
196 set MYSQL_INCLUDEPATH=<path_to_MySQL>\include'
197 set MYSQL_LIBS=-L<path_to_MySQL>\lib -lmysqlclient_r -L<path_to_OpenSSL>\lib -llibssl -llibcrypto -L<path_to_pthread> -lpthread
198
199 Also add MySQL DLLs to BEGINLIBPATH if they are not already there as shown
200 above.
201
202 - Unzip the PostgresSQL archive to some directory and set the following
203 environment variables to tell the Qt configure script the library location:
204
205 set PSQL_INCLUDEPATH=<path_to_PostgresSQL>\include'
206 set PSQL_LIBS=-L<path_to_PostgresSQL>\lib -llibpq -L<path_to_OpenSSL>\lib -llibssl -llibcrypto -L<path_to_pthread> -lpthread
207
208 Also add PostgresSQL DLLs to BEGINLIBPATH if they are not already there as
209 shown above.
210
211
212
213COMPILING QT
214
215You should skip this section if you installed the Qt development libraries using
216the WPI archive (that already contains compiled release versions of the
217libraries) and proceed directly to the next section.
218
219When the environment is set up, go to the directory where you unpacked the
220Qt4 source tree and type:
221
222 configure.cmd
223
224This will set up the Qt library (by creating necessary configuration and include
225files and a bunch of Makefiles for variuos components) and build the qmake tool.
226
227The next step is to type:
228
229 make
230
231This will compile and link the Qt library. Note that by default both the release
232and the debug version of the library are built (please be patient, it may take
233quite some time depending on your hardware). The release and debug libraries can
234co-exist in the same source tree and may be used in parallel: all the debug DLLs
235get a 'd' letter in their name preceeding the Qt major version number and use
236separate directories for object files.
237
238To save time, you may build the release and the debug versions of the Qt library
239separately by typing 'make release' or 'make debug' accordingly instead of just
240'make'.
241
242Once the library is successfully built, you may try to compile the demos and
243examples by visiting the individual example subdirectories in the source tree
244and typing 'qmake' followed by one of 'make', 'make release' or 'make debug'
245in that subdirectory.
246
247NOTE:
248
249 This version of Qt for OS/2 includes the Extended system tray plugin for
250 XCenter/eCenter which is necessary to enable Qt support for the special
251 notification area on the XCenter/eCenter panel (called the "system tray")
252 which is used by many long-running applications to display their status.
253 In order to activate this support, you need to install this plugin to your
254 XCenter or eCenter. The plugin is built during the normal Qt build process
255 and can be found in the file \plugins\xcenter\xsystray.dll in the Qt source
256 tree. In order to install the plugin, do the following:
257
258 a. Copy xsystray.dll to <XWorkplace installation folder>\plugins\xcenter\
259 (on eComStation, this will be C:\ecs\system\ewps\plugins\xcenter\ where
260 C: is your boot drive).
261
262 b. Restart WPS.
263
264 c. Add the "Extended system tray" widget to the XCenter/eCenter panel using
265 the XCenter context menu ('Create new widget').
266
267 Note that if you upgrade from the previous version of the plugin then
268 please unlock xsystray.dll in the target folder using the UNLOCK.EXE
269 utility (which you can find in the LxLite package, for example) before
270 performing step a., otherwise the copy operation will fail.
271
272IMPORTANT NOTE:
273
274 Please take into account that the Qt library you build on your own as
275 described above is NOT intended for wide distribution with Qt applications
276 you port or create. Such private Qt builds help you develop Qt applications
277 (because you can easily debug your program and parts of the Qt framework at
278 the source level) but being widely distributed they will create a so-called
279 DLL hell when a program running on a user computer crashes because it picks
280 up a wrong build of the Qt library. This will happen because even a single
281 change to Qt configuration options may make your build binary incompatible
282 with another build. And even if you convince the user to isolate different
283 DLLs (using LIBPATHSTRICT and BEGINLIBPATH) it will create another major
284 problem: two different Qt applications will load two different copies of Qt
285 into memory which will create an unnecessary overhead by doubling the
286 amount of used system resources.
287
288 In order to nicely solve this problem, netlabs.org provides the official
289 binary builds of the Qt library distributed as WPI archives which are
290 described in the next section.
291
292
293
294USING OFFICIAL BINARY QT ARCHIVES
295
296For your convenience, netlabs.org provides the following binary distributions
297of the Qt library (where X_Y_Z is the Qt version number) distributed as WPI
298archives:
299
300 qt-lib-X_Y_Z.wpi - Runtime DLLs and binaries ("lib" archive)
301 qt-dev-X_Y_Z.wpi - Development libraries, tools and headers ("dev" archive)
302
303These archives are called the official binary archives of the Qt library for
304OS/2. An official binary archive contains the most complete Qt build that
305enables all features of the Qt library and includes all standard Qt plugins
306implemented for the OS/2 platform at the time of the release.
307
308The "lib" archive contains the release versions of DLLs (and may contain a few
309helper binaries) necessary to run applications created using the Qt framework.
310This package is usually installed by end users together with Qt applications
311they want to use.
312
313The "dev" archive contains pre-built release versions of import libraries and
314a complete set of C++ include headers of the Qt framework. This package is used
315by developers and porters of Qt applications to build release versions of the
316applications that are binary compatibie with the Qt runtime provided by the
317official "lib" archive described above. Using the "dev" package requires the
318same environment as described in section "SETTING UP THE ENVIRONMET" above.
319
320Please note again that the "dev" archive is intended to make a final release
321build of the Qt application which you do when you decide to ship a new version
322to the end users -- makes sure that the deployed application will share the same
323Qt runtime with other Qt applications. However, for daily work it is highly
324recommended that you build the debug version of the Qt library yourself (using
325the full source code ZIP archive or directly from SVN) as described in section
326"COMPILING QT").
327
328Besides the "lib" and the "dev" archives, the following official archives exist
329that you may also find useful:
330
331 qt-examples-X_Y_Z.wpi - Demo and example sources ("examples")
332
333The "examples" archive contains the source code and compiled binaries of the
334demo and example applications shipped with Qt. They serve as a good
335demonstration of the Qt library features and it is recommended to look at them.
336The binaries are compiled using the official "lib" archive. Please note that
337some demos and examples may miss from the arcvhice since not all features have
338been implemented in the OS/2 version of Qt yet.
339
340NOTE:
341
342 All .DLL and .EXE files of the official binary build contain a DESCRIPTION
343 string with the vendor field set to "netlabs.org" (by contrast, all custom
344 Qt builds will set the vendor field to what the USER environment variable
345 contains or to "anonymous" if USER is not set). Please note that you must
346 NOT set vendor to "netlabs.org" when creating your own builds of the Qt
347 library because it will make it difficult to identify various distributions
348 and track possible problems with the builds.
349
350
351
352QMAKE CONFIG OPTIONS
353
354The following CONFIG options of the qmake tool have a special meaning in OS/2:
355
356 windows Turns on generation of PM (WINDOWAPI) executables. By
357 default, this option is set for release builds that link
358 to the Qt GUI library.
359
360 console Turns on generation of text mode (WINDOWCOMPAT) executables.
361 By default, this option is set when setting the "windows"
362 option is not appropriate (see above).
363
364In addition, qmake recognizes the following OS/2-specific CONFIG options:
365
366 map Turns on generation of the .map files for executables and
367 DLLs. This option is set by default.
368
369 exepack Turns on compression for executables and DLLs. The option is
370 turned on by default for release builds if configure.cmd
371 finds a compression tool (LxLite) in PATH.
372
373 highmem Turns on high memory usage for dynamically allocated memory
374 in DLLs and executables. When this option is set, a special
375 compiler flag (-Zhigh-mem for GCC) is used to enable high
376 memory support in the C library (LIBC). This option is set
377 by default so that all Qt DLLs and Qt applications built
378 with qmake are enabled for high memory. Note that high
379 memory support must be enabled for all LIBC-based DLLs
380 linked to the executable as well as for the executable
381 itself: high memory usage will be disabled if one of them
382 votes against it.
383
384 export_all Cause the linker to export all public symbols in a generated
385 DLL. By default (when this option is absent), only the
386 symbols marked with the __declspec(dllexport) compiler
387 directive in the source files.
388
389
390
391PRINTING SUPPORT
392
393Starting with version 4.6.2, Qt for OS/2 supports printing through the CUPS
394framework (provided that this support is enabled when building Qt, see the
395respective sections in the beginning of this document). The OS/2 implementation
396of the CUPS framework is provided by the eCUPS package available at
397http://svn.netlabs.org/ecups/.
398
399The Qt Runtime detects the presence of eCUPS in the system on the fly and talks
400to the CUPS daemon directly, bypassing the standard OS/2 printing subsystem.
401This means that in order to print from Qt applications, you don't need to create
402and configure printer objects using the standard OS/2 system printer setup
403procedure -- you only need to install eCUPS and configure your printers in
404there. Please refer to the eCUPS user manual to obtain the detailed instructions
405on how to configure CUPS printers.
406
407
408
409ENVIRONMENT VARIABLES
410
411The Qt library recognizes a number of OS/2-specific environment variables that
412affect its functionality at runtime. The table below lists these variables and
413their meaning:
414
415 QT_PM_NO_DIVE If set, Qt will not use DIVE (direct interface video
416 extensions) for painting widgets even if DIVE (which
417 provides a much faster painting speed than the
418 regular GPI approach) is available. Currently, this
419 is the default setting if the Panorama video driver
420 is detected because its DIVE implementation contains
421 a number of bugs.
422
423 QT_PM_DIVE=<mode> Enables using DIVE for painting widgets. <mode> is
424 one of:
425
426 - FB (direct framebuffer access, which is the
427 fastest mode but causes the curruption of the
428 screen under the software mouse pointer due to
429 the limitation of DIVE). If this mode is not
430 available, BLIT will be used (see below).
431
432 - FBSWM (the same FB but hides the mouse pointer
433 before painting which introduces mouse flicker
434 and may be a bit slower than the raw FB).
435
436 - BLIT (slower than both FB and FBSWM but prevents
437 screen corruption under the mouse pointer and
438 does not produce a mouse pointer flicker
439 effect).
440
441 This variable is ignored if QT_PM_NO_DIVE is set. If
442 neither this nor the QT_PM_NO_DIVE variable is set,
443 the FBSWM mode is used by default (unless the
444 current video driver is Panorama, see above).
445
446 QT_PM_NO_SOUND_SHARE If set, Qt will open the audio device in exclusive
447 only one sound may be played on the computer at a
448 time. This mode is recommended for some sound cards
449 when using the Uniaud audio driver as it is known to
450 have problems with simultaneous playback. In current
451 Qt builds, this is the default behavior if neither
452 this nor the QT_PM_SOUND_SHARE variable is set.
453
454 QT_PM_SOUND_SHARE The opposite to the above. If set, Qt will open the
455 audio device in shared mode. This variable is
456 ignored if QT_PM_NO_SOUND_SHARE is set.
457
458 QT_PM_NO_REGISTRY If set, Qt will not use the Open32 registry to store
459 application settings with QSettings. Instead, plain
460 text INI files will be used for both NativeFormat
461 and IniFormat. Due to a number of problems in the
462 Open32 registry implementation (that may easily lead
463 to registry corruption), this is the default
464 behavior if neither this nor the QT_PM_REGISTRY
465 variable is set.
466
467 QT_PM_REGISTRY The opposite to the above. If set, Qt will use the
468 Open32 registry to store application settings. This
469 variable is ignored if QT_PM_NO_REGISTRY is set.
470
471 QT_PM_NO_SYSTEM_LOCALE If set, Qt will ignore the regional settings from
472 the system locale object found in the Country
473 Palette located in the System Setup folder and will
474 take them from the internal Qt locale database
475 according to the current country and language
476 settings. Due to the fact that this internal Qt
477 database usually has a better representation of the
478 regional settings, this is the default behavior if
479 neither this nor the QT_PM_SYSTEM_LOCALE variable is
480 set.
481
482 QT_PM_SYSTEM_LOCALE The opposite to the above. If set, Qt will use the
483 regional settings as found in the default locale
484 object set the Country Palette. This variable is
485 ignored if QT_PM_NO_SYSTEM_LOCALE is set.
486
487 LANG This variable can be used to override the default
488 country and language used in the Qt application both
489 for regional settings and for translations. The
490 format of the value is "ll_CC" where <ll> is the
491 two-letter ISO language code and <CC> is the two-
492 letter ISO country code. Note that if this variable
493 is not set, Qt will derive the language and country
494 from the system country code specified in the
495 COUNTRY statement of CONFIG.SYS.
496
497
498
499COMMAND LINE OPTIONS
500
501Any Qt executable recognizes a number of command line options that may change
502the behavior of the Qt application. Here are the most interesting ones:
503
504 -style <name> Changes the default Qt widget style (theme) to a
505 style with the given name. The buiil-in styles which
506 are always available in the official build include:
507 "windows" (currently, the default on OS/2), "motif",
508 "cde", "plastique" and "cleanlooks". Other styles
509 may be also provided by the style plugins.
510
511 -graphicssystem <name> Changes the graphics system used to paint widgets.
512 On OS/2, only two values are supported: "native"
513 (the default one) and "raster". The "native" system
514 uses DIVE (direct interface video extensions) when
515 it is available. If DIVE is not available or if it
516 is disabled (see the QT_PM_NO_DIVE environment
517 variable description for details), the "raster"
518 system will be automatically selected as a fallback.
519
520
521
522CURRENT LIMITATIONS
523
524 1. configure.cmd is does not build demos and examples by default (to save
525 time). They may be built by hand, as described above.
526
527 2. configure.cmd does not understand any command line options yet. If you want
528 to customize your build of the Qt library (which is normally not
529 recommended and not supported), you may try to modify configure.cmd itself.
530
531 3. OS/2 bitmap fonts are not supported. Use TTF or Type1 (PFB) fonts with Qt.
532
533 4. No native PM style, but Qt will use fonts and colors from the current
534 OS/2 theme. Hint: if your default OS/2 font is "WarpSans", install the
535 "Workplace Sans" TTF font from Alex Taylor to get more native look & feel.
536 It is recommended to install version 0.7 of the Normal face and version 0.3
537 of the Bold face which you can find here:
538
539 http://users.socis.ca/~ataylo00/creative/fonts/workplace/
540
541 5. QProcess: when starting PM applications from text-mode applications, the
542 returned PID is a PID of the intermediate cmd.exe process, not the target
543 application.
544
545 6. The following classes are not available due to their rare usage or low
546 importance on the OS/2 platform: QSharedMemory, QSystemSemaphore,
547 QInputContext. On the source level, a number of macros is defined to
548 reflect this, respectively: QT_NO_SYSTEMSEMAPHORE, QT_NO_SHAREDMEMORY,
549 QT_NO_IM. Normally, Qt applications use these macros in the form of
550 "#fndef QT_NO_SOMEFEATURE" to isolate the relevant parts of the code that
551 uses these classes so that the application still builds when the
552 corresponding feature is missing.
553
554 7. No qt3support module. This functionality is rarely necessary in mature
555 real life Qt applications and has low priority. In the code, it is
556 reflected by the absense of the QT3_SUPPORT macro.
557
558 8. The following features are missing (either because of the lack of the
559 required support from the system side or because of the rare usage):
560
561 - IPV6 support in the network module (QT_NO_IPV6 is defined).
562 - OpenSSL support in the network module (QT_NO_OPENSSL is defined).
563 - phonon module (QT_NO_PHONON is defined).
564 - multimedia module (QT_NO_MULTIMEDIA is defined).
565 - OpenGL module (QT_NO_OPENGL is defined).
566 - declarative module (QT_NO_DECLARATIVE is defined).
567 - tablet support (QT_NO_TABLET is defined).
568
569 See the project roadmap for more information on the current progress and
570 future plans:
571
572 http://svn.netlabs.org/qt4/roadmap
573
574 Feel free to request new features and report bugs using the project bug
575 tracker abaialble at:
576
577 http://svn.netlabs.org/qt4/report
578
579
580
581CREDITS
582
583Dmitry A. Kuminov (development)
584Silvan Scherrer (management)
585
586netlabs.org (hosting & support)
587
588Nokia Corporation (original Qt library)
589
590We also want to THANK all individuals and organizations who made the donations
591to this project and helped to make it happen. Please visit
592
593 http://qt.netlabs.org/en/site/index.xml
594
595to get the full list of sponsors and to find information on how you can support
596the project.
597
598
599Qt is a trademark of Nokia Corporation and/or its subsidiary(-ies).
600OS/2 and OS/2 Warp are trademarks of the IBM Corporation and/or its subsidiary(-ies).
601eComStation is a trademark of Serenity Systems International and/or its subsidiary(-ies).
602Etc.
Note: See TracBrowser for help on using the repository browser.