Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing bin directory on Windows / Digraphs is not pre-compiled when distributed with GAP for Windows #138

Closed
nagygp opened this issue Oct 13, 2018 · 11 comments
Assignees
Labels
resolved A label for issues that are resolved, but not yet closed for some reason. wontfix A label for issues that we won't fix for whatever reason, no offence intended.

Comments

@nagygp
Copy link

nagygp commented Oct 13, 2018

It seems that neither the gap-4.9.3.exe, nor the gap-4.9.3-win.zip file does contain the directory ./pkg/digraphs-0.12.2/bin.

 ┌───────┐   GAP 4.9.3 of 05-Sep-2018
 │  GAP  │   https://www.gap-system.org
 └───────┘   Architecture: i686-pc-cygwin-default32
 Configuration:  gmp 6.0.0, readline
 Loading the library and packages ...
 Packages:   AClib 1.3, Alnuth 3.1.0, AtlasRep 1.5.1, AutPGrp 1.10, Browse 1.8.8, CRISP 1.4.4, Cryst 4.1.17,
             CrystCat 1.1.8, CTblLib 1.2.2, FactInt 1.6.2, FGA 1.4.0, GAPDoc 1.6.1, IO 4.5.2, IRREDSOL 1.4,
             LAGUNA 3.9.0, Polenta 1.3.8, Polycyclic 2.14, PrimGrp 3.3.1, RadiRoot 2.8, ResClasses 4.7.1,
             SmallGrp 1.3, Sophus 1.24, SpinSym 1.5, TomLib 1.2.6, TransGrp 2.0.4, utils 0.57
 Try '??help' for help. See also '?copyright', '?cite' and '?authors'
gap> LoadPackage("digraphs");
#I  Digraphs package is not available. To see further details, enter
#I  SetInfoLevel(InfoPackageLoading,4); and try to load the package again.
fail
gap> SetInfoLevel(InfoPackageLoading,4);
gap> LoadPackage("digraphs");
#I  Digraphs: entering LoadPackage
#I  Digraphs: PackageAvailabilityInfo for version 0.12.2
#I  Digraphs: the kernel module is not compiled,
#I            the package cannot be loaded.
#I  Digraphs: PackageAvailabilityInfo: the AvailabilityTest function returned fail
#I  Digraphs: PackageAvailabilityInfo: no installed version fits
#I  Digraphs: return from LoadPackage, package is not available
fail
gap>

The effect is that on Windows, Digraphs cannot be loaded "out of the box".

@olexandr-konovalov
Copy link
Contributor

@nagygp thank you for reporting. We are building Windows binaries for packages under cygwin while wrapping GAP distribution. I've looked at logs in one of the recent builds, and this is what happened:

==== Checking digraphs-0.13.0
Running './configure' '--with-gaproot=/cygdrive/c/gap-4.10.0' 'CFLAGS=-m32' 'LDFLAGS=-m32' 'LOPTS=-m32' 'CXXFLAGS=-m32' 
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking whether make supports the include directive... yes (GNU style)
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for ar... ar
checking the archiver (ar) interface... ar
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to print strings... printf
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/i686-pc-cygwin/bin/ld.exe
checking if the linker (/usr/i686-pc-cygwin/bin/ld.exe) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B
checking the name lister (/usr/bin/nm -B) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 8192
checking how to convert i686-pc-cygwin file names to i686-pc-cygwin format... func_convert_file_noop
checking how to convert i686-pc-cygwin file names to toolchain format... func_convert_file_noop
checking for /usr/i686-pc-cygwin/bin/ld.exe option to reload object files... -r
checking for objdump... objdump
checking how to recognize dependent libraries... file_magic ^x86 archive import|^x86 DLL
checking for dlltool... dlltool
checking how to associate runtime and link libraries... func_cygming_dll_for_implib
checking for archiver @FILE support... @
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for sysroot... no
checking for a working dd... /usr/bin/dd
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1
checking for mt... mt
checking if mt is a manifest tool... no
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for as... as
checking for dlltool... (cached) dlltool
checking for objdump... (cached) objdump
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -DDLL_EXPORT -DPIC
checking if gcc PIC flag -DDLL_EXPORT -DPIC works... yes
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... yes
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... no
checking how to run the C++ preprocessor... g++ -E
checking for ld used by g++... /usr/i686-pc-cygwin/bin/ld.exe
checking if the linker (/usr/i686-pc-cygwin/bin/ld.exe) is GNU ld... yes
checking whether the g++ linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared libraries... yes
checking for g++ option to produce PIC... -DDLL_EXPORT -DPIC
checking if g++ PIC flag -DDLL_EXPORT -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking for CONFIGNAME... none
checking for GAP root directory... /cygdrive/c/gap-4.10.0
checking for GAP architecture... i686-pc-cygwin-default32
checking for GAP >= 4.9... yes
checking whether to enable debug mode... no
checking for __builtin_popcountl... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/_pkgconfig.h
config.status: executing depfiles commands
config.status: executing src/digraphs-config.h commands
config.status: creating src/digraphs-config.h - prefix DIGRAPHS for src/_pkgconfig.h defines
config.status: executing libtool commands
Running 'make' 
CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/sh /cygdrive/c/gap-4.10.0/pkg/digraphs-0.13.0/cnf/missing aclocal-1.16 -I m4
/cygdrive/c/gap-4.10.0/pkg/digraphs-0.13.0/cnf/missing: line 81: aclocal-1.16: command not found
WARNING: 'aclocal-1.16' is missing on your system.
You should only need it if you modified 'acinclude.m4' or
'configure.ac' or m4 files included by 'configure.ac'.
The 'aclocal' program is part of the GNU Automake package:
<https://www.gnu.org/software/automake>
It also requires GNU Autoconf, GNU m4 and Perl in order to run:
<https://www.gnu.org/software/autoconf>
<https://www.gnu.org/software/m4/>
<https://www.perl.org/>
Makefile:462: recipe for target 'aclocal.m4' failed
make: *** [aclocal.m4] Error 127

