This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

UPD: GNUWin32 package report



GNUWin32 package report
 author: mh@mike.franken.de (Michael Hirmke)
    WWW: - on minimike.franken.de
         - in /docs/develop/gnuwin32
         - as GNUWin32.txt
         - <http://minimike.franken.de/docs/develop/gnuwin32/GNUWin32.txt>
    FTP: - on ftp.franken.de
         - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
         - as GNUWin32.txt
         - <ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael/GNUWin32.txt>
version: 1.09
   date: 12.05.1998

------------------------< snip snip snip >-----------------------------

0. *contents*
   ========

   0. *contents*
   1. *introduction*
   2. *preliminaries*
   3. *packages*
      - ghostview-1.5
      - groff-1.10
      - ispell 3.1 and spell 1.0   *new*
      - jove-4.16
      - less-321 (-332)            *updated*
      - man-1.4j
      - ncurses-4.1 (-4.2)         *updated*
      - recode-3.4.1-7
      - rcs-5.7
      - tar4bzip2                  *new*
      - termcap-1.3
      - uucp-1.06.1
      - vim-5.0 (-5.1)             *updated*
      - Xfig 3.2 and transfig      *new*
      - xpdf-0.7a
   4. *attachements*
      - install script             *updated*
      - How to upload to German GNUWIN32 site
   5. *history*


1. *introduction*
   ============

   This is a status report for packages compiled with *Cygnus CDK* - at
   the moment with version B19.

   For every package there might be different, even better ways to build
   them, but this is how I (and the other contributors) did it.
   If you know a better way, please share your knowledge with us.

   If you have built some more packages and would like me to add them to
   this report, please send me an email with the appropriate
   description.
   If you have any further suggestion on this report, feel free to send
   me an email, too.


2. *preliminaries*
   =============

   - All the packages are original source packages you can get from
     many ftp servers on the net. All the changes to these packages,
     which are necessary to build the binaries should be documented in
     this report.

   - You should have installed and properly configured the latest
     Cygnus CDK - at the moment version B19 - and perhaps Sergey
     Okhapkin's latest coolview package
     (available for example
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Okhapkin_Sergey
       - as coolview.tar.gz)

   - I assume you know how to unpack the source packages, i.e.
     "tar -xvzf <package>.tar.gz".

   - Get some replacement for the original "install" command, so that
     .exe file extensions are handled properly (see attachement 1).


3. *packages*
   ========

   *ghostview-1.5*
   -------------

     - what is it?
       - Ghostview offers you an X11 GUI for viewing PostScript files.
         This is an X11 interface to ghostscript.

     - system
       - ???

     - preliminaries
       - tar -xzvf ghostview-1.5.tar.gz; cd ghostview-1.5
       - xmkmf
       - change in file Dir.c ( comment several lines):
       /*
       #if defined(SVR4) || defined(SYSV) || defined(USG) || defined(__osf__)
       */

       #include <dirent.h>

       /*
       #else */ /* defined(SVR4) || defined(SYSV) || defined(USG) */ /*
       #include <sys/dir.h>
       #define dirent direct
       #endif */ /* defined(SVR4) || defined(SYSV) || defined(USG) */ /*
       */

     - make
       - works without changes

     - make install
       - works without changes

     - notes
       - none

     - package availability
       - on -
       - in -
       - as -

     - contributed by
       - wku1@utk.edu (Wei Ku)


   *groff-1.10*
   ----------

     - what is it?
       - The groff package provides compatible versions of troff, nroff,
         eqn, tbl, and other Unix text-formatting utilities.
         Groff is used to "compile" man-pages stored in groff/nroff
         format for different output devices; e.g., for displaying to a
         screen or in PostScript(tm) format for printing on a
         PostScript(tm) printer.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - /bin/sh has to be *bash, not ash*
         - umount /bin (if mounted)
         - cp <cygnus>/bash.exe /bin/sh.exe

     - configure
       - works without changes

     - make
       - edit ./Makefile
         - turn off optimization (-O in CFLAGS and CCFLAGS);
           with optimization turned on, you may run into trouble with
           random crashes - for example with large man pages
           (due to a hint from Andy Piper)
       - edit ./tmac/Makefile.sub
         - create a new first line "SHELL=/usr/bin/ash"
           (or whatever your "ash" is); this is necessay, because
           "bash" can't handle a "for" loop with an empty list in
           this Makefile
       - run "make" as normal

     - make install
       - works without changes

     - notes
       - it is a bit crazy, but you really need both shells to build
         this package - of course you could also change the Makefiles,oe
         so they all work with one shell

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as groff-1.10-win32-bin.tar.gz
       - or groff-1.10-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *ispell 3.1 and spell 1.0*
   ------------------------

     - system
        - Windows 95

     - preliminaries
        - spell: edit spell.c
350c350
<       if (write (the_pipe->pout, str->str, str->len) != str->len)
---
>       if (write (the_pipe->pout, str_to_nstr (str), str->len) != str->len)
385,390c385,387
<       if (str->len == 1 && str->str[0] == '\n'){
<                 free(str->str);
<                 free(str);
<                 return;
<         }
<
---
>       if (str->len == 1 && str->str[0] == '\n')
>       return;
>
457,458d453
<   free(str->str);
<   free(str);

        - ispell:
            Get or compile termcap
            ln -s <cygwin32>/H-i386-cygwin32/bin/sed.exe /bin/sed.exe
            Edit term.c. Replace all TCSETAW by TCSETA in ioctl() calls.
            Create local.h from local.h.samp. The following worked for me:
84,94c84,85
< #define USG           /* Define this on System V */
< #define _STRICT_ANSI
< #define CC    "gcc"
< #define CFLAGS        "-O -ansi"
< #define YACC  "byacc"
< #define INSTALL       "install"
< #define LANGUAGES "{american,MASTERDICTS=american.med,HASHFILES=americanmed.hash}"
< #define MAKE_SORTTMP "-T /tmp"
< #define VARIANT "american"
< #define MASTERHASH    "americanmed.hash"
< #define HAS_RENAME
---
> #undef USG            /* Define this on System V */
>
100c91
< #define ELISPDIR "/Progra~1/emacs-19.34/site-lisp"
---
> #define ELISPDIR "/usr/local/lib/emacs/site-lisp"

     - configure
        spell: no problem
        ispell: not applicable

     - make
        No problem

     - make install
        ispell: use the new version of install (see below)

     - notes
        spell:  if spell.c is not edited to add free(), malloc fails
                when slightly less than 65kB of space has been allocated
                in small blocks.
        ispell: if term.c is not edited the terminal settings are not
                changed.

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Humblet_Pierre_A
       - as ispell.tar.gz

     - contributed by
       - humblet@eurecom.fr (Pierre A. Humblet)


   *jove-4.16*
   ---------

     - what is it?
       - Jove is an Emacs-like editor without Lisp. It is comfortable
         to use, small, fast and portable.

     - system
       - Windows NT4 SP3

     - preliminaries
       - get sources from ftp://niteroi.gsfc.nasa.gov/pub/win32/jove
         These are the original sources with the addition of
         a Makefile for GNU Win32.
       - install termcap (may work with curses as well).

     - configure
       nope, this is an old package.

     - make
       - cp Makefile.unx Makefile
       - edit Makefile
         - Use LINUX settings
         - Update install related macros, handling the *.exe
           extensions
         - better yet, get Makefile.g32 from
            ftp://niteroi.gsfc.nasa.gov/pub/win32/jove/jove-bin.tgz
           and copy it to Makefile.

       - run "make" as normal

     - make install
       - works without changes

     - package availability
       - jove binaries/sources for GNU Win32 B19 available from:
           ftp://niteroi.gsfc.nasa.gov/pub/win32/jove
       - Official jove site: ftp://ftp.cs.toronto.edu/pub/moraes/jove/

     - contributed by
       - dasilva@alum.mit.edu (Arlindo da Silva)


   *less-321*
   --------

     - what is it?
       - Less is a pager program similar to more (1), but allows backward
         as well as forward movement within a file. Also, less does not
         have to read the entire input file before starting. It is also
         possible to start an editor at any time from this program.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - you first have to install *ncurses-4.1*
       - replace all "iprintf" in "output.c" with a different,
         but unique name, for example "less_iprintf"

     - configure
       - works without changes

     - make
       - works without changes

     - make install
       - works without changes

     - notes
       - works the same way for less-332
         (according to noer@cygnus.com  (Geoffrey Noer))

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as less-321-win32-bin.tar.gz
       - or less-321-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *man-1.4j*
   --------

     - what is it?
       - Program for displaying man-pages on the screen or sending them
         to a printer (using groff).

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - none

     - configure
       - edit configure
         - change "prefix=/usr" to "prefix=/usr/local"
           (or whatever you want or just leave it as it is)
       - run "configure -d"

     - make
       - edit src/man.c
         - add "#include <getopt.h>"
         - comment out line 1020 (setlocale)
       - edit src/Makefile.in
         - add "-DNONLS" to "DEFS="
       - edit src/util.c
         - comment out line 93 and 94 (setreuid, setregid)
       - run "make" as normal

     - make install
       - works without changes
       - edit /usr/local/lib/man.config according to your system

     - notes
       - couldn't get man-1.5a to run properly, you can build it nearly
         the same way as 1.4j, but it will crash, whenever you run the
         resulting binary

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as man-1.4j-win32-bin.tar.gz
       - or man-1.4j-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *ncurses-4.1*
   -----------

     - what is it?
       - As soon as a text application needs to directly control its
         output to the screen (e.g. wants to place the cursor at location
         x y and then write text), ncurses is used. The panel and the
         forms libraries are included in this package. These new
         libraries support color, special  characters and panels.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - /bin/sh has to be *bash, not ash*
         - umount /bin (if mounted)
         - cp <cygnus>/bash.exe /bin/sh.exe

     - configure
       - works without changes

     - make
       - works without changes

     - make install
       - works without changes

     - notes
       - works the same way for ncurses-4.2
         (according to noer@cygnus.com  (Geoffrey Noer))

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as ncurses-4.1-win32-bin.tar.gz
       - or ncurses-4.1-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *recode-3.4.1-7*
   --------------

     - what is it?
       - This filter converts various character sets.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - none

     - configure
       - works without changes

     - make
       - "make recode" is necessary, if you don't have texinfo
         installed, but otherwise
       - works without changes

     - make install
       - works without changes

     - notes
       - make for recode-3.4.1 (without -7) does *not* work

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as recode-3.4.1-7-win32-bin.tar.gz
       - or recode-3.4.1-7-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *rcs-5.7*
   -------

     - what is it?
       - RCS, the Revision Control System, manages multiple revisions of
         files. RCS can store, retrieve, log, identify, and merge
         revisions. It is useful for files that are frequently revised,
         e.g. programs, documentation, graphics, and papers.

     - system
       - ???

     - preliminaries
       - get Chris Faylor's version of cygwin19.dll; due to a bug in
         readlink(), rcs will not work with the original .dll
       - in src/conf.sh line 1039 change has_mmap=1 to has_mmap=0
       - in src/Makefile change line 90 to look like x = .exe

     - make
       - works without changes

     - make install
       - works without changes

     - notes
       - Is is a cygnus bug or an rcs problem that we have to turn off
         the mmap feature?

     - package availability
       - on -
       - in -
       - as -

     - contributed by
       - acherman@inf.ethz.ch  (Erwin Achermann)


   *tar4bzip2*
   ---------

     - what is it?
	- binaries of bzip2 and tar with bzip2 support

     - system
        - built on win95b cygwin32 B19.1+

     - preliminaries
        - tar vzxf bzip2-0.1pl2.tar.gz
	- apply the tar patch to tar-1.12 from the cdk src

     - configure
        - no configure script open bzip2.c and make sure these
	  macros are defined like this.
