This directory contains the source code for the Setup program for the Cygwin net releases. HOW TO BUILD: ------------- Setup should build out-of-the-box on any Cygwin environment that has all the required packages and their dependencies installed: - make - mingw64-${arch}-headers - mingw64-${arch}-gcc-g++ - mingw64-${arch}-libgcrypt - mingw64-${arch}-bzip2 - mingw64-${arch}-xz - mingw64-${arch}-zlib - upx (optional) The ${arch} needs to be replaced with either "i686" or "x86_64" depending on the target architecture to build for. The following additional packages are required if building from Git, or if you want to make changes to the build system. - autoconf - automake - libtool - flex - bison Build commands: 0) If building from git, obtain this project's code: $ git clone git://sourceware.org/git/cygwin-apps/setup.git $ cd setup 1) Configure using this option $ /path/to/setup/bootstrap.sh This will automatically rebuild configure files and run configure in the current directory. If you have installed toolchains for both i686 and x86_64 architectures, then you need to select for which architecture you want to build: $ /path/to/setup/bootstrap.sh --host=i686-w64-mingw32 $ /path/to/setup/bootstrap.sh --host=x86_64-w64-mingw32 2) $ make 3) Wondering why your binary is so much bigger than the official releases? This removes debugging symbols: $ make strip This additionally compresses it using UPX (requires package upx to be installed): $ make upx CODING GUIDELINES: ------------------ setup has a number of different code formats in it. This is ok as long as it stays readable. When submitting a patch, make sure that you use the coding-style of the surrounding code. For new code, use the GNU standards as much as possible. We understand that this is not a precise fit for C++ code but you can use Cygwin itself as a guide. SUBMITTING A PATCH: ------------------- Follow the general directions given in the Cygwin contributions document: https://cygwin.com/contrib.html The appropriate mailing list for this project is cygwin-apps (rather than cygwin-patches). Thus, the appropriate final command would be: $ git send-email --to="cygwin-apps@cygwin.com" WISHLIST: --------- * Support rpm/deb files for reading the package from. (To allow the maintainers the use of rpm/deb tools to create packages.) * Make a librar(y|ies) for setup and cygcheck to use containing 1) Something to translate POSIX -> native. Currently called "cygpath" in setup, although this is probably a bad choice of name. 2) Something to return the list of installed packages. 3) Something to return the cygwin mount table. Currently, I have implemented a lightweight setmntent and getmntent using the code in 4) Something to parse a tar file name into package/version or alternatively, return that information from 2) 5) Something to return a list of files associated with a package. * Mark versions as prev/curr/test in the GUI when clicking through them. * Make setup.exe available through Add/Remove * Local package scan stops updating when it stops being the active window. * Some way to download *all* the source. * Incremental/recoverable download capability. * Build-depends. * FTP control connections should be closed when we are awaiting user input. * Show a sdesc for each category. * Add friendly error reporting to simpsock.cc. * Scan newly installed files for README files, show list to user, let them read them if they want. * Clicking on a package that is in multiple categories should update the view of the package in both locations on screen. - Done? * Remember the view mode - ie if you leave setup in partial, it returns to partial automatically. * Downloading from the internet should be _able_ to list based on what is present in the cache, as opposed to what is installed. (To help building a complete install set for a different machine). * New view - "action / category / package" * New view - show installed packages only. Probably not categorised. * Don't ask about the start menu or desktop options if they already exist. * Save the manual proxy settings so they don't need to be retyped. * Detect files in multiple packages. * Show bin and src download size. * Confirm cancellation of setup if in the middle of doing something. * Improve mirror selection UI. * Ability to "hold" the version of a package - i.e. never auto-upgrade.