Miscellaneous notes from an user ... as he rebuilt cygwin1.dll against the 3.6.6 branch

"J.H. vd Water via Cygwin" <[email protected]>
Newsgroups gmane.os.cygwin
Message-ID <[email protected]>
Hi,

In addtion to my bug report from Mon Dec 15 15:53:31 GMT 2025

 - https://cygwin.com/pipermail/cygwin/2025-December/259133.html
   ( Bug in id command (when using the descr schema - Ch3 UG) ? )

Miscellaneous notes from an user ... as he rebuilt cygwin1.dll against the 3.6.6 nranch:

 1. verified Corinna's patchset [a] against the 3.6.6 branch (git --checkout cygwin-3.6.-branch)

 2. build w/ (among other switches) --disable-cygserver --disable-utils ... as I only wanted to rebuild cygwin1.dll

   - cygwin.cygport was modified as follows:

      PKG_NAMES="cygwin"
      BUILD_REQUIRES="autoconf automake cocom libiconv-devel gcc-g++ make patch perl"
      CYGCONF_ARGS="--disable-silent-rules --without-cross-bootstrap --disable-cygserver --disable-doc --disable-dumper --disable-utils"
      subsequenly corrected to:
      CYGCONF_ARGS="--disable-silent-rules --with-cross-bootstrap --disable-cygserver --disable-doc --disable-dumper --disable-utils"

  - build FAILED because Radek Bartoň's patch [1] has NOT been backported to the 3.6.6 branch (pushed to 3.7 only)
  - my 2nd attempt after Radek's patchset (3) had been applied:
   - testsuite/mingw is STILL being built, despite specifying --without-cross-bootstrap (i.e. the WRONG switch!)

 3. --without-cross-bootstrap [2] should be --with-cross-bootstrap -- in case we only want to rebuild cygwin1.dll (FAQ 6.21 is wrong)

Proof below.

 4. Radek Bartoň 2nd patch [3] is wrong -- note: patch was not approved (neither was it pushed to the central repo)
Although
    if test "x$with_cross_bootstrap" != "xyes"; then hunt for the mingw tools; fi ... is correct,
this modification is far better to understand:
    if test "x$with_cross_bootstrap" == "xno";  then hunt for the mingw tools; fi

Ditto AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"])

See below.

-----
[a]
 - https://cygwin.com/pipermail/cygwin-patches/2025q4/014481.html ... reviewed by Takashi Yano, pushed (3.7) by Corinna
   ( [PATCH v2 0/4] Fix overriding primary group )
(it would be nice if this patchset is backported to the 3.6.6 branch)

[1] Radek's 1st patchset
 - https://sourceware.org/pipermail/cygwin-patches/2025q3/014175.html ... reviewd by Jon T., pushed (3.7) by Jon
   ( [PATCH v4] Cygwin: configure: add possibility to skip build of cygserver and utils )
   Mon Jul 21 07:40:37 GMT 2025
(it would be nice if this patchset is backported to the 3.6.6 branch)

[2] Corinna's patch from February 1, 2024 (aq.programming.building-cygwin 6.21)
 - https://cygwin.com/cgit/cygwin-htdocs/commit/faq/faq.html?id=9d693eea564ec608569c2f5d78536827e99f1661
   ( Cygwin 3.5.0 release )
   2024-02-01 12:29:28 +0100
(should be corrected)

[3] Radek's 2nd patch
 - https://cygwin.com/pipermail/cygwin-patches/2025q3/014248.html
   ( [PATCH] Cygwin: configure: allow zero-level bootstrapping cross-build with --without-cross-bootstrap (and cross-testing without) )
   Fri Jul 25 21:40:40 GMT 2025

-----
Ad 2.
Proof why using --without-cross-bootstrap is WRONG if one does NOT want the mingw tools to be invoked ...

Source: https://autotools.info/autoconf/arguments.html

See <newlib-cygwin>/winsup/configure.ac ... around line 45

cat configure.ac: (testfile)

AC_INIT([myproject], [123], [[email protected]], [https://autotools.io/])

AC_ARG_WITH([cross-bootstrap],
  [AS_HELP_STRING([--with-cross-bootstrap],     # <==== WITH !!!
   [do not build programs using the MinGW toolchain or check for MinGW libraries (useful for bootstrapping a cross-compiler)])],
  [],
  [with_cross_bootstrap=no])

echo $with_cross_bootstrap
#= eof

64-@@ ./configure --version
autoconf (GNU Autoconf) 2.72
...

64-@@ rm -fr autom4te.cache configure
64-@@ autoconf
/usr/share/autoconf2.7/autoconf/trailer.m4:4: warning: AC_OUTPUT was never used

64-@@ ./configure
no
64-@@ ./configure -with-cross-bootstrap
yes
64-@@ ./configure -with-cross-bootstrap=no
no
64-@@ ./configure -without-cross-bootstrap
no

64-@@ ./configure -without-cross-bootstrap=yes
configure: error: invalid package name: 'cross-bootstrap=yes'
64-@@ ./configure -without-cross-bootstrap=no
configure: error: invalid package name: 'cross-bootstrap=no'

Summarized:
 switch           variable
 - no switch =>   with_... = no
 - --with- =>     with_... = yes
 - --without- =>  with_... = no

-----
Ad 3.
Radek's 2nd patch, w.r.t. to winsup/configure.ac, is WRONG.

Source: (again) https://autotools.info/autoconf/arguments.html

winsup/configure.ac ... around line 43
AC_ARG_WITH([cross_bootstrap],
    [AS_HELP_STRING([--with-cross-bootstrap], do not use the mingw tools ...
  [],
  [with_cross_bootstrap=no]) <==== if no switch is specified (i.e. the default), this value is assigned

Note:
 a. no switch specified          => with_cross_bootstrap=no
 b. --with-cross-bootstrap       => with_cross_bootstrap=yes
 c. --without-cross-bootstrap    => with_cross_bootstrap=no (i.e. recognized as the inverted switch)
Attention:
 d. --with-cross-bootstrap=no    => with_cross_bootstrap=no
 e. --with-cross-bootstrap=yes   => with_cross_bootstrap=yes

winsup/configure.ac ... around line 116

Replace
if test "x$with_cross_bootstrap" != "xyes"; then
By:
if test "x$with_cross_bootstrap" == "xno"; then                                 <==== far better to understand
    < check availability of x86_64--w64-mingw32-{gcc,g++}, stop if not found >
fi

Replace
AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" != "xyes"]) # returns true if --with-cross-bootstrap has been specified
By:
AM_CONDITIONAL(CROSS_BOOTSTRAP, [test "x$with_cross_bootstrap" == "xno"])       <==== far better to understand

--with_cross_bootstrap=yes (winsup/configure.ac) => CROSS_BOOTSTRAP_TRUE='#' (src/winsup/configure)
  => @CROSS_BOOTSTRAP_TRUE@SUBDIRS = mingw (src/winsup/testsuite/Makefile.in), i.e. @SUBDIRS = mingw will be ignored
  => if CROSS_BOOTSTRAP SUBDIR = mingw endif (src/winsup/testsuite/Makefile.in), i.e. SUBDIR = mingw will be ignored
(the same applies to src/winsup/utils/Makefile.{am,in} )

As an alternative, the option name should be renamed if "cross-bootstrap" creates confusion:

AC_ARG_WITH([skip-mingw],
    [AS_HELP_STRING([--with-skip-mingw], do not use the mingw tools ...
  [],
  [with_skip_mingw=no]) <==== if no switch is specified (i.e. the default) ... or if --without-skip-mingw is specified

if test "x$with_skip_mingw" != "xyes"; then
  hunt for the mingw tools
fi

=====

-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.