Revised from [1], this adds an '--symlink-type {sys, native, wsl}' option, which controls the type of symlinks created by setup and the post-install scripts it invokes [2].
If creating the symlink using the selected method fails, setup falls back to using a sys symlink. '--symlink-type lnk' is not (yet) implemented, because I'm lazy. If the CYGWIN env var contains a 'winsymlinks' setting, the default is controlled by that, otherwise, the default behaviour is '--syslink-type sys', which matches setup's current behaviour (and Cygwin prior to 3.1.5). [1] https://cygwin.com/pipermail/cygwin-apps/2021-May/041327.html [2] requires as yet unreleased Cygwin for 'winsymlinks:sys' support for the '--symlink-type sys' case. Jon Turney (11): Add support for creating WSL symlinks Add support for creating native symlinks Factor out the iteration over archive files to install Add seek() method to archive and compress file classes Add separate symlink-creation phase when extracting archive Enable SeCreateSymbolicLink privilege Add symlink capabilities to user-agent telemetry Factor out StringChoiceOption Add a command line option to choose symlink type used Propagate --symlink-type setting to post-install scripts Default symlink mode from CYGWIN env var archive.cc | 52 ---- archive.h | 14 +- archive_tar.cc | 14 +- compress_bz.cc | 12 + compress_bz.h | 1 + compress_gz.cc | 65 +++-- compress_gz.h | 3 +- compress_xz.cc | 34 ++- compress_xz.h | 3 +- compress_zstd.cc | 19 +- compress_zstd.h | 3 +- filemanip.cc | 27 ++ filemanip.h | 1 + inilintmain.cc | 7 + install.cc | 66 +++-- io_stream_cygfile.cc | 52 +--- libgetopt++/Makefile.am | 3 +- .../include/getopt++/StringChoiceOption.h | 41 +++ libgetopt++/src/StringChoiceOption.cc | 54 ++++ main.cc | 84 +++++- mklink2.cc | 256 +++++++++++++++++- mklink2.h | 10 + nio-ie5.cc | 12 +- script.cc | 36 +++ win32.cc | 76 ++++++ win32.h | 3 + 26 files changed, 775 insertions(+), 173 deletions(-) create mode 100644 libgetopt++/include/getopt++/StringChoiceOption.h create mode 100644 libgetopt++/src/StringChoiceOption.cc -- 2.32.0