2017-10-24 18:34:35 +01:00
|
|
|
#!/usr/bin/python3
|
|
|
|
|
2025-01-01 07:39:17 +00:00
|
|
|
## Copyright (C) 2017-2025 Free Software Foundation, Inc.
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
## This file is part of GNU Emacs.
|
|
|
|
|
|
|
|
## GNU Emacs is free software: you can redistribute it and/or modify
|
|
|
|
## it under the terms of the GNU General Public License as published by
|
|
|
|
## the Free Software Foundation, either version 3 of the License, or
|
|
|
|
## (at your option) any later version.
|
|
|
|
|
|
|
|
## GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
## GNU General Public License for more details.
|
|
|
|
|
|
|
|
## You should have received a copy of the GNU General Public License
|
|
|
|
## along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
import argparse
|
|
|
|
import os
|
|
|
|
import shutil
|
|
|
|
import re
|
2024-12-24 23:55:21 -06:00
|
|
|
import subprocess
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
from subprocess import check_output
|
|
|
|
|
|
|
|
## Constants
|
2024-12-24 23:55:21 -06:00
|
|
|
EMACS_MAJOR_VERSION= os.getenv('EMACS_MAJOR_VERSION') or "30"
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
# Base URI for the package sources mapped in PKG_REQ
|
|
|
|
SRC_REPO="https://repo.msys2.org/mingw/sources"
|
|
|
|
|
|
|
|
# Map items in `dynamic-library-alist' to source pakages
|
2019-06-04 15:02:33 +01:00
|
|
|
PKG_REQ='''mingw-w64-x86_64-giflib
|
|
|
|
mingw-w64-x86_64-gnutls
|
2020-03-23 09:38:36 +00:00
|
|
|
mingw-w64-x86_64-harfbuzz
|
2024-12-24 23:55:21 -06:00
|
|
|
mingw-w64-x86_64-jansson
|
2019-06-04 15:02:33 +01:00
|
|
|
mingw-w64-x86_64-lcms2
|
|
|
|
mingw-w64-x86_64-libjpeg-turbo
|
|
|
|
mingw-w64-x86_64-libpng
|
|
|
|
mingw-w64-x86_64-librsvg
|
2024-12-24 23:55:21 -06:00
|
|
|
mingw-w64-x86_64-libwebp
|
2019-06-04 15:02:33 +01:00
|
|
|
mingw-w64-x86_64-libtiff
|
|
|
|
mingw-w64-x86_64-libxml2
|
2024-12-24 23:55:21 -06:00
|
|
|
mingw-w64-x86_64-gmp
|
|
|
|
mingw-w64-x86_64-xpm-nox
|
|
|
|
mingw-w64-x86_64-tree-sitter
|
|
|
|
mingw-w64-x86_64-sqlite3'''.split()
|
|
|
|
|
|
|
|
# Emacs style path to dependancy DLLs on build system
|
|
|
|
DLL_SRC="c:/msys64/mingw64/bin"
|
|
|
|
|
|
|
|
# libraries we never include
|
|
|
|
DLL_SKIP=["libgccjit-0.dll"]
|
|
|
|
|
|
|
|
# Report first existing file for entries in dynamic-library-alist
|
|
|
|
# ELISP_PROG="""
|
|
|
|
# (message "%s" (mapconcat 'identity (remove nil
|
|
|
|
# (mapcar (lambda(lib)
|
|
|
|
# (seq-find
|
|
|
|
# (lambda(file)
|
|
|
|
# (file-exists-p
|
|
|
|
# (file-name-concat "{}"
|
|
|
|
# file)))
|
|
|
|
# (cdr lib)))
|
|
|
|
# dynamic-library-alist)
|
|
|
|
# ) "\\n"))
|
|
|
|
# """.format(DLL_SRC)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
## Options
|
|
|
|
DRY_RUN=False
|
2024-12-24 23:55:21 -06:00
|
|
|
# NEW_EMACS="bin/emacs.exe"
|
2021-01-07 22:06:53 +00:00
|
|
|
|
|
|
|
def check_output_maybe(*args,**kwargs):
|
|
|
|
if(DRY_RUN):
|
|
|
|
print("Calling: {}{}".format(args,kwargs))
|
|
|
|
else:
|
|
|
|
return check_output(*args,**kwargs)
|
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
####################
|
2021-01-07 22:06:53 +00:00
|
|
|
## DLL Capture
|
2024-12-24 23:55:21 -06:00
|
|
|
|
|
|
|
# entry point
|
2021-01-14 22:51:13 +00:00
|
|
|
def gather_deps():
|
2021-01-07 22:06:53 +00:00
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
os.mkdir("x86_64")
|
|
|
|
os.chdir("x86_64")
|
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
#full=full_dll_dependency(init_deps())
|
|
|
|
#filtered=filter(lambda x: x not in DLL_SKIP, full)
|
|
|
|
#print("full:",full.len(), " filtered:",filtered.len())
|
|
|
|
#exit
|
|
|
|
|
|
|
|
for dep in full_dll_dependency(init_deps()):
|
|
|
|
if dep not in DLL_SKIP:
|
|
|
|
if args.l != True:
|
|
|
|
print("Adding dep", dep)
|
|
|
|
check_output_maybe(["cp /mingw64/bin/{} .".format(dep)], shell=True)
|
|
|
|
else:
|
|
|
|
if args.l != True:
|
|
|
|
print("Skipping dep", dep)
|
|
|
|
|
|
|
|
zipfile="../emacs-{}-{}deps.zip".format(EMACS_MAJOR_VERSION, DATE)
|
|
|
|
tmpfile="{}.tmp".format(zipfile)
|
|
|
|
print("Zipping deps in", os.getcwd(), "as", tmpfile)
|
|
|
|
check_output_maybe("zip -9vr {} *.dll".format(tmpfile), shell=True)
|
|
|
|
if os.path.isfile(zipfile):
|
|
|
|
os.remove(zipfile)
|
|
|
|
os.rename(tmpfile, zipfile)
|
|
|
|
print("Deps updated in", os.getcwd(), "as", zipfile)
|
2021-01-07 22:06:53 +00:00
|
|
|
os.chdir("../")
|
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
# Return dependancies listed in Emacs
|
|
|
|
def init_deps():
|
|
|
|
return '''libXpm-nox4.dll
|
|
|
|
libpng16-16.dll
|
|
|
|
libjpeg-8.dll
|
|
|
|
libgif-7.dll
|
|
|
|
librsvg-2-2.dll
|
|
|
|
libwebp-7.dll
|
|
|
|
libwebpdemux-2.dll
|
|
|
|
libsqlite3-0.dll
|
|
|
|
libgdk_pixbuf-2.0-0.dll
|
|
|
|
libglib-2.0-0.dll
|
|
|
|
libgio-2.0-0.dll
|
|
|
|
libgobject-2.0-0.dll
|
|
|
|
libgnutls-30.dll
|
|
|
|
libxml2-2.dll
|
|
|
|
zlib1.dll
|
|
|
|
liblcms2-2.dll
|
|
|
|
libgccjit-0.dll
|
|
|
|
libtree-sitter.dll'''.split()
|
|
|
|
# job_args=[NEW_EMACS, "--batch", "--eval", ELISP_PROG]
|
|
|
|
# #print("args: ", job_args)
|
|
|
|
# return subprocess.check_output(job_args, stderr=subprocess.STDOUT
|
|
|
|
# ).decode('utf-8').splitlines()
|
|
|
|
|
|
|
|
# Return all second order dependencies
|
|
|
|
def full_dll_dependency(dlls):
|
|
|
|
deps = [dll_dependency(dep) for dep in dlls]
|
|
|
|
return set(sum(deps, []) + dlls)
|
|
|
|
|
|
|
|
#xs = filter(lambda x: x.attribute == value, xs)
|
|
|
|
|
|
|
|
# Dependencies for a given DLL
|
2021-01-14 22:51:13 +00:00
|
|
|
def dll_dependency(dll):
|
2021-01-07 22:06:53 +00:00
|
|
|
output = check_output(["/mingw64/bin/ntldd", "--recursive",
|
2024-12-24 23:55:21 -06:00
|
|
|
"/mingw64/bin/{}".format(dll)]
|
|
|
|
).decode("utf-8")
|
2021-01-07 22:06:53 +00:00
|
|
|
## munge output
|
|
|
|
return ntldd_munge(output)
|
|
|
|
|
|
|
|
def ntldd_munge(out):
|
|
|
|
deps = out.splitlines()
|
|
|
|
rtn = []
|
|
|
|
for dep in deps:
|
|
|
|
## Output looks something like this
|
|
|
|
|
|
|
|
## KERNEL32.dll => C:\Windows\SYSTEM32\KERNEL32.dll (0x0000000002a30000)
|
|
|
|
## libwinpthread-1.dll => C:\msys64\mingw64\bin\libwinpthread-1.dll (0x0000000000090000)
|
|
|
|
|
|
|
|
## if it's the former, we want it, if its the later we don't
|
|
|
|
splt = dep.split()
|
2024-12-24 23:55:21 -06:00
|
|
|
if len(splt) > 2 and "mingw64" in splt[2]:
|
|
|
|
rtn.append(splt[0])
|
2021-01-07 22:06:53 +00:00
|
|
|
|
|
|
|
return rtn
|
|
|
|
|
|
|
|
#### Source Capture
|
|
|
|
|
2017-10-24 18:34:35 +01:00
|
|
|
## Packages to fiddle with
|
2019-06-04 15:02:33 +01:00
|
|
|
## Source for gcc-libs is part of gcc
|
|
|
|
SKIP_SRC_PKGS=["mingw-w64-gcc-libs"]
|
2024-12-24 23:55:21 -06:00
|
|
|
SKIP_DEP_PKGS=["mingw-w64-glib2", "mingw-w64-ca-certificates-20211016-3"]
|
|
|
|
MUNGE_SRC_PKGS={
|
|
|
|
"mingw-w64-libwinpthread-git":"mingw-w64-winpthreads-git",
|
|
|
|
"mingw-w64-gettext-runtime":"mingw-w64-gettext"
|
|
|
|
}
|
2019-06-04 15:02:33 +01:00
|
|
|
MUNGE_DEP_PKGS={
|
|
|
|
"mingw-w64-x86_64-libwinpthread":"mingw-w64-x86_64-libwinpthread-git",
|
|
|
|
"mingw-w64-x86_64-libtre": "mingw-w64-x86_64-libtre-git",
|
|
|
|
}
|
2024-12-24 23:55:21 -06:00
|
|
|
SRC_EXT={
|
|
|
|
"mingw-w64-freetype": ".src.tar.zst",
|
|
|
|
"mingw-w64-fribidi": ".src.tar.zst",
|
|
|
|
"mingw-w64-glib2": ".src.tar.zst",
|
|
|
|
"mingw-w64-harfbuzz": ".src.tar.zst",
|
|
|
|
"mingw-w64-libunistring": ".src.tar.zst",
|
|
|
|
"mingw-w64-winpthreads-git": ".src.tar.zst",
|
|
|
|
"mingw-w64-ca-certificates": ".src.tar.zst",
|
|
|
|
"mingw-w64-libxml2": ".src.tar.zst",
|
|
|
|
"mingw-w64-ncurses": ".src.tar.zst",
|
|
|
|
"mingw-w64-openssl": ".src.tar.zst",
|
|
|
|
"mingw-w64-pango": ".src.tar.zst",
|
|
|
|
"mingw-w64-python": ".src.tar.zst",
|
|
|
|
"mingw-w64-sqlite3": ".src.tar.zst",
|
|
|
|
"mingw-w64-xpm-nox": ".src.tar.zst",
|
|
|
|
"mingw-w64-xz": ".src.tar.zst",
|
|
|
|
"mingw-w64-bzip2": ".src.tar.zst",
|
|
|
|
"mingw-w64-cairo": ".src.tar.zst",
|
|
|
|
"mingw-w64-expat": ".src.tar.zst",
|
|
|
|
"mingw-w64-fontconfig": ".src.tar.zst",
|
|
|
|
"mingw-w64-gdk-pixbuf2": ".src.tar.zst",
|
|
|
|
"mingw-w64-giflib": ".src.tar.zst",
|
|
|
|
"mingw-w64-gmp": ".src.tar.zst",
|
|
|
|
"mingw-w64-gnutls": ".src.tar.zst",
|
|
|
|
"mingw-w64-graphite2": ".src.tar.zst",
|
|
|
|
"mingw-w64-jbigkit": ".src.tar.zst",
|
|
|
|
"mingw-w64-lcms2": ".src.tar.zst",
|
|
|
|
"mingw-w64-lerc": ".src.tar.zst",
|
|
|
|
"mingw-w64-libdatrie": ".src.tar.zst",
|
|
|
|
"mingw-w64-libffi": ".src.tar.zst",
|
|
|
|
"mingw-w64-libiconv": ".src.tar.zst",
|
|
|
|
"mingw-w64-libiconv": ".src.tar.zst",
|
|
|
|
"mingw-w64-libpng": ".src.tar.zst",
|
|
|
|
"mingw-w64-librsvg": ".src.tar.zst",
|
|
|
|
"mingw-w64-libsystre": ".src.tar.zst",
|
|
|
|
"mingw-w64-libtasn": ".src.tar.zst",
|
|
|
|
"mingw-w64-libthai": ".src.tar.zst",
|
|
|
|
"mingw-w64-libtiff": ".src.tar.zst",
|
|
|
|
"mingw-w64-libtre-git": ".src.tar.zst",
|
|
|
|
"mingw-w64-libwebp": ".src.tar.zst",
|
|
|
|
"mingw-w64-mpdecimal": ".src.tar.zst",
|
|
|
|
"mingw-w64-nettle": ".src.tar.zst",
|
|
|
|
"mingw-w64-p11-kit": ".src.tar.zst",
|
|
|
|
"mingw-w64-pcre": ".src.tar.zst",
|
|
|
|
"mingw-w64-pixman": ".src.tar.zst",
|
|
|
|
"mingw-w64-python-packaging": ".src.tar.zst",
|
|
|
|
"mingw-w64-readline": ".src.tar.zst",
|
|
|
|
"mingw-w64-tcl": ".src.tar.zst",
|
|
|
|
"mingw-w64-termcap": ".src.tar.zst",
|
|
|
|
"mingw-w64-tk": ".src.tar.zst",
|
|
|
|
"mingw-w64-tree-sitter": ".src.tar.zst",
|
|
|
|
"mingw-w64-tzdata": ".src.tar.zst",
|
|
|
|
"mingw-w64-wineditline": ".src.tar.zst",
|
|
|
|
"mingw-w64-zlib": ".src.tar.zst",
|
|
|
|
"mingw-w64-zstd": ".src.tar.zst",
|
|
|
|
"mingw-w64-brotli": ".src.tar.zst",
|
|
|
|
"mingw-w64-gettext": ".src.tar.zst",
|
|
|
|
"mingw-w64-libdeflate": ".src.tar.zst",
|
|
|
|
"mingw-w64-libidn2": ".src.tar.zst",
|
|
|
|
"mingw-w64-libjpeg-turbo": ".src.tar.zst",
|
|
|
|
"mingw-w64-libtasn1": ".src.tar.zst",
|
|
|
|
"mingw-w64-pcre2": ".src.tar.zst",
|
|
|
|
}
|
2018-03-26 12:49:50 +01:00
|
|
|
|
|
|
|
## Currently no packages seem to require this!
|
|
|
|
ARCH_PKGS=[]
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
def immediate_deps(pkg):
|
|
|
|
package_info = check_output(["pacman", "-Si", pkg]).decode("utf-8").split("\n")
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
## Extract the "Depends On" line
|
|
|
|
depends_on = [x for x in package_info if x.startswith("Depends On")][0]
|
|
|
|
## Remove "Depends On" prefix
|
|
|
|
dependencies = depends_on.split(":")[1]
|
2019-06-04 15:02:33 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
## Split into dependencies
|
|
|
|
dependencies = dependencies.strip().split(" ")
|
2019-06-04 15:02:33 +01:00
|
|
|
|
2019-12-10 20:04:36 -08:00
|
|
|
## Remove > signs TODO can we get any other punctuation here?
|
2019-06-04 15:02:33 +01:00
|
|
|
dependencies = [d.split(">")[0] for d in dependencies if d]
|
|
|
|
dependencies = [d for d in dependencies if not d == "None"]
|
|
|
|
|
|
|
|
dependencies = [MUNGE_DEP_PKGS.get(d, d) for d in dependencies]
|
|
|
|
return dependencies
|
|
|
|
|
|
|
|
|
2021-01-07 22:06:53 +00:00
|
|
|
## Extract all the msys2 packages that are dependencies of our direct dependencies
|
2017-10-24 18:34:35 +01:00
|
|
|
def extract_deps():
|
|
|
|
|
2018-03-26 12:49:50 +01:00
|
|
|
print( "Extracting deps" )
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
# Get a list of all dependencies needed for packages mentioned above.
|
2024-12-24 23:55:21 -06:00
|
|
|
pkgs = PKG_REQ[:]
|
|
|
|
n = 0
|
|
|
|
while n < len(pkgs):
|
|
|
|
subdeps = immediate_deps(pkgs[n])
|
|
|
|
for p in subdeps:
|
|
|
|
if not (p in pkgs or p in SKIP_DEP_PKGS):
|
|
|
|
pkgs.append(p)
|
|
|
|
n = n + 1
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
return sorted(pkgs)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
|
|
|
|
def download_source(tarball):
|
2019-06-04 15:02:33 +01:00
|
|
|
print("Acquiring {}...".format(tarball))
|
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
if not os.path.exists("../emacs-src-cache/{}".format(tarball)):
|
2019-06-04 15:02:33 +01:00
|
|
|
print("Downloading {}...".format(tarball))
|
|
|
|
check_output_maybe(
|
2021-11-14 02:06:26 +01:00
|
|
|
"wget -a ../download.log -O ../emacs-src-cache/{} {}/{}"
|
2019-06-04 15:02:33 +01:00
|
|
|
.format(tarball, SRC_REPO, tarball),
|
|
|
|
shell=True
|
|
|
|
)
|
|
|
|
print("Downloading {}... done".format(tarball))
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
print("Copying {} from local".format(tarball))
|
|
|
|
shutil.copyfile("../emacs-src-cache/{}".format(tarball),
|
|
|
|
"{}".format(tarball))
|
|
|
|
|
|
|
|
|
2021-01-07 22:06:53 +00:00
|
|
|
## Fetch all the source code
|
2017-10-24 18:34:35 +01:00
|
|
|
def gather_source(deps):
|
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
if not os.path.exists("emacs-src-cache"):
|
|
|
|
os.mkdir("emacs-src-cache")
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
os.mkdir("emacs-src")
|
|
|
|
os.chdir("emacs-src")
|
|
|
|
|
|
|
|
for pkg in deps:
|
|
|
|
pkg_name_and_version= \
|
|
|
|
check_output(["pacman","-Q", pkg]).decode("utf-8").strip()
|
|
|
|
|
|
|
|
## Produces output like:
|
|
|
|
## mingw-w64-x86_64-zlib 2.43.2
|
|
|
|
pkg_name_components = pkg_name_and_version.split()
|
|
|
|
pkg_name=pkg_name_components[0]
|
|
|
|
pkg_version=pkg_name_components[1]
|
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
## source pkgs don't have an architecture in them
|
|
|
|
pkg_name = re.sub(r"x86_64-","",pkg_name)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
if(pkg_name in SKIP_SRC_PKGS):
|
2017-10-24 18:34:35 +01:00
|
|
|
continue
|
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
## Switch names if necessary
|
|
|
|
pkg_name = MUNGE_SRC_PKGS.get(pkg_name,pkg_name)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
## src archive is usually a .tar.gz
|
|
|
|
if pkg_name in SRC_EXT.keys():
|
|
|
|
src_ext = SRC_EXT[pkg_name]
|
|
|
|
else:
|
|
|
|
src_ext = ".src.tar.gz"
|
|
|
|
|
|
|
|
tarball = "{}-{}{}".format(pkg_name,pkg_version,src_ext)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
download_source(tarball)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
srczip="../emacs-{}-{}deps-mingw-w64-src.zip".format(EMACS_MAJOR_VERSION,DATE)
|
|
|
|
tmpzip="{}.tmp".format(srczip)
|
|
|
|
print("Zipping Dsrc in", os.getcwd(), "as", tmpzip)
|
|
|
|
check_output_maybe("zip -9 {} *".format(tmpzip), shell=True)
|
|
|
|
if os.path.isfile(srczip):
|
|
|
|
os.remove(srczip)
|
|
|
|
os.rename(tmpzip, srczip)
|
|
|
|
print("Dsrc updated in", os.getcwd(), "as", srczip)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
os.chdir("..")
|
|
|
|
|
|
|
|
|
|
|
|
def clean():
|
|
|
|
print("Cleaning")
|
|
|
|
os.path.isdir("emacs-src") and shutil.rmtree("emacs-src")
|
|
|
|
os.path.isdir("x86_64") and shutil.rmtree("x86_64")
|
|
|
|
os.path.isfile("download.log") and os.remove("download.log")
|
|
|
|
|
|
|
|
|
|
|
|
if(os.environ["MSYSTEM"] != "MSYS"):
|
|
|
|
print("Run this script in an MSYS-shell!")
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
|
|
|
|
parser = argparse.ArgumentParser()
|
2024-12-24 23:55:21 -06:00
|
|
|
|
|
|
|
#parser.add_argument("emacs", help="emacs executable")
|
|
|
|
|
2017-11-29 21:28:44 +00:00
|
|
|
parser.add_argument("-s", help="snapshot build",
|
|
|
|
action="store_true")
|
|
|
|
|
|
|
|
parser.add_argument("-r", help="source code only",
|
2017-10-24 18:34:35 +01:00
|
|
|
action="store_true")
|
|
|
|
|
|
|
|
parser.add_argument("-c", help="clean only",
|
|
|
|
action="store_true")
|
|
|
|
|
|
|
|
parser.add_argument("-d", help="dry run",
|
|
|
|
action="store_true")
|
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
parser.add_argument("-l", help="list dependencies",
|
|
|
|
action="store_true")
|
|
|
|
|
|
|
|
parser.add_argument("-e", help="extract direct dependancies",
|
2019-06-04 15:02:33 +01:00
|
|
|
action="store_true")
|
|
|
|
|
2017-10-24 18:34:35 +01:00
|
|
|
args = parser.parse_args()
|
2021-01-14 22:51:13 +00:00
|
|
|
do_all=not (args.c or args.r)
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
#NEW_EMACS=args.emacs
|
2017-10-24 18:34:35 +01:00
|
|
|
|
|
|
|
DRY_RUN=args.d
|
|
|
|
|
2024-12-24 23:55:21 -06:00
|
|
|
if( args.e ):
|
|
|
|
print("\n".join(init_deps()))
|
|
|
|
|
2019-06-04 15:02:33 +01:00
|
|
|
if( args.l ):
|
2024-12-24 23:55:21 -06:00
|
|
|
print("List of dependencies:")
|
|
|
|
print(full_dll_dependency(init_deps()))
|
|
|
|
print("List of source packages:")
|
|
|
|
print( extract_deps() )
|
|
|
|
|
|
|
|
if( args.e or args.l ):
|
2019-06-04 15:02:33 +01:00
|
|
|
exit(0)
|
|
|
|
|
2017-11-29 21:28:44 +00:00
|
|
|
if args.s:
|
|
|
|
DATE="{}-".format(check_output(["date", "+%Y-%m-%d"]).decode("utf-8").strip())
|
|
|
|
else:
|
|
|
|
DATE=""
|
|
|
|
|
2021-01-14 22:51:13 +00:00
|
|
|
if( do_all):
|
|
|
|
gather_deps()
|
2017-10-24 18:34:35 +01:00
|
|
|
|
2017-11-29 21:28:44 +00:00
|
|
|
if( do_all or args.r ):
|
2021-01-07 22:06:53 +00:00
|
|
|
deps=extract_deps()
|
2017-10-24 18:34:35 +01:00
|
|
|
gather_source(deps)
|
|
|
|
|
|
|
|
if( args.c ):
|
|
|
|
clean()
|