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

Can not install on latest Alpine image 3.21 #9

Open
nicolargo opened this issue Dec 27, 2024 · 2 comments
Open

Can not install on latest Alpine image 3.21 #9

nicolargo opened this issue Dec 27, 2024 · 2 comments

Comments

@nicolargo
Copy link

Installation is ok on Alpine image 3.20 but not on 3.21:

/ # ./venv/bin/pip install netifaces-plus
Collecting netifaces-plus
  Using cached netifaces_plus-0.12.4.tar.gz (30 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: netifaces-plus
  Building wheel for netifaces-plus (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for netifaces-plus (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [55 lines of output]
      <string>:13: SetuptoolsDeprecationWarning: Deprecated API usage.
      !!
      
              ********************************************************************************
              As setuptools moves its configuration towards `pyproject.toml`,
              `setuptools.config.read_configuration` became deprecated.
      
              For the time being, you can use the `setuptools.config.setupcfg` module
              to access a backward compatible API, but this module is provisional
              and might be removed in the future.
      
              To read project metadata, consider using
              ``build.util.project_wheel_metadata`` (https://pypi.org/project/build/).
              For simple scenarios, you can also try parsing the file directly
              with the help of ``configparser``.
              ********************************************************************************
      
      !!
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-312/netifaces
      copying netifaces/__init__.py -> build/lib.linux-x86_64-cpython-312/netifaces
      copying netifaces/__init__.pyi -> build/lib.linux-x86_64-cpython-312/netifaces
      copying netifaces/py.typed -> build/lib.linux-x86_64-cpython-312/netifaces
      running build_ext
      checking for getifaddrs...found.
      checking for getnameinfo...found.
      checking for IPv6 socket IOCTLs...not found.
      checking for optional header files...netpacket/packet.h linux/atm.h linux/llc.h linux/tipc.h.
      checking whether struct sockaddr has a length field...no.
      checking which sockaddr_xxx structs are defined...in in6 un ll atmpvc atmsvc llc.
      checking for routing socket support...no.
      checking for sysctl(CTL_NET...) support...no.
      checking for netlink support...yes.
      will use netlink to read routing table
      building '_netifaces' extension
      creating build/temp.linux-x86_64-cpython-312/netifaces
      gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -DNETIFACES_VERSION=0.12.4 -DHAVE_GETIFADDRS=1 -DHAVE_GETNAMEINFO=1 -DHAVE_NETPACKET_PACKET_H=1 -DHAVE_LINUX_ATM_H=1 -DHAVE_LINUX_LLC_H=1 -DHAVE_LINUX_TIPC_H=1 -DHAVE_SOCKADDR_IN=1 -DHAVE_SOCKADDR_IN6=1 -DHAVE_SOCKADDR_UN=1 -DHAVE_SOCKADDR_LL=1 -DHAVE_SOCKADDR_ATMPVC=1 -DHAVE_SOCKADDR_ATMSVC=1 -DHAVE_SOCKADDR_LLC=1 -DHAVE_PF_NETLINK=1 -I/venv/include -I/usr/include/python3.12 -c netifaces/_netifaces.c -o build/temp.linux-x86_64-cpython-312/netifaces/_netifaces.o
      netifaces/_netifaces.c: In function 'ifaddrs':
      netifaces/_netifaces.c:1259:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
       1259 |     if (addr->ifa_name == NULL || strcmp (addr->ifa_name, ifname) != 0)
            |     ^~
      netifaces/_netifaces.c:1262:7: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
       1262 |       PyObject* ifinfo = getifaddrsinfo(addr);
            |       ^~~~~~~~
      netifaces/_netifaces.c: In function 'gateways':
      netifaces/_netifaces.c:2006:9: error: initialization of 'int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
       2006 |         NULL,
            |         ^~~~
      netifaces/_netifaces.c:2006:9: note: (near initialization for 'msghdr.__pad1')
      netifaces/_netifaces.c:2041:33: warning: comparison of integer expressions of different signedness: '__u32' {aka 'unsigned int'} and 'int' [-Wsign-compare]
       2041 |         if (pmsg->hdr.nlmsg_seq != seq || pmsg->hdr.nlmsg_pid != sanl.nl_pid)
            |                                 ^~
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for netifaces-plus
Failed to build netifaces-plus
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (netifaces-plus)

Perhaps it came from the gcc version:

  • Alpine image 3.20: gcc (Alpine 13.2.1_git20240309) 13.2.1 20240309
  • Alpine image 3.21: gcc (Alpine 14.2.0) 14.2.0
@tsukumijima
Copy link
Owner

Originally, I was reluctantly maintaining this package, and I have not tested it on Alpine.
To be honest, I don't see much reason to use Alpine Docker or musl on most systems these days.

@nicolargo
Copy link
Author

Hi @tsukumijima,

i think that the issue did not came from Alpine but more by the GCC version.
netifaces-plus ( and netifaces) compilation fail with GCC >14.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants