Patchwork D7875: packaging: leverage os.path.relpath() in setup.py

login
register
mail settings
Submitter phabricator
Date Jan. 14, 2020, 10:18 p.m.
Message ID <differential-rev-PHID-DREV-42yfzppbn3mltg6k2ip3-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/44342/
State Superseded
Headers show

Comments

phabricator - Jan. 14, 2020, 10:18 p.m.
martinvonz created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  `os.path.relpath()` has existed since Python 2.6, so we can safely use
  it. This fixes a bug in the current code when the common prefix is "/"
  (in which case `uplevel` would be one less than it should).

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D7875

AFFECTED FILES
  setup.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -1064,11 +1064,7 @@ 
             # absolute path instead
             libdir = self.install_lib
         else:
-            common = os.path.commonprefix((self.install_dir, self.install_lib))
-            rest = self.install_dir[len(common) :]
-            uplevel = len([n for n in os.path.split(rest) if n])
-
-            libdir = uplevel * ('..' + os.sep) + self.install_lib[len(common) :]
+            libdir = os.path.relpath(self.install_lib, self.install_dir)
 
         for outfile in self.outfiles:
             with open(outfile, 'rb') as fp: