setup: Require setuptools and entry_points:

This gives us a consistent experience and a simpler setup across all
operating systems. Setuptools is available everywhere these days.
pull/4004/head
Nirbheek Chauhan 6 years ago
parent 2ee28029f9
commit 86298f2109
  1. 2
      .appveyor.yml
  2. 40
      setup.py

@ -108,7 +108,7 @@ install:
- cmd: if %compiler%==msys2-mingw ( set "PATH=C:\msys64\mingw%PACMAN_BITS%\bin;%PATH%" )
- cmd: if %compiler%==msys2-mingw ( set "MESON_PYTHON_PATH=C:\msys64\mingw%PACMAN_BITS%\bin" )
- cmd: if %compiler%==msys2-mingw ( set "PYTHON=python3" )
- cmd: if %compiler%==msys2-mingw ( C:\msys64\usr\bin\pacman -S --needed --noconfirm "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3" )
- cmd: if %compiler%==msys2-mingw ( C:\msys64\usr\bin\pacman -S --needed --noconfirm "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3" "mingw%PACMAN_BITS%/mingw-w64-%PACMAN_ARCH%-python3-setuptools" )
# Cygwin
- cmd: if not %compiler%==cygwin ( set "PATH=%cd%;%MESON_PYTHON_PATH%;%PATH%;" )
- cmd: if %compiler%==cygwin ( set WRAPPER=ci\run-in-cygwin.bat )

@ -14,7 +14,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import sys
from mesonbuild.coredata import version
@ -24,43 +23,10 @@ if sys.version_info < (3, 5, 0):
'Meson requires Python 3.5.0 or greater')
sys.exit(1)
# We need to support Python installations that have nothing but the basic
# Python installation. Use setuptools when possible and fall back to
# plain distutils when setuptools is not available.
try:
from setuptools import setup
from setuptools.command.install_scripts import install_scripts as orig
except ImportError:
from distutils.core import setup
from distutils.command.install_scripts import install_scripts as orig
class install_scripts(orig):
def run(self):
if sys.platform == 'win32':
super().run()
return
if not self.skip_build:
self.run_command('build_scripts')
self.outfiles = []
if not self.dry_run:
self.mkpath(self.install_dir)
# We want the files to be installed without a suffix on Unix
for infile in self.get_inputs():
infile = os.path.basename(infile)
in_built = os.path.join(self.build_dir, infile)
in_stripped = infile[:-3] if infile.endswith('.py') else infile
outfile = os.path.join(self.install_dir, in_stripped)
# NOTE: Mode is preserved by default
self.copy_file(in_built, outfile)
self.outfiles.append(outfile)
entries = {}
if sys.platform == 'win32':
# This will create Scripts/meson.exe and Scripts/meson-script.py
# Can't use this on all platforms because distutils doesn't support
# entry_points in setup()
# On windows, will create Scripts/meson.exe and Scripts/meson-script.py
# Other platforms will create bin/meson
entries = {'console_scripts': ['meson=mesonbuild.mesonmain:main']}
setup(name='meson',
@ -78,8 +44,6 @@ setup(name='meson',
'mesonbuild.modules',
'mesonbuild.scripts',
'mesonbuild.wrap'],
scripts=['meson.py'],
cmdclass={'install_scripts': install_scripts},
entry_points=entries,
data_files=[('share/man/man1', ['man/meson.1']),
('share/polkit-1/actions', ['data/com.mesonbuild.install.policy'])],

Loading…
Cancel
Save