GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — request to reopen Issue837046 - pyport.h redeclares gethostname() if SOLARIS is defined · Issue #63760 · python/cpython

request to reopen Issue837046 - pyport.h redeclares gethostname() if SOLARIS is defined #63760

New issue
Copy link
New issue
Copy link
Closed
Closed
request to reopen Issue837046 - pyport.h redeclares gethostname() if SOLARIS is defined#63760
Copy link
Labels
3.10 (EOL)end of lifeend of life3.8 (EOL)end of lifeend of life3.9 (EOL)end of lifeend of lifebuildThe build process and cross-buildThe build process and cross-build

Description

risto3
mannequin
opened on Nov 12, 2013
Issue body actions
BPO 19561
Nosy @jcea, @bitdancer, @0-wiz-0, @kulikjak
PRs
  • bpo-19561: Remove unnecessary gethostname() prototype for Solaris #23208
  • Files
  • Python26-10-gethostname.patch
  • tp.cpp: test program
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = None
    created_at = <Date 2013-11-12.14:39:41.350>
    labels = ['build', '3.8', '3.9', '3.10']
    title = 'request to reopen Issue837046 - pyport.h redeclares gethostname() if SOLARIS is defined'
    updated_at = <Date 2020-12-22.16:36:14.544>
    user = 'https://bugs.python.org/risto3'

    bugs.python.org fields:

    activity = <Date 2020-12-22.16:36:14.544>
    actor = 'kulikjak'
    assignee = 'none'
    closed = False
    closed_date = None
    closer = None
    components = ['Build']
    creation = <Date 2013-11-12.14:39:41.350>
    creator = 'risto3'
    dependencies = []
    files = ['32584', '32592']
    hgrepos = []
    issue_num = 19561
    keywords = ['patch']
    message_count = 8.0
    messages = ['202690', '202715', '202718', '202723', '202730', '240296', '380584', '380585']
    nosy_count = 7.0
    nosy_names = ['jcea', 'r.david.murray', 'wiz', 'python-dev', 'risto3', 'jbeck', 'kulikjak']
    pr_nums = ['23208']
    priority = 'normal'
    resolution = None
    stage = 'patch review'
    status = 'open'
    superseder = None
    type = 'compile error'
    url = 'https://bugs.python.org/issue19561'
    versions = ['Python 3.8', 'Python 3.9', 'Python 3.10']

    Linked PRs

    • gh-63760: Don't declare gethostname() on Solaris #108817
    • [3.12] gh-63760: Don't declare gethostname() on Solaris (#108817) #108824
    • [3.11] [3.12] gh-63760: Don't declare gethostname() on Solaris (GH-108817) (GH-108824) #108832

    Activity

    1. risto3 commented on Nov 12, 2013

      @risto3
      risto3mannequin
      on Nov 12, 2013
      MannequinAuthor
      More actions

      I'd like to have reopened this previous issue as it is still very much the case.

      I believe as well that the common distros (I can easily verify OpenIndiana and OmniOS) patch it out (patch file attached).
      Upstream/oracle/userland-gate seems to as well.

      It is time to retire this check, or at least take into consideration the parametrization from unistd.h:

      #if defined(_XPG4_2)
      extern int gethostname(char *, size_t);
      #elif  !defined(__XOPEN_OR_POSIX) || defined(__EXTENSIONS__)
      extern int gethostname(char *, int);
      #endif
    2. risto3
      added
      buildThe build process and cross-buildThe build process and cross-build
      on Nov 12, 2013
    3. bitdancer commented on Nov 12, 2013

      @bitdancer
      bitdancer
      on Nov 12, 2013
      Member
      More actions

      We have an OpenIndian buildbot that compiles from our source, so no distro changes. Can you sort out why this isn't a problem on the buildbut but is for you? Your patch files says 2.6, so is it possible it is fixed in 2.7?

    4. risto3 commented on Nov 12, 2013

      @risto3
      risto3mannequin
      on Nov 12, 2013
      MannequinAuthor
      More actions

      I don't believe the problem is a question solely of building the python sources, but also certain dependent application sources...

      I know of at least libreoffice building against python and this problem has come up.

      The workaround was to apply the patch indicated (here, on python3.3).

    5. bitdancer commented on Nov 12, 2013

      @bitdancer
      bitdancer
      on Nov 12, 2013
      Member
      More actions

      Libreoffice is a big thing to compile as a test...do you know of any smaller packages that exhibit the bug?

      I've added jcea to nosy, he set up the OpenIndiana buildbots and may be able to help clarify the issue. I'm not willing to opine on it since I don't know what effect modifying those directives might have on other platforms.

    6. bitdancer
      assigned
      jcea
      and unassigned
      jcea
      on Nov 12, 2013
    7. risto3 commented on Nov 13, 2013

      @risto3
      risto3mannequin
      on Nov 13, 2013
      MannequinAuthor
      More actions

      Sure, attached is a simple test found on the internet, compiled with the following reproduces the problem:

      richard@devzone:~/src$ /opt/local/gcc48/bin/g++ -o tp tp.cpp -DSOLARIS -I/opt/local/include/python2.7 -L/opt/local/lib -lpython2.7
      In file included from /opt/local/include/python2.7/Python.h:58:0,
      from tp.cpp:1:
      /opt/local/include/python2.7/pyport.h:645:35: error: declaration of C function 'int gethostname(char*, int)' conflicts with
      extern int gethostname(char *, int);
      ^
      In file included from /opt/local/include/python2.7/Python.h:44:0,
      from tp.cpp:1:
      /usr/include/unistd.h:351:12: error: previous declaration 'int gethostname(char*, uint_t)' here
      extern int gethostname(char *, size_t);

    8. jbeck commented on Apr 9, 2015

      @jbeck
      jbeckmannequin
      on Apr 9, 2015
      Mannequin
      More actions

      We (Solaris engineering) have hit this issue after migrating from 2.6
      being our default version of Python to 2.7 being the default. The
      specific component that broke was vim (version 7.4), trying to compile
      if_python.c:

      "/usr/include/python2.7/pyport.h", line 645: identifier redeclared:
      gethostname
      current : function(pointer to char, int) returning int
      previous: function(pointer to char, unsigned long) returning int :
      "/usr/include/unistd.h", line 412

      We had this patched out in Python 2.6's Include/pyport.h:

      -#ifdef SOLARIS
      -/* Unchecked */
      -extern int gethostname(char *, int);
      -#endif

      but for some reason that patch was not propagated to our 2.7 line.
      Until today, that is; I will be applying that patch shortly to both
      2.7 and 3.4.

    9. kulikjak commented on Nov 9, 2020

      @kulikjak
      kulikjakmannequin
      on Nov 9, 2020
      Mannequin
      More actions

      I think this code should be removed.

      It was added in its current form more than 20 years ago with the intention to add function declarations missing from system include files:
      1e0c2f4

      Today, every Solaris system should have gethostname() available in unistd.h. I am not sure when exactly was it added, but it was available in the OpenSolaris since the first commit (year 2005):
      https://github.com/illumos/illumos-gate/blame/master/usr/src/head/unistd.h#L344

      Also, AFAIK, 'SOLARIS' macro is not predefined on Solaris systems in compiler preprocessors today *; hence, unless compiled with -DSOLARIS, this code has no effect.

      *) I tested this with several GCC [7|9|10] and Solaris studio and neither of those defined it. It seems like it might have worked many years ago, but it certainly isn't a way to #ifdef Solaris today.

    10. kulikjak commented on Nov 9, 2020

      @kulikjak
      kulikjakmannequin
      on Nov 9, 2020
      Mannequin
      More actions

      And for the reference, Solaris distros are already removing this code:

      https://github.com/oracle/solaris-userland/blob/master/components/python/python37/patches/15-gethostname.patch
      https://github.com/OpenIndiana/oi-userland/blob/oi/hipster/components/python/python37/patches/15-gethostname.patch
      https://github.com/omniosorg/omnios-build/blob/master/build/python37/patches/15-gethostname.patch

    11. kulikjak
      added
      3.8 (EOL)end of lifeend of life
      3.9 (EOL)end of lifeend of life
      3.10 (EOL)end of lifeend of life
      on Dec 22, 2020
    12. ezio-melotti
      transferred this issue fromon Apr 10, 2022
    13. vstinner commented on Sep 2, 2023

      @vstinner
      vstinner
      on Sep 2, 2023
      Member
      More actions

      @kulikjak proposed at PR: #23208

    14. vstinner
      added 6 commits that reference this issue on Sep 2, 2023

      pythongh-63760: Solaris declares gethostname()

      cbe9c78

      pythongh-63760: Don't declare gethostname() on Solaris

      f85d6ac

      pythongh-63760: Don't declare gethostname() on Solaris

      b83c531

      pythongh-63760: Don't declare gethostname() on Solaris

      0c3aaad

      gh-63760: Don't declare gethostname() on Solaris (#108817)

      0e6d582

      pythongh-63760: Don't declare gethostname() on Solaris (python#108817)

      a61961c
    15. Yhg1s
      added a commit that references this issue on Sep 2, 2023

      [3.12] gh-63760: Don't declare gethostname() on Solaris (#108817) (#1…

      7269916
    16. miss-islington
      added a commit that references this issue on Sep 2, 2023

      [3.12] pythongh-63760: Don't declare gethostname() on Solaris (python…

      44fd787
    17. vstinner
      added a commit that references this issue on Sep 3, 2023

      [3.11] [3.12] gh-63760: Don't declare gethostname() on Solaris (GH-10…

      b30c83e
    18. vstinner commented on Sep 3, 2023

      @vstinner
      vstinner
      on Sep 3, 2023
      Member
      More actions

      Thanks for the fix @kulikjak, it's now merged in the 3 maintained branches.

      Reacted by Jakub Kulík
    19. vstinner
      closed this as completedon Sep 3, 2023
    20. vstinner commented on Sep 7, 2023

      @vstinner
      vstinner
      on Sep 7, 2023
      Member
      More actions

      See also issue #78469: Declare sethostname in socketmodule.c for SOLARIS.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      3.10 (EOL)end of lifeend of life3.8 (EOL)end of lifeend of life3.9 (EOL)end of lifeend of lifebuildThe build process and cross-buildThe build process and cross-build

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        You are visitor 01402520 — GeezerVison does not store the pages you look up.
        Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.