diff --git a/diff.py b/diff.py index 08733735..39bc5ba8 100644 --- a/diff.py +++ b/diff.py @@ -61,13 +61,6 @@ def upgrade_wiki(self, other): other.version, self.version, self.description) -def get_basedir(version, rootdir=None): - """Return basedir from WinPython version""" - rootdir = rootdir if rootdir is not None else utils.ROOT_DIR - assert rootdir is not None, "The *rootdir* directory must be specified" - return osp.join(rootdir, 'basedir%s' % version[::2][:2]) - - class PackageIndex(object): WINPYTHON_PATTERN = r'\#\# WinPython ([0-9\.a-zA-Z]*)' TOOLS_LINE = '### Tools' @@ -75,16 +68,17 @@ class PackageIndex(object): HEADER_LINE1 = 'Name | Version | Description' HEADER_LINE2 = '-----|---------|------------' - def __init__(self, version, rootdir=None, flavor=''): + def __init__(self, version, basedir=None, flavor=''): self.version = version self.other_packages = {} self.python_packages = {} self.flavor = flavor - basedir = get_basedir(version, rootdir=rootdir) + self.basedir = basedir self.from_file(basedir) def from_file(self, basedir): - fname = osp.join(basedir, 'build%s' % self.flavor, + #fname = osp.join(basedir, 'build%s' % self.flavor, + fname = osp.join(CHANGELOGS_DIR, 'WinPython%s-%s.md' % (self.flavor, self.version)) with open(fname, 'r') as fdesc: # python3 doesn't like 'rb' text = fdesc.read() @@ -154,9 +148,9 @@ def diff_package_dicts(dict1_in, dict2_in): return text -def find_closer_version(version1, rootdir=None, flavor=''): +def find_closer_version(version1, basedir=None, flavor=''): """Find version which is the closest to `version`""" - builddir = osp.join(get_basedir(version1, rootdir), 'build%s' % flavor) + builddir = osp.join(basedir, 'build%s' % flavor) func = lambda name: re.match(r'WinPython%s-([0-9\.]*)\.(txt|md)' % flavor, name) versions = [func(name).groups()[0] for name in os.listdir(builddir) if func(name)] @@ -170,11 +164,11 @@ def find_closer_version(version1, rootdir=None, flavor=''): return versions[index-1] -def compare_package_indexes(version2, version1=None, rootdir=None, flavor='', +def compare_package_indexes(version2, version1=None, basedir=None, flavor='', flavor1=None): """Compare two package index Wiki pages""" if version1 is None: - version1 = find_closer_version(version2, rootdir=rootdir, + version1 = find_closer_version(version2, basedir=basedir, flavor=flavor) flavor1 = flavor1 if flavor1 is not None else flavor text = '\r\n'.join(["## History of changes for WinPython %s" % @@ -182,8 +176,8 @@ def compare_package_indexes(version2, version1=None, rootdir=None, flavor='', "", "The following changes were made to WinPython " "distribution since version %s." % (version1+flavor1), "", ""]) - pi1 = PackageIndex(version1, rootdir=rootdir, flavor=flavor1) - pi2 = PackageIndex(version2, rootdir=rootdir, flavor=flavor) + pi1 = PackageIndex(version1, basedir=basedir, flavor=flavor1) + pi2 = PackageIndex(version2, basedir=basedir, flavor=flavor) tools_text = diff_package_dicts(pi1.other_packages, pi2.other_packages) if tools_text: text += PackageIndex.TOOLS_LINE + '\r\n\r\n' + tools_text @@ -203,13 +197,12 @@ def _copy_all_changelogs(version, basedir, flavor=''): osp.join(basedir, 'build%s' % flavor, name)) -def write_changelog(version2, version1=None, rootdir=None, flavor='', +def write_changelog(version2, version1=None, basedir=None, flavor='', release_level=''): """Write changelog between version1 and version2 of WinPython""" - basedir = get_basedir(version2, rootdir=rootdir) _copy_all_changelogs(version2, basedir, flavor=flavor) - print ('comparing_package_indexes', version2, rootdir, flavor) - text = compare_package_indexes(version2, version1, rootdir=rootdir, + print ('comparing_package_indexes', version2, basedir, flavor) + text = compare_package_indexes(version2, version1, basedir=basedir, flavor=flavor) fname = osp.join(basedir, 'build%s' % flavor, 'WinPython%s-%s_History.md' % (flavor, version2)) @@ -219,9 +212,9 @@ def write_changelog(version2, version1=None, rootdir=None, flavor='', shutil.copyfile(fname, osp.join(CHANGELOGS_DIR, osp.basename(fname))) -def test_parse_package_index_wiki(version, rootdir=None, flavor=''): +def test_parse_package_index_wiki(version, basedir=None, flavor=''): """Parse the package index Wiki page""" - pi = PackageIndex(version, rootdir=rootdir, flavor=flavor) + pi = PackageIndex(version, basedir=basedir, flavor=flavor) utils.print_box("WinPython %s:" % pi.version) utils.print_box("Tools:") for package in pi.other_packages.values(): @@ -238,8 +231,8 @@ def test_compare(basedir, version2, version1): if __name__ == '__main__': - print (compare_package_indexes('3.5.0.1', '3.4.3.6', - rootdir='D:\Winpython', flavor='Slim', flavor1='')) + print (compare_package_indexes('3.4.4.1', '3.4.3.6', + basedir='D:\Winpython\basedir34', flavor='Slim', flavor1='')) # test_parse_package_index_wiki('2.7.3.3') # print(compare_package_indexes('2.7.3.3', '2.7.3.1')) # write_changelog('2.7.4.1', '2.7.4.0') diff --git a/generate_a_winpython_distro.bat b/generate_a_winpython_distro.bat index 7a2885e1..5581df4b 100644 --- a/generate_a_winpython_distro.bat +++ b/generate_a_winpython_distro.bat @@ -9,6 +9,12 @@ rem set my_python_target=34 rem set my_pyver=3.4 rem set my_release=84 +rem ***************************** +rem v2 2016-03-19 change +rem we don't use building rootdir (D:\winPython) anymore +rem we use only building basedir (D:\WinPython\basedir34Qt5) +set my_basedir=%my_root_dir_for_builds%\basedir%my_python_target% + rem *********************************************************** rem Override other scripts (simpler maintenance) @@ -102,8 +108,8 @@ call %my_buildenv%\scripts\env.bat rem build with this cd /D %~dp0 -echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', rootdir=r'%my_root_dir_for_builds%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', requirements=r'%my_requirements%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%')">>%my_archive_log% -python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', rootdir=r'%my_root_dir_for_builds%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', requirements=r'%my_requirements%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%')">>%my_archive_log% +echo python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', requirements=r'%my_requirements%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%')">>%my_archive_log% +python.exe -c "from make import *;make_all(%my_release%, '%my_release_level%', pyver='%my_pyver%', basedir=r'%my_basedir%', verbose=True, architecture=%my_arch%, flavor='%my_flavor%', requirements=r'%my_requirements%', install_options=r'%my_install_options%', find_links=r'%my_find_links%', source_dirs=r'%my_source_dirs%', toolsdirs=r'%my_toolsdirs%', docsdirs=r'%my_docsdirs%')">>%my_archive_log% echo ===============>>%my_archive_log% echo END OF creation>>%my_archive_log% diff --git a/make.py b/make.py index c4836397..2ac14afd 100644 --- a/make.py +++ b/make.py @@ -99,7 +99,7 @@ class WinPythonDistribution(object): def __init__(self, build_number, release_level, target, wheeldir, toolsdirs=None, verbose=False, simulation=False, - rootdir=None, install_options=None, flavor='', docsdirs=None): + basedir=None, install_options=None, flavor='', docsdirs=None): assert isinstance(build_number, int) assert isinstance(release_level, str) self.build_number = build_number @@ -121,7 +121,7 @@ def __init__(self, build_number, release_level, target, wheeldir, self.distribution = None self.installed_packages = [] self.simulation = simulation - self.rootdir = rootdir # added to build from winpython + self.basedir = basedir # added to build from winpython self.install_options = install_options self.flavor = flavor @@ -1011,25 +1011,24 @@ def make(self, remove_existing=True, requirements=None, my_winpydir=None): #, f # Writing changelog self._print("Writing changelog") - diff.write_changelog(self.winpyver2, rootdir=self.rootdir, + diff.write_changelog(self.winpyver2, basedir=self.basedir, flavor=self.flavor, release_level=self.release_level) self._print_done() -def rebuild_winpython(basedir=None, verbose=False, archis=(32, 64), targetdir=None): +def rebuild_winpython(basedir=None, verbose=False, architecture=64, targetdir=None): """Rebuild winpython package from source""" basedir = basedir if basedir is not None else utils.BASE_DIR - for architecture in archis: - suffix = '.win32' if architecture == 32 else '.win-amd64' - if targetdir is not None: - packdir = targetdir - else: - packdir = osp.join(basedir, 'packages' + suffix) - for name in os.listdir(packdir): - if name.startswith('winpython-') and name.endswith(('.exe', '.whl')): - os.remove(osp.join(packdir, name)) - utils.build_wininst(osp.dirname(osp.abspath(__file__)), copy_to=packdir, - architecture=architecture, verbose=verbose, installer='bdist_wheel') + suffix = '.win32' if architecture == 32 else '.win-amd64' + if targetdir is not None: + packdir = targetdir + else: + packdir = osp.join(basedir, 'packages' + suffix) + for name in os.listdir(packdir): + if name.startswith('winpython-') and name.endswith(('.exe', '.whl')): + os.remove(osp.join(packdir, name)) + utils.build_wininst(osp.dirname(osp.abspath(__file__)), copy_to=packdir, + architecture=architecture, verbose=verbose, installer='bdist_wheel') def transform_in_list(list_in, list_type=None): @@ -1044,8 +1043,8 @@ def transform_in_list(list_in, list_type=None): def make_all(build_number, release_level, pyver, architecture, - basedir=None, verbose=False, remove_existing=True, - create_installer=True, simulation=False, rootdir=None, + basedir, verbose=False, remove_existing=True, + create_installer=True, simulation=False, install_options=['--no-index'], flavor='', requirements=None, find_links=None, source_dirs=None, toolsdirs=None, docsdirs=None): @@ -1061,13 +1060,10 @@ def make_all(build_number, release_level, pyver, architecture, `pyver`: python version ('3.4' or 3.5') `architecture`: [int] (32 or 64) `basedir`: where will be created tmp_wheel dir. and Winpython-xyz dir. - (rootdir: root directory containing 'basedir27', 'basedir33', etc.) """ + utils.ROOTDIR_DOC if basedir is None: basedir = utils.BASE_DIR - if basedir is None: - basedir = utils.get_basedir(pyver, rootdir=rootdir) assert basedir is not None, "The *basedir* directory must be specified" assert architecture in (32, 64) @@ -1085,7 +1081,7 @@ def make_all(build_number, release_level, pyver, architecture, os.mkdir(wheeldir) # Rebuild Winpython in this wheel dir - rebuild_winpython(basedir=basedir, archis=(architecture,), targetdir=wheeldir) + rebuild_winpython(basedir=basedir, architecture=architecture, targetdir=wheeldir) # Copy Every package directory to the wheel directory @@ -1114,7 +1110,7 @@ def make_all(build_number, release_level, pyver, architecture, dist = WinPythonDistribution(build_number, release_level, builddir, wheeldir, toolsdirs, verbose=verbose, simulation=simulation, - rootdir=rootdir, + basedir=basedir, install_options=install_options + find_list, flavor=flavor, docsdirs=docsdirs) # define a pre-defined winpydir, instead of having to guess @@ -1133,7 +1129,7 @@ def make_all(build_number, release_level, pyver, architecture, # DO create only one version at a time # You may have to manually delete previous build\winpython-.. directory - make_all(1, release_level='build3', pyver='3.4', rootdir=r'D:\Winpython', verbose=True, + make_all(1, release_level='build3', pyver='3.4', basedir=r'D:\Winpython\basedir34', verbose=True, architecture=64, flavor='Barebone', requirements=r'D:\Winpython\basedir34\barebone_requirements.txt', install_options=r'--no-index --pre --trusted-host=None', diff --git a/winpython/utils.py b/winpython/utils.py index 2a22002e..ecf2704a 100644 --- a/winpython/utils.py +++ b/winpython/utils.py @@ -48,19 +48,6 @@ * (optional) `tools.win-amd64`: contains 64-bit-specific tools""" -def get_basedir(pyver, rootdir=None): - """Get basedir from Python version - - `pyver`: Python version (X.Y format) [str] - `rootdir`: [str] if None, WINPYTHONROOTDIR env var must be set - (rootdir: root directory containing 'basedir27', 'basedir33', etc.) - """ + ROOTDIR_DOC - assert re.match(r'[0-9]+\.[0-9]+', pyver) is not None - rootdir = rootdir if rootdir is not None else ROOT_DIR - assert rootdir is not None, "The *rootdir* directory must be specified" - return osp.join(rootdir, 'basedir%s' % pyver[::2][:2]) - - def onerror(function, path, excinfo): """Error handler for `shutil.rmtree`.