/*--
  Generic 32-bit Unix.
  Also works on 64-bit Unix boxes.
--*/
#define BZ_UNIX      1

/*--
  Win32, as seen by Jacob Navia's excellent
  port of (Chris Fraser & David Hanson)'s excellent
  lcc compiler.
--*/
#define BZ_LCCWIN32  0

     - make
	just type make

     - make install
	- copy the binaries to your $PATH
	- ln -s bzip2.exe bunzip2

     - notes
	- bzip2 is 10-50% more compressive on uncompressed data
	  than zip or gzip. already compressed data can grow
	  in size

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Mikey
       - as gnuwin32_B19_tar4bzip2.tgz

       - http://www.muraroa.demon.co.uk/
       - http://www.digistar.com/bzip2/index.html
       - http://www.digistar.com/bzip2/bzip2-0.1pl2.tar.gz

     - contributed by
       - jeffdbREMOVETHIS@netzone.com <Mikey>


   *termcap-1.3*
   -----------

     - what is it?
       -

     - system
       - ???

     - preliminaries
       - gunzip termcap-1.3.tar; tar -xvf termcap-1.3.tar; cd termcap-1.3

     - configure
       - works without changes

     - make
       - change in Makefile:
         add -D_STRICT_ANSI in DEFS so that it looks like
         DEFS =  -D_STRICT_ANSI -DHAVE_STRING_H=1 ...( omitted )

     - make install
       - mkdir /usr/include; mkdir /usr/lib
       - make include

     - notes
       - none

     - package availability
       - on -
       - in -
       - as -

     - contributed by
       - wku1@utk.edu (Wei Ku)


   *uucp-1.06.1*
   -----------

     - what is it?
       - Ian Taylor's Unix to Unix copy: mail and news over modem lines.
         This is the standard UUCP package of the Free Software Foundation.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - none

     - configure
       - works without changes

     - make
       - works without changes

     - make install
       - edit ./Makefile
         - remove or comment out all the lines with "chmod" and "chown",
           because they can't handle .exe extensions
       - run "make install" as normal

     - notes
       - none

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as uucp-1.06.1-win32-bin.tar.gz
       - or uucp-1.06.1-win32-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *vim-5.0*
   -------

     - what is it?
       - Vim (Vi Improved) is an almost compatible version of the UNIX
         editor vi whereby almost every possible command can be performed
         using only ASCII characters. Only the 'Q' command is missing
         (you don't need it). Many new features have been added: multi
         level undo, command line history, filename completion, block
         operations, editing of binary data, etc. Vi is available for
         the AMIGA, MS-DOS, Windows NT, and various versions of UNIX.

     - system
       - Windows NT4 German / SP3

     - preliminaries
       - you first have to install *ncurses-4.1*
       - you first have to install *X11R6.3*, if you want vim with
         X11 GUI support

     - configure
       - works without changes with these parameters:
         ./configure \
            --prefix=/usr/local \
            --disable-perlinterp \
            --disable-pythoninterp

         or for a vim without any GUI support
         ./configure \
            --prefix=/usr/local \
            --disable-perlinterp \
            --disable-pythoninterp \
            --disable-gui \
            --without-x

     - make
       - works without changes

     - make install
       - works, but you first have to "export SUFFIX=.exe", because it does
         not use the standard "install" program

     - notes
       - make gives you a few warnings, which you can ignore, and when
         it has finished, it is not obvious, that compilation succeeded,
         though it did
       - if the X11R6.3 package is installed, you get GUI support, too;
         the process for building the package is the same, though
       - works the same way for vim-5.1
         (according to noer@cygnus.com  (Geoffrey Noer))

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Hirmke_Michael
       - as vim-5.0-win32-with-gui-bin.tar.gz
       - or vim-5.0-win32-with-gui-bin.zip
       - or vim-5.0-win32-without-gui-bin.tar.gz
       - or vim-5.0-win32-without-gui-bin.zip

     - contributed by
       - mh@mike.franken.de (Michael Hirmke)


   *Xfig 3.2 and transfig*
   ---------------------

     - system
        - Windows 95

     - preliminaries
        - Xfig 3.2.0: on ftp.x.org
                      in /contrib/applications/drawing_tools/xfig.
        - TransFig package:
                      in /contrib/applications/drawing_tools/transfig.
        - You may also need the JPEG library in /contrib/libraries.
          Compiling Jpeg is no problem.

        - xfig:
          - uncomment USEINLINE in Imakefile
          - set your Jpeg paths in the Imakefile
          - #define USE_DIRENT in w_dir.c
        - transfig
          - uncomment the USELATEX2E in the transfig/Imakefile
          - set your Jpeg paths in the fig2dev/Imakefile
          - #define MSDOS in genepic.c
          - #define cfree free in free.c

     - configure
        - xfig and transfig:
          - set +u (in case you had set -u)
          - xmkmf

     - make
        - for xfig:
          - make
        - for transfig
          - make Makefiles
          - edit the fig2dev/Makefile and comment the line "all: fig2dev"
          - make

     - make install
        - No problem

     - notes
        - If you do not use Jpeg edit w_export.c in xfig and search
          LANG_JPEG.  Bracket these lines with #ifdef USE_JPEG

     - package availability
       - on ftp.franken.de
       - in /pub/win32/develop/gnuwin32/cygwin32/porters/Humblet_Pierre_A
       - as xfig.tar.gz

     - contributed by
       - humblet@eurecom.fr (Pierre A. Humblet)


   *xpdf-0.7a*
   ---------

     - what is it?
       -

     - system
       - ???

     - preliminaries
       - none

     - configure
       - run configure using '--with-gzip' otherwise it tries to use
         uncompress

     - make
       - run make all. this balks at the end when strip tries to
         strip the exes.(.exe suffix)

     - make install
       - works without changes

     - notes
       - none

     - package availability
       - on ftp.aimnet.com
       - in /pub/users/derekn/xpdf
       - as xpdf-0.7a.tar.gz

     - contributed by
       - ccurtin@trintech.com (Coley Curtin)


4. *attachements*
   ============

   *install script*
   --------------

   - replacement for the original "install" command to handle .exe file
     extensions properly

     ----------------------< snip snip snip >--------------------------
     #! /bin/sh
     
     # file: install
     # author:  earnie                  email: earnie_boyd@hotmail.com
     #
     # Install Preprocessor for the gnu-win32 "make install" command.
     #
     # To use:
     #
     #   copy this file to /usr/bin/install (earlier in the
     #   path than the default GNU install).
     #
     # Note:
     #   No warranty implicit or explicit is given.
     #   You may copy, distribute and use as you see fit.
     #   USE AT YOU OWN RISK.
     #
     # changed: M.Hirmke                email: mh@mike.franken.de
     #   changed ginstall to cyg_install, because some packages are looking
     #   for ginstall
     #
     # changed: Dr David Coe            email: david@coent.demon.co.uk
     #   "I seem to remember earnie's script gave trouble (in X11 or lesstif
     #    make install) when both <exec.exe> and <exec> are present
     #    simultaneously). The attached helped."
     #
     # changed: Dr Pierre A. Humblet    email: humblet@eurecom.fr
     #    Modify logic to work when several files are installed in a
     #    directory, some with the .exe extension and others without.
     
     tstr=""
     while test $# -gt 1;
     do
     	if test -e $1.exe;
     	then
     		suffix=".exe";
     	else
     		suffix="";
     	fi
     	tstr="${tstr}${1}${suffix} "
         shift;
     done
     if test -d $1
     then
     	suffix="";
     fi
     tstr="${tstr}${1}${suffix}"
     
     eval "cyg_install.exe $tstr";
     exit
     ----------------------< snip snip snip >--------------------------


   *How to upload to German GNUWIN32 site*
   -------------------------------------

   - how to upload to our German GNUWIN32 site:

         site: ftp.franken.de
         user: ftp/anonymous
     password: <email address>

     To get directly to the GNUWIN32 upload/incoming directory type
     "cd gnuwin32:" - note the trailing colon.

     Please always add a short readme on what you've uploaded.
     I'd like best, if the description would follow this format:

     ----------------------< snip snip snip >-------------------------
     *<package name>*
     --------------

     - what is it?
       - <short package description>

     - system
       - <system type, i.e. Windows NT4, Windows 95, ...>

     - preliminaries
       - <which arrangements to make>

     - configure
       - <which changes and parameters are necessary for configure>

     - make
       - <which changes and parameters are necessary for make>

     - make install
       - <which changes and parameters are necessary for make install>

     - notes
       - <what else might be interesting to know>

     - package availability
       - on <site name>
       - in <path>
       - as <package name>

     - contributed by
       - <email address (<your name>)
     ----------------------< snip snip snip >-------------------------

     There is no need to tell me, that you have uploaded something,
     because I'll get informed automatically.

     Please note:
     *I will delete anything, which does not look like a useful*
     *GNUWIN32 package !*
     *So please don't upload any warez, spam or similar garbage !*


5. *history*
   =======

   - 1.09
     - added complete ftp/http links for this document to the header, so
       that people with appropriate newsreaders can directly click on
       them (suggested by John.Turner@POBox.com  (John A. Turner))
     - added package description for ispell 3.1 and spell 1.0
     - added package description for Xfig 3.2 and transfig
     - added package description for tar4bzip2
     - added ncurses 4.2, less 332 and vim 5.1
     - updated install replacement script

   - 1.08
     - a few changes in the path structure of the German mirror

   - 1.07
     - added "- what is it?" to each package section
       (suggested by dasilva@alum.mit.edu (Arlindo da Silva))
     - added "contents section"
       (suggested by RWarner@bridge.com  (Warner, Rob))

   - 1.06
     - added description for uploading to our German GNUWIN32 site
       (attachement 2)

   - 1.05
     - added xpdf-0.7a package description
     - changed vim-5.0 package description (with/without GUI)

   - 1.04
     - added hint regarding cygwin.dll to package rcs-5.7
     - added hint regarding cyg_install to install script

   - 1.03
     - a few small corrections

   - 1.02
     - added history section :)
     - added ftp location to the header
     - changed less-321 package description
     - changed recode-3.4.1-7 package description
     - added man-1.4j package description

------------------------< snip snip snip >-----------------------------

Bye.
Michael.
--
Michael Hirmke           | Telefon +49 (911) 557999
Georg-Strobel-Strasse 81 | FAX     +49 (911) 557664
90489 Nuernberg          | E-Mail  mailto: mh@mike.franken.de
                         | WWW     http://minimike.franken.de/
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]