Updated bash.exe to MSYS-gca78a7c
[msysgit.git] / doc / msys / msysDVLPR.rtf
blob5209355b80d6885ca4657e4b8afdaf3f2feebfb0
1 {\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}\r
2 {\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;}{\f16\froman\fcharset238\fprq2 Times New Roman CE;}{\f17\froman\fcharset204\fprq2 Times New Roman Cyr;}\r
3 {\f19\froman\fcharset161\fprq2 Times New Roman Greek;}{\f20\froman\fcharset162\fprq2 Times New Roman Tur;}{\f21\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f22\fswiss\fcharset238\fprq2 Arial CE;}{\f23\fswiss\fcharset204\fprq2 Arial Cyr;}\r
4 {\f25\fswiss\fcharset161\fprq2 Arial Greek;}{\f26\fswiss\fcharset162\fprq2 Arial Tur;}{\f27\fswiss\fcharset186\fprq2 Arial Baltic;}{\f28\fmodern\fcharset238\fprq1 Courier New CE;}{\f29\fmodern\fcharset204\fprq1 Courier New Cyr;}\r
5 {\f31\fmodern\fcharset161\fprq1 Courier New Greek;}{\f32\fmodern\fcharset162\fprq1 Courier New Tur;}{\f33\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\r
6 \red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\r
7 \red192\green192\blue192;}{\stylesheet{\widctlpar\adjustright \fs20\cgrid \snext0 Normal;}{\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 1;}{\s2\sb240\sa60\keepn\widctlpar\adjustright \b\i\f1\cgrid \r
8 \sbasedon0 \snext0 heading 2;}{\s3\sb240\sa60\keepn\widctlpar\adjustright \f1\cgrid \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive Default Paragraph Font;}{\s15\widctlpar\adjustright \f2\fs20\cgrid \sbasedon0 \snext15 Plain Text;}{\s16\widctlpar\r
9 \tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext16 header;}{\s17\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext17 footer;}{\*\cs18 \additive \sbasedon10 page number;}{\*\cs19 \additive \ul\cf2 \sbasedon10 \r
10 Hyperlink;}}{\*\listtable{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname \r
11 ;}\listid148448751}{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid910165345\r
12 }{\list\listtemplateid67698689\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\u-3913 ?;}{\levelnumbers;}\f3\fbias0 \fi-360\li360\jclisttab\tx360 }{\listname ;}\listid1524050907}}\r
13 {\*\listoverridetable{\listoverride\listid1524050907\listoverridecount0\ls1}{\listoverride\listid910165345\listoverridecount0\ls2}{\listoverride\listid148448751\listoverridecount0\ls3}}{\info{\title So you\'92ve decided to help develop MSYS:}\r
14 {\author OMNIBOOK 500}{\operator OMNIBOOK 500}{\creatim\yr2002\mo5\dy17\hr12\min14}{\revtim\yr2002\mo5\dy17\hr13\min12}{\version5}{\edmins44}{\nofpages3}{\nofwords790}{\nofchars4503}{\*\company Qwest Communications Corp.}{\nofcharsws0}{\vern113}}\r
15 \margl1319\margr1319 \widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot \fet0\sectd \linex0\endnhere\sectdefaultcl {\header \pard\plain \s1\qc\sb240\sa60\keepn\widctlpar\outlinelevel0\adjustright \r
16 \b\f1\fs28\kerning28\cgrid {MsysDVLPR\r
17 \par }\pard\plain \s2\qc\sb240\sa60\keepn\widctlpar\outlinelevel1\adjustright \b\i\f1\cgrid {Version 1.0.0\r
18 \par }\pard\plain \s3\qc\sb240\sa60\keepn\widctlpar\outlinelevel2\adjustright \f1\cgrid {Alpha Release\r
19 \par }\pard\plain \qc\widctlpar\adjustright \fs20\cgrid {\cgrid0 Page }{\field{\*\fldinst {\cgrid0  PAGE }}{\fldrslt {\lang1024\cgrid0 2}}}{\cgrid0  of }{\field{\*\fldinst {\cgrid0  NUMPAGES }}{\fldrslt {\lang1024\cgrid0 3}}}{\r
20 \par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}\r
21 {\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\r
22 \pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\widctlpar\adjustright \f2\fs20\cgrid {\b\ul \r
23 \par So you\rquote ve decided to help develop MSYS:\r
24 \par }{First let me take the opportunity to thank you for this decision.  There are a lot of known items in the Round Tuit List that you can help with.  Please be sure to see that section below.  Also, please remember the \r
25 goal of MSYS is to supply a Minimal SYStem to allow MinGW developers to execute a typical configure and make.  Anything beyond this goal must be discussed thoroughly first on the mingw-dvlpr list and will most likely be released via a different package, e\r
26 .g.: msysDTK or msysDVLPR.  I don\rquote t want MSYS to become another Cygwin.\r
27 \par \r
28 \par }{\b\ul MsysDVLPR setup:\r
29 \par }{The are a few scripts I\rquote ve created to control the package distribution build process.  I have a default directory of /msys created for you already that the scripts use\r
30  for storage of binaries, depot work and releases.  The /msys/store directory holds the binaries, scripts, documentation and control files for creating the package.  The /msys/depot/binary directory will be used to copy from the /msys/store directories to\r
31  build the msys/1.0 tree structure.  The msys/depot/source directory will be used to create the \endash src.tar.gz tree structure.\r
32 \par \r
33 \par }{\b\ul msysdvlpr:\r
34 \par }{Before you do anything else, you must make the environment (as guessed by config.guess) equal to MSYS.  The msysdvlpr script is one method to do this.  It will start another instance of MSYS as uname \endash s == MSYS_\'85\r
35  and you can verify this via the title bar of the command window.  This is done simply by passing MSYS as an argument value to msys.bat.  So, if you want to do as I\rquote \r
36 ve done, you can rename the existing MSYS shortcut from MSYS to MinGW32.  Copy that shortcut and rename it to MSYS, modify the Target: properties and MSYS after msys.bat.\r
37 \par \r
38 \par }{\b\ul msysrlsbld:\r
39 \par }{This script is used to build most of the packages that are stored in /msys/store.  Create a build directory for the package, configure the package with a \endash \r
40 prefix=/usr, the execute msysrlsbld.  This will build the package three times, once for each distributed architecture (I.E. i386, i586 and i686).  A directory named nstl/ wi\r
41 ll be created in the build directory that will hold the binaries for each architecture.  You will then copy each of these to the /msys/store directory.\r
42 \par \r
43 \par }{\b\ul msysrls.sh:\r
44 \par }{This script is used to build the distribution package.  You will need to have INNO-Setup installed which you can find at }{\field{\*\fldinst { HYPERLINK http://www.innosetup.com }{{\*\datafield \r
45 00d0c9ea79f9bace118c8200aa004ba90b0200000017000000120000007700770077002e0069006e006e006f00730065007400750070002e0063006f006d000000e0c9ea79f9bace118c8200aa004ba90b3400000068007400740070003a002f002f007700770077002e0069006e006e006f00730065007400750070002e00\r
46 63006f006d002f00000000}}}{\fldrslt {\cs19\ul\cf2 www.innosetup.com}}}{.  The script build the msys/1.0 directory structure, modifies values for VERSION and RELEASE and some other things located in the msys.iss.in file and in some of the do\r
47 c/msys rtf files.\r
48 \par \page \r
49 \par }{\b\ul Msys-1.0.dll Debugging Methods:\r
50 \par }{First copy the d:\\msys\\1.0 tree structure to d:\\msysdbg\\1.0 so that you always have a stable environment.  Most of the functions use debug_printf, syscall_printf, etc. to supply strace information via win\r
51 32 api OutputDebugString.  This is turned off in MSYS by default but can be activated by adding \endash DDEBUGGING=1 to the compile flags.  You do not have to use the \endash \r
52 g flag for debugging symbols to see the strace information.  The DDEBUGGING flag will slow the execution of the processes.  I use sysinternals.com\rquote s DbgView program to see capture the OutputDebugString info.  I use the \endash \r
53 g flag so that I can use `objdump \endash Sl new-msys-1.0.dll > /tmp/odmp\rquote .  This comes in handy when someone reports a stackdump.  It then becomes easy to find the point of breakage.  Once you have a new-msys-1.0.dll with \endash \r
54 DDEBUGGING on you want to replace the /d/msysdbg/1.0/bin/msys-1.0.dll with it.  Start DbgView and then start the dbg sessions.  I suggest you don\rquote t use rxvt during this debugging session, it will become obvious as to why if you do.\r
55 \par \r
56 \par }{\b\ul Round Tuit List for MSYS:\r
57 \par }{\i 1.0.8:\r
58 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\r
59 Set the HOME environment variable within MSYS initialization if it doesn\rquote t exist.  This will be done in the /etc/passwd emulation code.\r
60 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {Modify the spawn_worker \r
61 method to filter the environment variables through cygwin_conv_to_win32_path before handing to a win32 program.\r
62 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\r
63 Rework the symlink method so that it copies the file or directory tree instead of creating a .lnk shortcut file.  This may cause possible problems with tar though such that tar may create a symlink to a not yet existent file.  It may then be wiser to\r
64  set an error of ENOSYS instead and rebuild tar and perl.  If this is done then I would rather wait until version 1.1.0 for the change.\r
65 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\r
66 Modify the fileutils package so that `mv /dir/foo /dir/bar\rquote  doesn\rquote t copy the contents of directory /dir/foo to /dir/bar if it errors on the rename of the directory.\r
67 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls1\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls1\adjustright {\r
68 Modify the fileutils package so that cp preextends the destination file(s) before doing the copy.  The mv command does this already if moving from one drive to another so it should just be a matter of finding what switches to use.  This speeds the \r
69 copy operation by great amounts and can be most noticed with coping a file to a floppy versus moving a file to a floppy.\r
70 \par }\pard \s15\widctlpar\adjustright {\r
71 \par }{\i Future:\r
72 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {The fchdir function isn\r
73 \rquote t working properly.\r
74 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
75 Rework the MOUNT_INFO, PATH_INFO and SYMLINK_INFO methods in path.cc so that all symlink checking is removed.\r
76 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {Terminal routines aren\rquote \r
77 t working quite correctly.\r
78 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
79 Provide scripts that emulate cl, lib and link converting switches to GCC and binutils equivalents.\r
80 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
81 Remove much of the ntsec coding, this was added for Server methods and MSYS is client use only.\r
82 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
83 Making MSYS an official host, build and target system with patches for the official config.guess and config.sub.\r
84 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
85 Submit official patches to binutils maintainers so that MSYS will build OOB.  These changes are to the preprocessor filters.  I plan for this to be done in such a method that any posix/unix for windows system that comes along won\rquote \r
86 t need to do the same patches.\r
87 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
88 Submit patches to GCC to add the msys config/i386 files and modify the preprocessor filters in a similar manner to binutils.\r
89 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls2\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls2\adjustright {\r
90 Modify the bash package such that if a string contains a colon followed by a \\ and preceded by [a-zA-Z] which is itself not preceded by [0-9a-zA-Z] then consider it to be an absolute Win32 path and don\rquote t use \\ as a\r
91 n escape sequence.  So that, FOO=d:\\path\\to\\bar remains that and doesn\rquote t become FOO=d:pathtobar.  This may need to be done with the make package as well.\r
92 \par }\pard \s15\widctlpar\adjustright {\r
93 \par }{\b\ul Round Tuit List for MinGW:\r
94 \par {\pntext\pard\plain\s15 \f3\fs20\cgrid \loch\af3\dbch\af0\hich\f3 \'b7\tab}}\pard \s15\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlblt\ilvl0\ls3\pnrnot0\pnf3\pnstart1\pnindent360\pnhang{\pntxtb \'b7}}\ls3\adjustright {\r
95 A libminiberty.a library that will contain versions of functions that are non-infecting (I.E. forces one to use a particular license or to advertise).  The first draft of this can simply be those routines in libiberty that are public domain or BSD.\r
96 \par }}