WARNING: Failed to build digraphs-0.13.0

30 Sep 2018 21:44:03

@nagygp
Copy link
Author

nagygp commented Oct 14, 2018

Thanks, @alex-konovalov! This seems to be quite easy to fix. I guess GNU Autotools are available for cygwin.

Also, the official download file https://www.gap-system.org/pub/gap/gap4/win.zip/packages/digraphs-0.12.2-win.zip for Windows does not contain cygwin binaries.

I think this is unfortunate too, because you cannot expect from an average windows user (like a student) to be able to compile files with cygwin under Windows.

@olexandr-konovalov
Copy link
Contributor

olexandr-konovalov commented Oct 14, 2018

We are not expecting from package authors to provide Windows binaries. First of all, not of them are using Windows. Second, even if they have Cygwin installed, then their version may be different from the version we use to build GAP for Windows. That may be less of a problem for packages with stand-alone binaries, and more of a problem for packages with kernel modules.

Our model implies that a Windows user is not required to install Cygwin and build anything. They should be able to get the exe-installer or a -win.zip archive from the GAP downloads page and use the precompiled binaries. So in fact this issue is not within the Digraphs authors responsibility - it should rather be submitted to https://github.com/gap-system/gap-distribution/. But there is no need to resubmit it there - I have added it to the list at gap-system/gap#2804 instead.

If you use cygwin, then for you a temporary solution should not be hard to find. Also, I advice to take more advantages of Travis CI:

  • create a branch and submit a PR with the code and tests that exercise it
  • edit that branch (git commit --amend, git rebase -i master, git push -f are your friends) until tests pass
  • merge it.

You can handle this from Windows without your code being tested locally.

@james-d-mitchell james-d-mitchell added wontfix A label for issues that we won't fix for whatever reason, no offence intended. 0.12 labels Oct 15, 2018
@wilfwilson wilfwilson changed the title Missing bin directory on Windows Missing bin directory on Windows / Digraphs is not pre-compiled when distributed with GAP for Windows Nov 23, 2018
@olexandr-konovalov olexandr-konovalov self-assigned this Dec 2, 2018
@olexandr-konovalov
Copy link
Contributor

I have checked that downloading and compiling the current Digraphs under Cygwin works fine. I will work on making it available in the next GAP distribution for Windows.

@nagygp
Copy link
Author

nagygp commented Dec 2, 2018

Thanks, @alex-konovalov . The wontfix label by @james-d-mitchell irritated me a little bit. I thought I had to switch to GRAPE in my projects.

@olexandr-konovalov
Copy link
Contributor

I think "wontfix" here meant to mean "must be fixed somewhere else"...

@james-d-mitchell
Copy link
Member

Yes that is indeed what it means, that this is not a bug in Digraphs (as @alex-konovalov) said. It is just meant as a way for us (as the developers of DIgraphs) to keep track of the status of various issues, not anything else @nagygp

@wilfwilson
Copy link
Collaborator

@nagygp I believe (and hope!) that the necessary changes have been implemented so that Digraphs will be distributed pre-compiled and working with the next release of GAP, which will probably be GAP 4.11.

@james-d-mitchell james-d-mitchell added resolved-pending-release A label for issues that have been resolved and that can be closed when a new version is released. resolved A label for issues that are resolved, but not yet closed for some reason. and removed 0.12 resolved-pending-release A label for issues that have been resolved and that can be closed when a new version is released. labels Mar 28, 2019
@olexandr-konovalov
Copy link
Contributor

Digraphs for Windows is usable in just released GAP 4.10.2.

@wilfwilson
Copy link
Collaborator

Great!

@nagygp
Copy link
Author

nagygp commented Jun 25, 2019

We confirm, it works, thanks for all of you! :-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
resolved A label for issues that are resolved, but not yet closed for some reason. wontfix A label for issues that we won't fix for whatever reason, no offence intended.
Projects
None yet
Development

No branches or pull requests

4 participants