libvlc: build libvlc for linux in docker

This commit is contained in:
Asethone
2023-07-19 17:15:32 +04:00
parent fac40064ce
commit 285b99a5ac

View File

@ -6,13 +6,20 @@ import config
import base
import os
def docker_build(image_name, dockerfile_dir, vlc_dir):
def docker_build(image_name, dockerfile_dir, base_dir, mount_build=False):
base.cmd('docker', ['build', '-t', image_name, dockerfile_dir])
base.cmd('docker', ['run', '--rm', '-v', vlc_dir + ':/vlc', image_name])
vlc_dir = base_dir + '/vlc'
if mount_build:
build_dir = base_dir + '/build'
if not base.is_dir(build_dir):
base.create_dir(build_dir)
base.cmd('docker', ['run', '--rm', '-v', vlc_dir + ':/vlc', '-v', build_dir + ':/build', image_name])
else:
base.cmd('docker', ['run', '--rm', '-v', vlc_dir + ':/vlc', image_name])
base.cmd('docker', ['image', 'rm', image_name])
return
def copy_build(src_dir, dest_dir):
def form_build_win(src_dir, dest_dir):
if not base.is_dir(dest_dir):
base.create_dir(dest_dir)
# copy include
@ -50,49 +57,19 @@ def make():
if "windows" == base.host_platform():
base.cmd("git", ["config", "--global", "core.autocrlf", autocrlf_old])
# windows
if "windows" == base.host_platform():
if config.check_option("platform", "win_64"):
docker_build('libvlc-win64', base_dir + '/tools/win_64', vlc_dir)
copy_build(vlc_dir + '/build/win64/vlc-' + vlc_version, base_dir + '/build/win_64')
docker_build('libvlc-win64', base_dir + '/tools/win_64', base_dir)
form_build_win(vlc_dir + '/build/win64/vlc-' + vlc_version, base_dir + '/build/win_64')
if config.check_option("platform", "win_32"):
docker_build('libvlc-win32', base_dir + '/tools/win_32', vlc_dir)
copy_build(vlc_dir + '/build/win32/vlc-' + vlc_version, base_dir + '/build/win_32')
docker_build('libvlc-win32', base_dir + '/tools/win_32', base_dir)
form_build_win(vlc_dir + '/build/win32/vlc-' + vlc_version, base_dir + '/build/win_32')
if (-1 != config.option("platform").find("linux")):
if not base.is_file("tools/linux_64/.deps_complete"):
print("Dependencies for building libvlc are not installed!\n")
print("Please, run " + base_dir + "/tools/linux_64/deps.py to install all neccessary dependencies.")
exit(0)
os.chdir("vlc")
base.cmd("./bootstrap")
# build contribs
os.chdir("contrib")
base.cmd("mkdir", ["-p", "native"])
os.chdir("native")
base.cmd("../bootstrap")
base.cmd("make")
# configure
os.chdir(vlc_dir)
base.cmd("mkdir", ["-p", "build"])
base.cmd("./configure", ["--prefix=/home/mihail/main/libvlc/vlc/build", "--disable-vlc", "--disable-qt", "--disable-skins2", "--disable-chromecast"])
# build libvlc
base.cmd("make", ["-j$(nproc)"])
# install in build
base.cmd("make", ["-j$(nproc)", "install-strip"])
# form build
os.chdir(base_dir)
base.create_dir(base_dir + "/build/linux_64")
os.chdir("build/linux_64")
base.copy_dir(vlc_dir + "build/lib", "./lib")
base.copy_dir(vlc_dir + "build/include", "./include")
base.cmd("find", [".", "-name", "*.la", "-type", "f", "-delete"])
base.delete_dir("lib/pkgconfig")
base.delete_dir("lib/vlc/lua")
base.cmd("lib/vlc/vlc-cache-gen", ["lib/vlc/plugins"])
# linux
if config.check_option("platform", "linux_64"):
docker_build('libvlc-linux64', base_dir + '/tools/linux_64', base_dir, True)
os.chdir(old_cur)
return