Re: Gow, Cygwin alternative refers to GNU programs as open source UNIX tools

"Kaz Kylheku (gnu-misc-discuss)" <[email protected]>
Newsgroups gmane.org.gnu.discuss
Message-ID <[email protected]>
On 2020-10-27 14:24, Tobias Geerinckx-Rice wrote:
> Jean Louis 写道:
>> I did not notice it. There are no sources on Github, just binaries
> 
> They take some effort to miss:
> <https://github.com/bmatzelle/gow/releases/tag/v0.8.0>.

The situation here is that

- gow-utilities-src-0.8.0.tar contains the source code archives of
   the bundled utilities, but no build scripts or documentation.
   There is not even a hint as to what toolchain is required; we can
   guess from .dll files bundled with the executables that this
   that this project just extends MSYS (the run-time system for MinGW)
   and thus probably uses the environment with which that is built.

- The download links to a "Source code" .zip and .tar.gz file
   actually lead to archived snapshots of the git repository
   with the all the .exe files and no source code.

These issues are just simple omissions that can be easily rectified.
I suspect that the author thinks he has met the obligations by putting
out that big aggregate tar file containing the utility source tarballs.

In fact, there is actually no need to provide that, since those programs
have upstream repositories which have those.

Nowadays, distributions don't ship copies of the tarballs; the 
mainstream
practice is for build scripts to download tarballs from the original
upstream locations, or else mirrors, and then cache them locally.

Even if the build script doesn't do any downloading, if it is obvious
from its source code that it requires, say, sed-4.2.1-src, then the
user can manually procure that exact program.

What's troubling about the source code archive is that it contains .zip
files and not original tarballs.

$ tar tvf gow-utilities-src-0.8.0.tar
drwxrwxrwx 0/0               0 2014-02-15 10:30 gow-utilities-src-0.8.0/
-rwxrwxrwx 0/0          368562 2012-09-09 20:08 
gow-utilities-src-0.8.0/bc-1.06-2-src.zip
-rwxrwxrwx 0/0         3796772 2012-09-09 20:09 
gow-utilities-src-0.8.0/bison-2.4.1-src.zip
-rwxrwxrwx 0/0          416587 2012-09-09 20:10 
gow-utilities-src-0.8.0/bzip2-1.0.5-src.zip
-rwxrwxrwx 0/0         9371720 2012-09-10 06:48 
gow-utilities-src-0.8.0/coreutils-5.3.0-src.zip
-rwxrwxrwx 0/0         4007401 2012-09-10 07:13 
gow-utilities-src-0.8.0/curl-7.27.0-src.zip
-rwxrwxrwx 0/0         1482028 2012-09-10 06:45 
gow-utilities-src-0.8.0/diffutils-2.8.7-1-src.zip
[ ... ]

So in other words, the sources are repackaged, leading to the suspicion
that there are alterations. Distributions should use the original
sources: either pull from the real upstream git repositories or what
have you or use the official release tarballs.

Let's dig into this deeper, using Bison as our focus.  What we find 
inside
bison-2.4.1-src.zip is not just the Bison sources, but a tree structure 
containing
a build directory and other superfluous materials.

The Bison source is buried in this tree, at the relative path

    src/bison/2.4.1/bison-2.4.1-src

This is not identical to GNU Bison 2.4.1.

    $ diff -urN bison-2.4.1 
gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src | wc
    141896  509172 4155393

The diff exceeds four megabytes!  Some of the changes are due to line 
ending
differences: the files have been altered with carriage return 
characters.
However, this is not the bulk of it. If we suppress whitespace with -w, 
the
diff size is still about the same:

    $ diff -urNw bison-2.4.1 
gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src | wc
    141757  508598 4150945

Below is a small samples of the differences, which are serious. What is 
being called
bison-2.4.1 is certainly not bison-2.4.1:



--- bison-2.4.1/doc/bison.1     2008-12-11 14:07:25.000000000 -0800
+++ gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src/doc/bison.1 
2008-12-14 04:03:25.000000000 -0800
@@ -3,7 +3,7 @@
  .SH NAME
  bison \- GNU Project parser generator (yacc replacement)
  .SH SYNOPSIS
-.B bison
+.B j:\Devel\bison\2.4.1\bison-2.4.1\src\bison.exe
  [\fIOPTION\fR]... \fIFILE\fR
  .SH DESCRIPTION
  .I Bison
@@ -60,9 +60,12 @@
  .PP
  Generate LALR(1) and GLR parsers.
  .PP
+
  Mandatory arguments to long options are mandatory for short options 
too.
  The same is true for optional arguments.
-.SS "Operation modes:"
+.PP
+
+Operation modes:
  .TP
  \fB\-h\fR, \fB\-\-help\fR
  display this help and exit




diff -urNw bison-2.4.1/src/main.c 
gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src/src/main.c
--- bison-2.4.1/src/main.c      2008-11-19 08:57:30.000000000 -0800
+++ gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src/src/main.c  
2008-12-14 04:03:00.000000000 -0800
@@ -55,7 +55,7 @@
  int
  main (int argc, char *argv[])
  {
-  program_name = argv[0];
+  set_program_name (argv[0]);
    setlocale (LC_ALL, "");
    (void) bindtextdomain (PACKAGE, LOCALEDIR);
    (void) bindtextdomain ("bison-runtime", LOCALEDIR);





diff -urNw bison-2.4.1/src/Makefile.in 
gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src/src/Makefile.in
--- bison-2.4.1/src/Makefile.in	2008-12-11 14:05:55.000000000 -0800
+++ 
gow-bison-2.4.1/src/bison/2.4.1/bison-2.4.1-src/src/Makefile.in	2008-12-13 09:22:23.000000000 -0800
@@ -110,7 +110,7 @@
  	relation.$(OBJEXT) scan-code-c.$(OBJEXT) scan-gram-c.$(OBJEXT) \
  	scan-skel-c.$(OBJEXT) state.$(OBJEXT) symlist.$(OBJEXT) \
  	symtab.$(OBJEXT) tables.$(OBJEXT) uniqstr.$(OBJEXT) \
-	graphviz.$(OBJEXT)
+	graphviz.$(OBJEXT) bison-res.$(OBJEXT)
  bison_OBJECTS = $(am_bison_OBJECTS)
  bison_LDADD = $(LDADD)
  am__DEPENDENCIES_1 =
@@ -367,7 +367,7 @@
  LTLIBICONV = @LTLIBICONV@
  LTLIBINTL = @LTLIBINTL@
  LTLIBOBJS = @LTLIBOBJS@
-M4 = @M4@
+M4 = m4.exe
  MAKEINFO = @MAKEINFO@
  MKDIR_P = @MKDIR_P@
  MSGFMT = @MSGFMT@
@@ -430,6 +430,9 @@
  USE_NLS = @USE_NLS@
  VALGRIND = @VALGRIND@
  VERSION = @VERSION@
+MAJOR=$(shell echo $(VERSION) | sed -e "s/\..*$$//")
+MINOR=$(shell echo $(VERSION) | sed -e 
"s/^[^\.]*\.0*\([0-9]\+\).*$$/\1/")
+LDFLAGS += -Wl,--major-image-version=$(MAJOR) 
-Wl,--minor-image-version=$(MINOR)
  VOID_UNSETENV = @VOID_UNSETENV@
  WARN_CFLAGS = @WARN_CFLAGS@
  WARN_CXXFLAGS = @WARN_CXXFLAGS@
@@ -508,7 +511,7 @@
  AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
  AM_CPPFLAGS = -I$(top_srcdir)/lib
  AM_YFLAGS = "-dv"
-LDADD = ../lib/libbison.a $(LIBINTL)
+LDADD = ../lib/libbison.a $(LIBINTL) $(VERSADD)
  bin_SCRIPTS = $(YACC_SCRIPT)
  EXTRA_SCRIPTS = yacc
  bison_SOURCES = \
@@ -558,7 +561,7 @@
  	$(MAKE) $(AM_MAKEFLAGS) all-am

  .SUFFIXES:
-.SUFFIXES: .c .l .o .obj .y
+.SUFFIXES: .c .l .o .obj .y .rc
  $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
  	@for dep in $?; do \
  	  case '$(am__configure_deps)' in \
@@ -706,6 +709,12 @@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tables.Po@am__quote@
  @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uniqstr.Po@am__quote@

+# Rule to make compiled resource (Windows)
+resdir = @top_builddir@/resource
+vpath %-res.rc $(resdir)
+%-res.o: %-res.rc
+	windres --include-dir $(resdir) -i $< -o $@
+
  .c.o:
  @am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c 
-o $@ $<
  @am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
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.