New upstream version 18.0.1+dfsg1
This commit is contained in:
parent
6efda2859e
commit
f2cf6cce50
1337 changed files with 41178 additions and 84670 deletions
56
CI/before-deploy-osx.sh
Executable file
56
CI/before-deploy-osx.sh
Executable file
|
|
@ -0,0 +1,56 @@
|
|||
hr() {
|
||||
echo "───────────────────────────────────────────────────"
|
||||
echo $1
|
||||
echo "───────────────────────────────────────────────────"
|
||||
}
|
||||
|
||||
# Exit if something fails
|
||||
set -e
|
||||
|
||||
# Generate file name variables
|
||||
export GIT_HASH=$(git rev-parse --short HEAD)
|
||||
export FILE_DATE=$(date +%Y-%m-%d.%H:%M:%S)
|
||||
export FILENAME=$FILE_DATE-$GIT_HASH-$TRAVIS_BRANCH-osx.pkg
|
||||
|
||||
cd ./build
|
||||
|
||||
# Move the CEF plugin out before running build_app so that it doesn't get packaged twice
|
||||
hr "Moving CEF out to preserve linking"
|
||||
mv ./rundir/RelWithDebInfo/obs-plugins/CEF.app ./
|
||||
mv ./rundir/RelWithDebInfo/obs-plugins/obs-browser.so ./
|
||||
|
||||
# Package everything into a nice .app
|
||||
hr "Packaging .app"
|
||||
STABLE=false
|
||||
if [ -n "${TRAVIS_TAG}" ]; then
|
||||
STABLE=true
|
||||
fi
|
||||
|
||||
sudo python ../CI/install/osx/build_app.py --public-key ../CI/install/osx/OBSPublicDSAKey.pem --sparkle-framework ../../sparkle/Sparkle.framework --base-url "https://obsproject.com/osx_update" --stable=$STABLE
|
||||
|
||||
# Move the CEF plugin back to where it belongs
|
||||
hr "Moving CEF back"
|
||||
mv ./CEF.app ./rundir/RelWithDebInfo/obs-plugins/
|
||||
mv ./obs-browser.so ./rundir/RelWithDebInfo/obs-plugins/
|
||||
|
||||
# Package app
|
||||
hr "Generating .pkg"
|
||||
packagesbuild ../CI/install/osx/CMakeLists.pkgproj
|
||||
|
||||
# Signing stuff
|
||||
hr "Decrypting Cert"
|
||||
openssl aes-256-cbc -K $encrypted_dd3c7f5e9db9_key -iv $encrypted_dd3c7f5e9db9_iv -in ../CI/osxcert/Certificates.p12.enc -out Certificates.p12 -d
|
||||
hr "Creating Keychain"
|
||||
security create-keychain -p mysecretpassword build.keychain
|
||||
security default-keychain -s build.keychain
|
||||
security unlock-keychain -p mysecretpassword build.keychain
|
||||
security set-keychain-settings -t 3600 -u build.keychain
|
||||
hr "Importing certs into keychain"
|
||||
security import ./Certificates.p12 -k build.keychain -T /usr/bin/productsign -P ""
|
||||
hr "Signing Package"
|
||||
productsign --sign 'Developer ID Installer: Hugh Bailey (2MMRE5MTB8)' ./OBS.pkg ./$FILENAME
|
||||
|
||||
# Move to the folder that travis uses to upload artifacts from
|
||||
hr "Moving package to nightly folder for distribution"
|
||||
mkdir ../nightly
|
||||
sudo mv ./$FILENAME ../nightly
|
||||
3
CI/before-deploy-win.cmd
Normal file
3
CI/before-deploy-win.cmd
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
xcopy /e C:\projects\obs-studio\build32\rundir\RelWithDebInfo C:\projects\obs-studio\build\
|
||||
robocopy C:\projects\obs-studio\build64\rundir\RelWithDebInfo C:\projects\obs-studio\build\ /E /XC /XN /XO
|
||||
7z a build.zip C:\projects\obs-studio\build\*
|
||||
5
CI/before-script-linux.sh
Executable file
5
CI/before-script-linux.sh
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
set -ex
|
||||
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
3
CI/before-script-osx.sh
Executable file
3
CI/before-script-osx.sh
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
mkdir build
|
||||
cd build
|
||||
cmake -DENABLE_SPARKLE_UPDATER=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 -DDepsPath=/tmp/obsdeps -DVLCPath=$PWD/../../vlc-master -DBUILD_BROWSER=ON -DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
|
||||
37
CI/install-dependencies-linux.sh
Executable file
37
CI/install-dependencies-linux.sh
Executable file
|
|
@ -0,0 +1,37 @@
|
|||
#!/bin/sh
|
||||
set -ex
|
||||
|
||||
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next -y
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get install -y \
|
||||
build-essential \
|
||||
checkinstall \
|
||||
cmake \
|
||||
libasound2-dev \
|
||||
libavcodec-ffmpeg-dev \
|
||||
libavdevice-ffmpeg-dev \
|
||||
libavfilter-ffmpeg-dev \
|
||||
libavformat-ffmpeg-dev \
|
||||
libavutil-ffmpeg-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libfontconfig-dev \
|
||||
libfreetype6-dev \
|
||||
libgl1-mesa-dev \
|
||||
libjack-jackd2-dev \
|
||||
libjansson-dev \
|
||||
libpulse-dev \
|
||||
libqt5x11extras5-dev \
|
||||
libspeexdsp-dev \
|
||||
libswresample-ffmpeg-dev \
|
||||
libswscale-ffmpeg-dev \
|
||||
libudev-dev \
|
||||
libv4l-dev \
|
||||
libvlc-dev \
|
||||
libx11-dev \
|
||||
libx264-dev \
|
||||
libxcb-shm0-dev \
|
||||
libxcb-xinerama0-dev \
|
||||
libxcomposite-dev \
|
||||
libxinerama-dev \
|
||||
pkg-config \
|
||||
qtbase5-dev
|
||||
42
CI/install-dependencies-osx.sh
Executable file
42
CI/install-dependencies-osx.sh
Executable file
|
|
@ -0,0 +1,42 @@
|
|||
# Exit if something fails
|
||||
set -e
|
||||
|
||||
git fetch --tags
|
||||
|
||||
# Leave obs-studio folder
|
||||
cd ../
|
||||
|
||||
# Install Packages app so we can build a package later
|
||||
# http://s.sudre.free.fr/Software/Packages/about.html
|
||||
curl -L -O https://s3-us-west-2.amazonaws.com/obs-nightly/Packages.pkg -f --retry 5 -C -
|
||||
sudo installer -pkg ./Packages.pkg -target /
|
||||
|
||||
brew update
|
||||
|
||||
#Base OBS Deps
|
||||
brew install qt5 jack speexdsp
|
||||
|
||||
# Fetch and untar prebuilt OBS deps that are compatible with older versions of OSX
|
||||
curl -L -O https://s3-us-west-2.amazonaws.com/obs-nightly/osx-deps.tar.gz -f --retry 5 -C -
|
||||
tar -xf ./osx-deps.tar.gz -C /tmp
|
||||
|
||||
# Fetch vlc codebase
|
||||
curl -L -o vlc-master.zip https://github.com/videolan/vlc/archive/master.zip -f --retry 5 -C -
|
||||
unzip -q ./vlc-master.zip
|
||||
|
||||
# Get sparkle
|
||||
curl -L -o ./sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/1.16.0/Sparkle-1.16.0.tar.bz2
|
||||
mkdir ./sparkle
|
||||
tar -xf ./sparkle.tar.bz2 -C ./sparkle
|
||||
sudo cp -R ./sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
|
||||
|
||||
# CEF Stuff
|
||||
curl -kLO https://obs-nightly.s3-us-west-2.amazonaws.com/cef_binary_${CEF_BUILD_VERSION}_macosx64.tar.bz2 -f --retry 5 -C -
|
||||
tar -xf ./cef_binary_${CEF_BUILD_VERSION}_macosx64.tar.bz2
|
||||
cd ./cef_binary_${CEF_BUILD_VERSION}_macosx64
|
||||
mkdir build
|
||||
cd ./build
|
||||
cmake -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9 ..
|
||||
make -j4
|
||||
mkdir libcef_dll
|
||||
cd ../../
|
||||
1026
CI/install/osx/CMakeLists.pkgproj
Normal file
1026
CI/install/osx/CMakeLists.pkgproj
Normal file
File diff suppressed because it is too large
Load diff
36
CI/install/osx/OBSPublicDSAKey.pem
Normal file
36
CI/install/osx/OBSPublicDSAKey.pem
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
MIIGPDCCBC4GByqGSM44BAEwggQhAoICAQCZZZ2y7H2GJmMfP4KQihJTJOoiGNUw
|
||||
mue6sqMbH+utRykRnSKBZux6R665eRFMpNgrgFO1TLLGbdD2U31KiGtCvFJOmOl3
|
||||
+QP055BuXjEG36NU7AWEFLAlbDlr/2D3oumq3Ib3iMnnr9RrVztJ2VFOvVio1eWr
|
||||
ZxboVwKPK8D6BqsWiv15vbYlJnTC4Fls6ySmdjVBxwoPlTaMu1ysi5DfbIZ93s5u
|
||||
aQt1FvXuWtPBWjyVUORcNbcWf49E5R2pV0OSBK95Hw2/wXz4vmj+w92dTePGnVaW
|
||||
Me4CoF5PIeZILwp6DCLStX4eW2WG1NChJTC8zeQ/3bMMoGyKM/MadyvrDqMywsKY
|
||||
caxkIwHrDKOEdXXGo80dIwZMMLipPA8DKhx5ojphfkeXjIhKSx+49knXT3ED5okE
|
||||
Wai7tGUXj/8D8sGh+7b+AVsdujvr4v8WQaZiKUOZ2IIHOg3VLz9T9v0zet1Yt987
|
||||
KNymFcp2CHeJ6KnDP/ZGQ6Nl0HsPxUgscsXV+R2FEc8Q1j0Ukkuxnopa0E4/huUu
|
||||
gjyRzpXD734qFMDf7LcXca6qNjBor6gVj5sRyRKCpZ+KQfMUlr8jp506ztYSyeJu
|
||||
dxJV30tQgztwkbrs02CqOt4Z3Peo6sdht7hWKSPVwmja3tq8/TfUSSoo6wKYN9/w
|
||||
Mf3dVeRF8hCzJQIVAJnzuzmzQhCKPiQnl3jh5qGII2XfAoICAQCCVATAff89ceHj
|
||||
ROHEbHTQFpVxJ/kRZPfxnU46DSw79Tih7tthV68oakPSOTP3cx/Tga0GwogarZ9N
|
||||
F2VVan5w9OQSSewXsr5UDT5bnmJF+h+JB7TMy+sXZBYobUqjlUd5VtKc8RsN86P4
|
||||
s7xbK0mA+hfe+27r18JT81/eH3xUfh7UOUGSdMN2Ch9f7RFSMZIgUAZUzu2K3ODp
|
||||
hPgtc2QJ8QVAp7GLvQgw8ZUME/ChZslyBIyJvYgUIxfxlgRWYro5pQT7/ngkgdXo
|
||||
wlghHKkldwMuY3zaFdhPnFNuEUEtc18ILsbz0+AnagCUd6n+3safskCRqLIHMOY6
|
||||
iLBSZPX9hJQhVCqSqz1VNDDww8FNa/fojJ1Lr/TI0I+0Ib2pCiY2LChXUqGY5SLZ
|
||||
2KNs5qFsyZP+I0L8YsGwqvUYyFwk7Ok224n0NtaOwqpLCrtXd/i6DaDNiaoJuwJC
|
||||
1ELCfaZivorgkC5rhBt2H7qWUAR+EtrFE/gb0k/G5EIhjYql7onGbX+G2re38vQA
|
||||
fg1pzguhig2dafP/BxMLZrn1Gg61xzmEYPuS9gclktaf675srv8GVb46VkOxXL+D
|
||||
YvTmpJPP7UUOVlmAMCo4j4y09MW3jq9TDp42VTLeZVubyjslGnavlnq1O+ZyXUye
|
||||
1FMeby65sIbSHHHwoFnRv3hLSEXI5gOCAgYAAoICAQCUkYnZkPfHfOJZI403xUYP
|
||||
CE/bLpkza074Xo6EXElsWRnpQgNTx+JFOvItgj3v0OkIqDin9UredKOwfkiftslV
|
||||
jxUVKA6I5kwnGvCpvTpQMLyLjq+VQr+J2D6eId6tV/iajhdu5r4JThU8KllT7Ywb
|
||||
NAur34ftLNCVAMRUaDNeEoHfePgderW384e+lbvpmtifmBluammGSxxRtUsdjvJZ
|
||||
BFkhaJu86CKxcU7D1lbPVOtV/jaxz6d16VdGcfBdi2LzXZzZtYpT9XGPX3NF+xii
|
||||
spAURWsoe11LTRXF+eJhgCm5iIDN3kh1HEQKYKAVpmrcM0aFzk/NpS+tFyU72vaq
|
||||
IRSSJw/aa1oELOAakG5oPldc4RcYWl32sbnVwXHO7TZvgTrBSC10o65MAC5CHP/s
|
||||
b07heDYAIt7re7szvOYq+c/9zAMAlu3pcO8MqaXYMmybdHBXHQ2b+DdJWHmIUWcX
|
||||
CbUzr09vzGkJAvqsXqbmJPr8aixrO75DhT0iDTILLWe/GWK51nf+Tg0pNxVgGyAl
|
||||
BqvRqqo7SSDu9FMkwQesFFHhuoHLyEHwVPJ+sMQTNwQcm9c6YuW8EYDRSkeKLWYk
|
||||
3fkjG+Pe9uVE8a1taDg3FjSY0UqjUT6XMw+i0Lajyus2L6wFBwrrGM6E4xa6x1CC
|
||||
MGjmuSOlPA1umQsToIcO4g==
|
||||
-----END PUBLIC KEY-----
|
||||
BIN
CI/install/osx/SyphonInject.pkg
Normal file
BIN
CI/install/osx/SyphonInject.pkg
Normal file
Binary file not shown.
225
CI/install/osx/build_app.py
Normal file
225
CI/install/osx/build_app.py
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
candidate_paths = "bin obs-plugins data".split()
|
||||
|
||||
plist_path = "../cmake/osxbundle/Info.plist"
|
||||
icon_path = "../cmake/osxbundle/obs.icns"
|
||||
run_path = "../cmake/osxbundle/obslaunch.sh"
|
||||
|
||||
#not copied
|
||||
blacklist = """/usr /System""".split()
|
||||
|
||||
#copied
|
||||
whitelist = """/usr/local""".split()
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
|
||||
from sys import argv
|
||||
from glob import glob
|
||||
from subprocess import check_output, call
|
||||
from collections import namedtuple
|
||||
from shutil import copy, copytree, rmtree
|
||||
from os import makedirs, rename, walk, path as ospath
|
||||
import plistlib
|
||||
|
||||
import argparse
|
||||
|
||||
def _str_to_bool(s):
|
||||
"""Convert string to bool (in argparse context)."""
|
||||
if s.lower() not in ['true', 'false']:
|
||||
raise ValueError('Need bool; got %r' % s)
|
||||
return {'true': True, 'false': False}[s.lower()]
|
||||
|
||||
def add_boolean_argument(parser, name, default=False):
|
||||
"""Add a boolean argument to an ArgumentParser instance."""
|
||||
group = parser.add_mutually_exclusive_group()
|
||||
group.add_argument(
|
||||
'--' + name, nargs='?', default=default, const=True, type=_str_to_bool)
|
||||
group.add_argument('--no' + name, dest=name, action='store_false')
|
||||
|
||||
parser = argparse.ArgumentParser(description='obs-studio package util')
|
||||
parser.add_argument('-d', '--base-dir', dest='dir', default='rundir/RelWithDebInfo')
|
||||
parser.add_argument('-n', '--build-number', dest='build_number', default='0')
|
||||
parser.add_argument('-k', '--public-key', dest='public_key', default='OBSPublicDSAKey.pem')
|
||||
parser.add_argument('-f', '--sparkle-framework', dest='sparkle', default=None)
|
||||
parser.add_argument('-b', '--base-url', dest='base_url', default='https://builds.catchexception.org/obs-studio')
|
||||
parser.add_argument('-u', '--user', dest='user', default='jp9000')
|
||||
parser.add_argument('-c', '--channel', dest='channel', default='master')
|
||||
add_boolean_argument(parser, 'stable', default=False)
|
||||
parser.add_argument('-p', '--prefix', dest='prefix', default='')
|
||||
args = parser.parse_args()
|
||||
|
||||
def cmd(cmd):
|
||||
import subprocess
|
||||
import shlex
|
||||
return subprocess.check_output(shlex.split(cmd)).rstrip('\r\n')
|
||||
|
||||
LibTarget = namedtuple("LibTarget", ("path", "external", "copy_as"))
|
||||
|
||||
inspect = list()
|
||||
|
||||
inspected = set()
|
||||
|
||||
build_path = args.dir
|
||||
build_path = build_path.replace("\\ ", " ")
|
||||
|
||||
def add(name, external=False, copy_as=None):
|
||||
if external and copy_as is None:
|
||||
copy_as = name.split("/")[-1]
|
||||
if name[0] != "/":
|
||||
name = build_path+"/"+name
|
||||
t = LibTarget(name, external, copy_as)
|
||||
if t in inspected:
|
||||
return
|
||||
inspect.append(t)
|
||||
inspected.add(t)
|
||||
|
||||
|
||||
for i in candidate_paths:
|
||||
print("Checking " + i)
|
||||
for root, dirs, files in walk(build_path+"/"+i):
|
||||
for file_ in files:
|
||||
path = root + "/" + file_
|
||||
try:
|
||||
out = check_output("{0}otool -L '{1}'".format(args.prefix, path), shell=True,
|
||||
universal_newlines=True)
|
||||
if "is not an object file" in out:
|
||||
continue
|
||||
except:
|
||||
continue
|
||||
rel_path = path[len(build_path)+1:]
|
||||
print(repr(path), repr(rel_path))
|
||||
add(rel_path)
|
||||
|
||||
def add_plugins(path, replace):
|
||||
for img in glob(path.replace(
|
||||
"lib/QtCore.framework/Versions/5/QtCore",
|
||||
"plugins/%s/*"%replace).replace(
|
||||
"Library/Frameworks/QtCore.framework/Versions/5/QtCore",
|
||||
"share/qt5/plugins/%s/*"%replace)):
|
||||
if "_debug" in img:
|
||||
continue
|
||||
add(img, True, img.split("plugins/")[-1])
|
||||
|
||||
actual_sparkle_path = '@loader_path/Frameworks/Sparkle.framework/Versions/A/Sparkle'
|
||||
|
||||
while inspect:
|
||||
target = inspect.pop()
|
||||
print("inspecting", repr(target))
|
||||
path = target.path
|
||||
if path[0] == "@":
|
||||
continue
|
||||
out = check_output("{0}otool -L '{1}'".format(args.prefix, path), shell=True,
|
||||
universal_newlines=True)
|
||||
|
||||
if "QtCore" in path:
|
||||
add_plugins(path, "platforms")
|
||||
add_plugins(path, "imageformats")
|
||||
add_plugins(path, "accessible")
|
||||
|
||||
|
||||
for line in out.split("\n")[1:]:
|
||||
new = line.strip().split(" (")[0]
|
||||
if '@' in new and "sparkle.framework" in new.lower():
|
||||
actual_sparkle_path = new
|
||||
print "Using sparkle path:", repr(actual_sparkle_path)
|
||||
if not new or new[0] == "@" or new.endswith(path.split("/")[-1]):
|
||||
continue
|
||||
whitelisted = False
|
||||
for i in whitelist:
|
||||
if new.startswith(i):
|
||||
whitelisted = True
|
||||
if not whitelisted:
|
||||
blacklisted = False
|
||||
for i in blacklist:
|
||||
if new.startswith(i):
|
||||
blacklisted = True
|
||||
break
|
||||
if blacklisted:
|
||||
continue
|
||||
add(new, True)
|
||||
|
||||
changes = list()
|
||||
for path, external, copy_as in inspected:
|
||||
if not external:
|
||||
continue #built with install_rpath hopefully
|
||||
changes.append("-change '%s' '@rpath/%s'"%(path, copy_as))
|
||||
changes = " ".join(changes)
|
||||
|
||||
info = plistlib.readPlist(plist_path)
|
||||
|
||||
latest_tag = cmd('git describe --tags --abbrev=0')
|
||||
log = cmd('git log --pretty=oneline {0}...HEAD'.format(latest_tag))
|
||||
|
||||
from os import path
|
||||
# set version
|
||||
if args.stable:
|
||||
info["CFBundleVersion"] = latest_tag
|
||||
info["CFBundleShortVersionString"] = latest_tag
|
||||
info["SUFeedURL"] = '{0}/stable/updates.xml'.format(args.base_url)
|
||||
else:
|
||||
info["CFBundleVersion"] = args.build_number
|
||||
info["CFBundleShortVersionString"] = '{0}.{1}'.format(latest_tag, args.build_number)
|
||||
info["SUFeedURL"] = '{0}/{1}/{2}/updates.xml'.format(args.base_url, args.user, args.channel)
|
||||
|
||||
info["SUPublicDSAKeyFile"] = path.basename(args.public_key)
|
||||
info["OBSFeedsURL"] = '{0}/feeds.xml'.format(args.base_url)
|
||||
|
||||
app_name = info["CFBundleName"]+".app"
|
||||
icon_file = "tmp/Contents/Resources/%s"%info["CFBundleIconFile"]
|
||||
|
||||
copytree(build_path, "tmp/Contents/Resources/", symlinks=True)
|
||||
copy(icon_path, icon_file)
|
||||
plistlib.writePlist(info, "tmp/Contents/Info.plist")
|
||||
makedirs("tmp/Contents/MacOS")
|
||||
copy(run_path, "tmp/Contents/MacOS/%s"%info["CFBundleExecutable"])
|
||||
try:
|
||||
copy(args.public_key, "tmp/Contents/Resources")
|
||||
except:
|
||||
pass
|
||||
|
||||
if args.sparkle is not None:
|
||||
copytree(args.sparkle, "tmp/Contents/Frameworks/Sparkle.framework", symlinks=True)
|
||||
|
||||
prefix = "tmp/Contents/Resources/"
|
||||
sparkle_path = '@loader_path/{0}/Frameworks/Sparkle.framework/Versions/A/Sparkle'
|
||||
|
||||
cmd('{0}install_name_tool -change {1} {2} {3}/bin/obs'.format(
|
||||
args.prefix, actual_sparkle_path, sparkle_path.format('../..'), prefix))
|
||||
|
||||
|
||||
|
||||
for path, external, copy_as in inspected:
|
||||
id_ = ""
|
||||
filename = path
|
||||
rpath = ""
|
||||
if external:
|
||||
id_ = "-id '@rpath/%s'"%copy_as
|
||||
filename = prefix + "bin/" +copy_as
|
||||
rpath = "-add_rpath @loader_path/ -add_rpath @executable_path/"
|
||||
if "/" in copy_as:
|
||||
try:
|
||||
dirs = copy_as.rsplit("/", 1)[0]
|
||||
makedirs(prefix + "bin/" + dirs)
|
||||
except:
|
||||
pass
|
||||
copy(path, filename)
|
||||
else:
|
||||
filename = path[len(build_path)+1:]
|
||||
id_ = "-id '@rpath/../%s'"%filename
|
||||
if not filename.startswith("bin"):
|
||||
print(filename)
|
||||
rpath = "-add_rpath '@loader_path/{}/'".format(ospath.relpath("bin/", ospath.dirname(filename)))
|
||||
filename = prefix + filename
|
||||
|
||||
cmd = "{0}install_name_tool {1} {2} {3} '{4}'".format(args.prefix, changes, id_, rpath, filename)
|
||||
call(cmd, shell=True)
|
||||
|
||||
try:
|
||||
rename("tmp", app_name)
|
||||
except:
|
||||
print("App already exists")
|
||||
rmtree("tmp")
|
||||
703
CI/install/osx/obs.png
Normal file
703
CI/install/osx/obs.png
Normal file
|
|
@ -0,0 +1,703 @@
|
|||
|
||||
|
||||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class=" emoji-size-boost is-u2f-enabled">
|
||||
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# object: http://ogp.me/ns/object# article: http://ogp.me/ns/article# profile: http://ogp.me/ns/profile#">
|
||||
<meta charset='utf-8'>
|
||||
|
||||
|
||||
<link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-c9ae4d373fcb2c40952201451cd449e00d6dbcedc778b79c9dfb2d076d04993b.css" integrity="sha256-ya5NNz/LLECVIgFFHNRJ4A1tvO3HeLecnfstB20EmTs=" media="all" rel="stylesheet" />
|
||||
<link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/github-4d14493830801ffc6d6d6363f3fcef8a6e41fd9e74776dce15fa2c18b2a9bb72.css" integrity="sha256-TRRJODCAH/xtbWNj8/zvim5B/Z50d23OFfosGLKpu3I=" media="all" rel="stylesheet" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta http-equiv="Content-Language" content="en">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<title>obs-studio-utils/obs.png at master · kc5nra/obs-studio-utils</title>
|
||||
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
|
||||
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon-180x180.png">
|
||||
<meta property="fb:app_id" content="1401488693436528">
|
||||
|
||||
<meta content="https://avatars0.githubusercontent.com/u/231018?v=3&s=400" name="twitter:image:src" /><meta content="@github" name="twitter:site" /><meta content="summary" name="twitter:card" /><meta content="kc5nra/obs-studio-utils" name="twitter:title" /><meta content="Contribute to obs-studio-utils development by creating an account on GitHub." name="twitter:description" />
|
||||
<meta content="https://avatars0.githubusercontent.com/u/231018?v=3&s=400" property="og:image" /><meta content="GitHub" property="og:site_name" /><meta content="object" property="og:type" /><meta content="kc5nra/obs-studio-utils" property="og:title" /><meta content="https://github.com/kc5nra/obs-studio-utils" property="og:url" /><meta content="Contribute to obs-studio-utils development by creating an account on GitHub." property="og:description" />
|
||||
<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">
|
||||
<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">
|
||||
<link rel="assets" href="https://assets-cdn.github.com/">
|
||||
<link rel="web-socket" href="wss://live.github.com/_sockets/VjI6NTA0OTIxMTc6ZDJjMjcyYzA1MjZiMGM4MGI5MmU2NzBkMTMyMWNiYWZhMjZiZGQ0MGQxOGY1MWNkYmI1NzA0NjhlZTdjM2E2OA==--561fd74d4042c982502dd897714172236351f238">
|
||||
<meta name="pjax-timeout" content="1000">
|
||||
<link rel="sudo-modal" href="/sessions/sudo_modal">
|
||||
<meta name="request-id" content="683BCFFA:2DABC:EE980D1:587831B3" data-pjax-transient>
|
||||
|
||||
<meta name="msapplication-TileImage" content="/windows-tile.png">
|
||||
<meta name="msapplication-TileColor" content="#ffffff">
|
||||
<meta name="selected-link" value="repo_source" data-pjax-transient>
|
||||
|
||||
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
|
||||
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
|
||||
<meta name="google-analytics" content="UA-3769691-2">
|
||||
|
||||
<meta content="collector.githubapp.com" name="octolytics-host" /><meta content="github" name="octolytics-app-id" /><meta content="683BCFFA:2DABC:EE980D1:587831B3" name="octolytics-dimension-request_id" /><meta content="207897" name="octolytics-actor-id" /><meta content="DDRBoxman" name="octolytics-actor-login" /><meta content="951d1462a992f6b4236b5008d6b11c4331eba4c658fe50ec7c9882e14af522bd" name="octolytics-actor-hash" />
|
||||
<meta content="/<user-name>/<repo-name>/blob/show" data-pjax-transient="true" name="analytics-location" />
|
||||
|
||||
|
||||
|
||||
<meta class="js-ga-set" name="dimension1" content="Logged In">
|
||||
|
||||
|
||||
|
||||
<meta name="hostname" content="github.com">
|
||||
<meta name="user-login" content="DDRBoxman">
|
||||
|
||||
<meta name="expected-hostname" content="github.com">
|
||||
<meta name="js-proxy-site-detection-payload" content="ZDQzNzZjM2MwNTlmYWFjNzhmNWJlMzY0MzNkMjdiOThhM2U2OTI0ZjlmMzFlYzJmODdjYjMxNDQ5OTBkNjc4NXx7InJlbW90ZV9hZGRyZXNzIjoiMTA0LjU5LjIwNy4yNTAiLCJyZXF1ZXN0X2lkIjoiNjgzQkNGRkE6MkRBQkM6RUU5ODBEMTo1ODc4MzFCMyIsInRpbWVzdGFtcCI6MTQ4NDI3MjA1NiwiaG9zdCI6ImdpdGh1Yi5jb20ifQ==">
|
||||
|
||||
|
||||
<link rel="mask-icon" href="https://assets-cdn.github.com/pinned-octocat.svg" color="#000000">
|
||||
<link rel="icon" type="image/x-icon" href="https://assets-cdn.github.com/favicon.ico">
|
||||
|
||||
<meta name="html-safe-nonce" content="0a420a0a7ff0cff8568da5f27c46880ec53370cf">
|
||||
|
||||
<meta http-equiv="x-pjax-version" content="f36bd54ef0fdb145d68369e21555ea6f">
|
||||
|
||||
|
||||
|
||||
<meta name="description" content="Contribute to obs-studio-utils development by creating an account on GitHub.">
|
||||
<meta name="go-import" content="github.com/kc5nra/obs-studio-utils git https://github.com/kc5nra/obs-studio-utils.git">
|
||||
|
||||
<meta content="231018" name="octolytics-dimension-user_id" /><meta content="kc5nra" name="octolytics-dimension-user_login" /><meta content="24656398" name="octolytics-dimension-repository_id" /><meta content="kc5nra/obs-studio-utils" name="octolytics-dimension-repository_nwo" /><meta content="true" name="octolytics-dimension-repository_public" /><meta content="false" name="octolytics-dimension-repository_is_fork" /><meta content="24656398" name="octolytics-dimension-repository_network_root_id" /><meta content="kc5nra/obs-studio-utils" name="octolytics-dimension-repository_network_root_nwo" />
|
||||
<link href="https://github.com/kc5nra/obs-studio-utils/commits/master.atom" rel="alternate" title="Recent Commits to obs-studio-utils:master" type="application/atom+xml">
|
||||
|
||||
|
||||
<link rel="canonical" href="https://github.com/kc5nra/obs-studio-utils/blob/master/install/osx/obs.png" data-pjax-transient>
|
||||
</head>
|
||||
|
||||
|
||||
<body class="logged-in env-production macintosh vis-public page-blob">
|
||||
<div id="js-pjax-loader-bar" class="pjax-loader-bar"><div class="progress"></div></div>
|
||||
<a href="#start-of-content" tabindex="1" class="accessibility-aid js-skip-to-content">Skip to content</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="header header-logged-in true" role="banner">
|
||||
<div class="container clearfix">
|
||||
|
||||
<a class="header-logo-invertocat" href="https://github.com/" data-hotkey="g d" aria-label="Homepage" data-ga-click="Header, go to dashboard, icon:logo">
|
||||
<svg aria-hidden="true" class="octicon octicon-mark-github" height="28" version="1.1" viewBox="0 0 16 16" width="28"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
|
||||
|
||||
<div class="header-search scoped-search site-scoped-search js-site-search" role="search">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kc5nra/obs-studio-utils/search" class="js-site-search-form" data-scoped-search-url="/kc5nra/obs-studio-utils/search" data-unscoped-search-url="/search" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
|
||||
<label class="form-control header-search-wrapper js-chromeless-input-container">
|
||||
<div class="header-search-scope">This repository</div>
|
||||
<input type="text"
|
||||
class="form-control header-search-input js-site-search-focus js-site-search-field is-clearable"
|
||||
data-hotkey="s"
|
||||
name="q"
|
||||
placeholder="Search"
|
||||
aria-label="Search this repository"
|
||||
data-unscoped-placeholder="Search GitHub"
|
||||
data-scoped-placeholder="Search"
|
||||
autocapitalize="off">
|
||||
</label>
|
||||
</form></div>
|
||||
|
||||
|
||||
<ul class="header-nav float-left" role="navigation">
|
||||
<li class="header-nav-item">
|
||||
<a href="/pulls" aria-label="Pull requests you created" class="js-selected-navigation-item header-nav-link" data-ga-click="Header, click, Nav menu - item:pulls context:user" data-hotkey="g p" data-selected-links="/pulls /pulls/assigned /pulls/mentioned /pulls">
|
||||
Pull requests
|
||||
</a> </li>
|
||||
<li class="header-nav-item">
|
||||
<a href="/issues" aria-label="Issues you created" class="js-selected-navigation-item header-nav-link" data-ga-click="Header, click, Nav menu - item:issues context:user" data-hotkey="g i" data-selected-links="/issues /issues/assigned /issues/mentioned /issues">
|
||||
Issues
|
||||
</a> </li>
|
||||
<li class="header-nav-item">
|
||||
<a class="header-nav-link" href="https://gist.github.com/" data-ga-click="Header, go to gist, text:gist">Gist</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<ul class="header-nav user-nav float-right" id="user-links">
|
||||
<li class="header-nav-item">
|
||||
|
||||
<a href="/notifications" aria-label="You have no unread notifications" class="header-nav-link notification-indicator tooltipped tooltipped-s js-socket-channel js-notification-indicator" data-channel="tenant:1:notification-changed:207897" data-ga-click="Header, go to notifications, icon:read" data-hotkey="g n">
|
||||
<span class="mail-status "></span>
|
||||
<svg aria-hidden="true" class="octicon octicon-bell" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 12v1H0v-1l.73-.58c.77-.77.81-2.55 1.19-4.42C2.69 3.23 6 2 6 2c0-.55.45-1 1-1s1 .45 1 1c0 0 3.39 1.23 4.16 5 .38 1.88.42 3.66 1.19 4.42l.66.58H14zm-7 4c1.11 0 2-.89 2-2H5c0 1.11.89 2 2 2z"/></svg>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="header-nav-item dropdown js-menu-container">
|
||||
<a class="header-nav-link tooltipped tooltipped-s js-menu-target" href="/new"
|
||||
aria-label="Create new…"
|
||||
data-ga-click="Header, create new, icon:add">
|
||||
<svg aria-hidden="true" class="octicon octicon-plus float-left" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 9H7v5H5V9H0V7h5V2h2v5h5z"/></svg>
|
||||
<span class="dropdown-caret"></span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu-content js-menu-content">
|
||||
<ul class="dropdown-menu dropdown-menu-sw">
|
||||
|
||||
<a class="dropdown-item" href="/new" data-ga-click="Header, create new repository">
|
||||
New repository
|
||||
</a>
|
||||
|
||||
<a class="dropdown-item" href="/new/import" data-ga-click="Header, import a repository">
|
||||
Import repository
|
||||
</a>
|
||||
|
||||
<a class="dropdown-item" href="https://gist.github.com/" data-ga-click="Header, create new gist">
|
||||
New gist
|
||||
</a>
|
||||
|
||||
<a class="dropdown-item" href="/organizations/new" data-ga-click="Header, create new organization">
|
||||
New organization
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
<div class="dropdown-header">
|
||||
<span title="kc5nra/obs-studio-utils">This repository</span>
|
||||
</div>
|
||||
<a class="dropdown-item" href="/kc5nra/obs-studio-utils/issues/new" data-ga-click="Header, create new issue">
|
||||
New issue
|
||||
</a>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li class="header-nav-item dropdown js-menu-container">
|
||||
<a class="header-nav-link name tooltipped tooltipped-sw js-menu-target" href="/DDRBoxman"
|
||||
aria-label="View profile and more"
|
||||
data-ga-click="Header, show menu, icon:avatar">
|
||||
<img alt="@DDRBoxman" class="avatar" height="20" src="https://avatars3.githubusercontent.com/u/207897?v=3&s=40" width="20" />
|
||||
<span class="dropdown-caret"></span>
|
||||
</a>
|
||||
|
||||
<div class="dropdown-menu-content js-menu-content">
|
||||
<div class="dropdown-menu dropdown-menu-sw">
|
||||
<div class="dropdown-header header-nav-current-user css-truncate">
|
||||
Signed in as <strong class="css-truncate-target">DDRBoxman</strong>
|
||||
</div>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item" href="/DDRBoxman" data-ga-click="Header, go to profile, text:your profile">
|
||||
Your profile
|
||||
</a>
|
||||
<a class="dropdown-item" href="/DDRBoxman?tab=stars" data-ga-click="Header, go to starred repos, text:your stars">
|
||||
Your stars
|
||||
</a>
|
||||
<a class="dropdown-item" href="/explore" data-ga-click="Header, go to explore, text:explore">
|
||||
Explore
|
||||
</a>
|
||||
<a class="dropdown-item" href="/integrations" data-ga-click="Header, go to integrations, text:integrations">
|
||||
Integrations
|
||||
</a>
|
||||
<a class="dropdown-item" href="https://help.github.com" data-ga-click="Header, go to help, text:help">
|
||||
Help
|
||||
</a>
|
||||
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item" href="/settings/profile" data-ga-click="Header, go to settings, icon:settings">
|
||||
Settings
|
||||
</a>
|
||||
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/logout" class="logout-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="mbjQPqcKKO6Yuqt3Dvczikt53JctIh6E47+gkXyZ3vFinTikSLP4X/o4pVzB6UDZReamEALdVHKN3UNUxVdRFQ==" /></div>
|
||||
<button type="submit" class="dropdown-item dropdown-signout" data-ga-click="Header, sign out, icon:logout">
|
||||
Sign out
|
||||
</button>
|
||||
</form> </div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="start-of-content" class="accessibility-aid"></div>
|
||||
|
||||
<div id="js-flash-container">
|
||||
</div>
|
||||
|
||||
|
||||
<div role="main">
|
||||
<div itemscope itemtype="http://schema.org/SoftwareSourceCode">
|
||||
<div id="js-repo-pjax-container" data-pjax-container>
|
||||
|
||||
<div class="pagehead repohead instapaper_ignore readability-menu experiment-repo-nav">
|
||||
<div class="container repohead-details-container">
|
||||
|
||||
|
||||
|
||||
<ul class="pagehead-actions">
|
||||
|
||||
<li>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/notifications/subscribe" class="js-social-container" data-autosubmit="true" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="7woW5zqjJpvg5IbCp+Gf47Op+jJvsrXFlv5u5Cwuwg3CsPTT6eYZ7inxEYqPhx9rxluEnL+P7mYdgOYTMzC6HQ==" /></div> <input class="form-control" id="repository_id" name="repository_id" type="hidden" value="24656398" />
|
||||
|
||||
<div class="select-menu js-menu-container js-select-menu">
|
||||
<a href="/kc5nra/obs-studio-utils/subscription"
|
||||
class="btn btn-sm btn-with-count select-menu-button js-menu-target" role="button" tabindex="0" aria-haspopup="true"
|
||||
data-ga-click="Repository, click Watch settings, action:blob#show">
|
||||
<span class="js-select-button">
|
||||
<svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</a>
|
||||
<a class="social-count js-social-count"
|
||||
href="/kc5nra/obs-studio-utils/watchers"
|
||||
aria-label="6 users are watching this repository">
|
||||
6
|
||||
</a>
|
||||
|
||||
<div class="select-menu-modal-holder">
|
||||
<div class="select-menu-modal subscription-menu-modal js-menu-content" aria-hidden="true">
|
||||
<div class="select-menu-header js-navigation-enable" tabindex="-1">
|
||||
<svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
|
||||
<span class="select-menu-title">Notifications</span>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list js-navigation-container" role="menu">
|
||||
|
||||
<div class="select-menu-item js-navigation-item selected" role="menuitem" tabindex="0">
|
||||
<svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input checked="checked" id="do_included" name="do" type="radio" value="included" />
|
||||
<span class="select-menu-item-heading">Not watching</span>
|
||||
<span class="description">Be notified when participating or @mentioned.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Watch
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
|
||||
<svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input id="do_subscribed" name="do" type="radio" value="subscribed" />
|
||||
<span class="select-menu-item-heading">Watching</span>
|
||||
<span class="description">Be notified of all conversations.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg aria-hidden="true" class="octicon octicon-eye" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.06 2C3 2 0 8 0 8s3 6 8.06 6C13 14 16 8 16 8s-3-6-7.94-6zM8 12c-2.2 0-4-1.78-4-4 0-2.2 1.8-4 4-4 2.22 0 4 1.8 4 4 0 2.22-1.78 4-4 4zm2-4c0 1.11-.89 2-2 2-1.11 0-2-.89-2-2 0-1.11.89-2 2-2 1.11 0 2 .89 2 2z"/></svg>
|
||||
Unwatch
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-item js-navigation-item " role="menuitem" tabindex="0">
|
||||
<svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
|
||||
<div class="select-menu-item-text">
|
||||
<input id="do_ignore" name="do" type="radio" value="ignore" />
|
||||
<span class="select-menu-item-heading">Ignoring</span>
|
||||
<span class="description">Never be notified.</span>
|
||||
<span class="js-select-button-text hidden-select-button-text">
|
||||
<svg aria-hidden="true" class="octicon octicon-mute" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8 2.81v10.38c0 .67-.81 1-1.28.53L3 10H1c-.55 0-1-.45-1-1V7c0-.55.45-1 1-1h2l3.72-3.72C7.19 1.81 8 2.14 8 2.81zm7.53 3.22l-1.06-1.06-1.97 1.97-1.97-1.97-1.06 1.06L11.44 8 9.47 9.97l1.06 1.06 1.97-1.97 1.97 1.97 1.06-1.06L13.56 8l1.97-1.97z"/></svg>
|
||||
Stop ignoring
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="js-toggler-container js-social-container starring-container ">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kc5nra/obs-studio-utils/unstar" class="starred" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="uNPwxvmyPhwAsjUibCbKxZPg+6FNyS0wqv8HPlluJPjUflJmxafLWYbN3BQrvfH8Lc0ZHtLc/rWvAedO7AIezw==" /></div>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Unstar this repository" title="Unstar kc5nra/obs-studio-utils"
|
||||
data-ga-click="Repository, click unstar button, action:blob#show; text:Unstar">
|
||||
<svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg>
|
||||
Unstar
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/kc5nra/obs-studio-utils/stargazers"
|
||||
aria-label="8 users starred this repository">
|
||||
8
|
||||
</a>
|
||||
</form>
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kc5nra/obs-studio-utils/star" class="unstarred" data-remote="true" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="/sSbA/aj/l81g7HuzKrbvT/fZClJWTOY1T6jjNOGbTpB0vtZBytYMlHPt25VUZnhDcnvUHq56bYpHx4cSnYfgA==" /></div>
|
||||
<button
|
||||
type="submit"
|
||||
class="btn btn-sm btn-with-count js-toggler-target"
|
||||
aria-label="Star this repository" title="Star kc5nra/obs-studio-utils"
|
||||
data-ga-click="Repository, click star button, action:blob#show; text:Star">
|
||||
<svg aria-hidden="true" class="octicon octicon-star" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M14 6l-4.9-.64L7 1 4.9 5.36 0 6l3.6 3.26L2.67 14 7 11.67 11.33 14l-.93-4.74z"/></svg>
|
||||
Star
|
||||
</button>
|
||||
<a class="social-count js-social-count" href="/kc5nra/obs-studio-utils/stargazers"
|
||||
aria-label="8 users starred this repository">
|
||||
8
|
||||
</a>
|
||||
</form> </div>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a href="#fork-destination-box" class="btn btn-sm btn-with-count"
|
||||
title="Fork your own copy of kc5nra/obs-studio-utils to your account"
|
||||
aria-label="Fork your own copy of kc5nra/obs-studio-utils to your account"
|
||||
rel="facebox"
|
||||
data-ga-click="Repository, show fork modal, action:blob#show; text:Fork">
|
||||
<svg aria-hidden="true" class="octicon octicon-repo-forked" height="16" version="1.1" viewBox="0 0 10 16" width="10"><path fill-rule="evenodd" d="M8 1a1.993 1.993 0 0 0-1 3.72V6L5 8 3 6V4.72A1.993 1.993 0 0 0 2 1a1.993 1.993 0 0 0-1 3.72V6.5l3 3v1.78A1.993 1.993 0 0 0 5 15a1.993 1.993 0 0 0 1-3.72V9.5l3-3V4.72A1.993 1.993 0 0 0 8 1zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3 10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zm3-10c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
Fork
|
||||
</a>
|
||||
|
||||
<div id="fork-destination-box" style="display: none;">
|
||||
<h2 class="facebox-header" data-facebox-id="facebox-header">Where should we fork this repository?</h2>
|
||||
<include-fragment src=""
|
||||
class="js-fork-select-fragment fork-select-fragment"
|
||||
data-url="/kc5nra/obs-studio-utils/fork?fragment=1">
|
||||
<img alt="Loading" height="64" src="https://assets-cdn.github.com/images/spinners/octocat-spinner-128.gif" width="64" />
|
||||
</include-fragment>
|
||||
</div>
|
||||
|
||||
<a href="/kc5nra/obs-studio-utils/network" class="social-count"
|
||||
aria-label="4 users forked this repository">
|
||||
4
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1 class="public ">
|
||||
<svg aria-hidden="true" class="octicon octicon-repo" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z"/></svg>
|
||||
<span class="author" itemprop="author"><a href="/kc5nra" class="url fn" rel="author">kc5nra</a></span><!--
|
||||
--><span class="path-divider">/</span><!--
|
||||
--><strong itemprop="name"><a href="/kc5nra/obs-studio-utils" data-pjax="#js-repo-pjax-container">obs-studio-utils</a></strong>
|
||||
|
||||
</h1>
|
||||
|
||||
</div>
|
||||
<div class="container">
|
||||
|
||||
<nav class="reponav js-repo-nav js-sidenav-container-pjax"
|
||||
itemscope
|
||||
itemtype="http://schema.org/BreadcrumbList"
|
||||
role="navigation"
|
||||
data-pjax="#js-repo-pjax-container">
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a href="/kc5nra/obs-studio-utils" class="js-selected-navigation-item selected reponav-item" data-hotkey="g c" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches /kc5nra/obs-studio-utils" itemprop="url">
|
||||
<svg aria-hidden="true" class="octicon octicon-code" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z"/></svg>
|
||||
<span itemprop="name">Code</span>
|
||||
<meta itemprop="position" content="1">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a href="/kc5nra/obs-studio-utils/issues" class="js-selected-navigation-item reponav-item" data-hotkey="g i" data-selected-links="repo_issues repo_labels repo_milestones /kc5nra/obs-studio-utils/issues" itemprop="url">
|
||||
<svg aria-hidden="true" class="octicon octicon-issue-opened" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg>
|
||||
<span itemprop="name">Issues</span>
|
||||
<span class="counter">1</span>
|
||||
<meta itemprop="position" content="2">
|
||||
</a> </span>
|
||||
|
||||
<span itemscope itemtype="http://schema.org/ListItem" itemprop="itemListElement">
|
||||
<a href="/kc5nra/obs-studio-utils/pulls" class="js-selected-navigation-item reponav-item" data-hotkey="g p" data-selected-links="repo_pulls /kc5nra/obs-studio-utils/pulls" itemprop="url">
|
||||
<svg aria-hidden="true" class="octicon octicon-git-pull-request" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 11.28V5c-.03-.78-.34-1.47-.94-2.06C9.46 2.35 8.78 2.03 8 2H7V0L4 3l3 3V4h1c.27.02.48.11.69.31.21.2.3.42.31.69v6.28A1.993 1.993 0 0 0 10 15a1.993 1.993 0 0 0 1-3.72zm-1 2.92c-.66 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2zM4 3c0-1.11-.89-2-2-2a1.993 1.993 0 0 0-1 3.72v6.56A1.993 1.993 0 0 0 2 15a1.993 1.993 0 0 0 1-3.72V4.72c.59-.34 1-.98 1-1.72zm-.8 10c0 .66-.55 1.2-1.2 1.2-.65 0-1.2-.55-1.2-1.2 0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2zM2 4.2C1.34 4.2.8 3.65.8 3c0-.65.55-1.2 1.2-1.2.65 0 1.2.55 1.2 1.2 0 .65-.55 1.2-1.2 1.2z"/></svg>
|
||||
<span itemprop="name">Pull requests</span>
|
||||
<span class="counter">0</span>
|
||||
<meta itemprop="position" content="3">
|
||||
</a> </span>
|
||||
|
||||
<a href="/kc5nra/obs-studio-utils/projects" class="js-selected-navigation-item reponav-item" data-selected-links="repo_projects new_repo_project repo_project /kc5nra/obs-studio-utils/projects">
|
||||
<svg aria-hidden="true" class="octicon octicon-project" height="16" version="1.1" viewBox="0 0 15 16" width="15"><path fill-rule="evenodd" d="M10 12h3V2h-3v10zm-4-2h3V2H6v8zm-4 4h3V2H2v12zm-1 1h13V1H1v14zM14 0H1a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1V1a1 1 0 0 0-1-1z"/></svg>
|
||||
Projects
|
||||
<span class="counter">0</span>
|
||||
</a>
|
||||
<a href="/kc5nra/obs-studio-utils/wiki" class="js-selected-navigation-item reponav-item" data-hotkey="g w" data-selected-links="repo_wiki /kc5nra/obs-studio-utils/wiki">
|
||||
<svg aria-hidden="true" class="octicon octicon-book" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M3 5h4v1H3V5zm0 3h4V7H3v1zm0 2h4V9H3v1zm11-5h-4v1h4V5zm0 2h-4v1h4V7zm0 2h-4v1h4V9zm2-6v9c0 .55-.45 1-1 1H9.5l-1 1-1-1H2c-.55 0-1-.45-1-1V3c0-.55.45-1 1-1h5.5l1 1 1-1H15c.55 0 1 .45 1 1zm-8 .5L7.5 3H2v9h6V3.5zm7-.5H9.5l-.5.5V12h6V3z"/></svg>
|
||||
Wiki
|
||||
</a>
|
||||
|
||||
<a href="/kc5nra/obs-studio-utils/pulse" class="js-selected-navigation-item reponav-item" data-selected-links="pulse /kc5nra/obs-studio-utils/pulse">
|
||||
<svg aria-hidden="true" class="octicon octicon-pulse" height="16" version="1.1" viewBox="0 0 14 16" width="14"><path fill-rule="evenodd" d="M11.5 8L8.8 5.4 6.6 8.5 5.5 1.6 2.38 8H0v2h3.6l.9-1.8.9 5.4L9 8.5l1.6 1.5H14V8z"/></svg>
|
||||
Pulse
|
||||
</a>
|
||||
<a href="/kc5nra/obs-studio-utils/graphs" class="js-selected-navigation-item reponav-item" data-selected-links="repo_graphs repo_contributors /kc5nra/obs-studio-utils/graphs">
|
||||
<svg aria-hidden="true" class="octicon octicon-graph" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M16 14v1H0V0h1v14h15zM5 13H3V8h2v5zm4 0H7V3h2v10zm4 0h-2V6h2v7z"/></svg>
|
||||
Graphs
|
||||
</a>
|
||||
|
||||
</nav>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container new-discussion-timeline experiment-repo-nav">
|
||||
<div class="repository-content">
|
||||
|
||||
|
||||
|
||||
<a href="/kc5nra/obs-studio-utils/blob/b3ffed1c23a254e44d3dcdd2af3f9b13f63d7939/install/osx/obs.png" class="d-none js-permalink-shortcut" data-hotkey="y">Permalink</a>
|
||||
|
||||
<!-- blob contrib key: blob_contributors:v21:6c7ce207313616b1dc79697595d24fe7 -->
|
||||
|
||||
<div class="file-navigation js-zeroclipboard-container">
|
||||
|
||||
<div class="select-menu branch-select-menu js-menu-container js-select-menu float-left">
|
||||
<button class="btn btn-sm select-menu-button js-menu-target css-truncate" data-hotkey="w"
|
||||
|
||||
type="button" aria-label="Switch branches or tags" tabindex="0" aria-haspopup="true">
|
||||
<i>Branch:</i>
|
||||
<span class="js-select-button css-truncate-target">master</span>
|
||||
</button>
|
||||
|
||||
<div class="select-menu-modal-holder js-menu-content js-navigation-container" data-pjax aria-hidden="true">
|
||||
|
||||
<div class="select-menu-modal">
|
||||
<div class="select-menu-header">
|
||||
<svg aria-label="Close" class="octicon octicon-x js-menu-close" height="16" role="img" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
|
||||
<span class="select-menu-title">Switch branches/tags</span>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-filters">
|
||||
<div class="select-menu-text-filter">
|
||||
<input type="text" aria-label="Filter branches/tags" id="context-commitish-filter-field" class="form-control js-filterable-field js-navigation-enable" placeholder="Filter branches/tags">
|
||||
</div>
|
||||
<div class="select-menu-tabs">
|
||||
<ul>
|
||||
<li class="select-menu-tab">
|
||||
<a href="#" data-tab-filter="branches" data-filter-placeholder="Filter branches/tags" class="js-select-menu-tab" role="tab">Branches</a>
|
||||
</li>
|
||||
<li class="select-menu-tab">
|
||||
<a href="#" data-tab-filter="tags" data-filter-placeholder="Find a tag…" class="js-select-menu-tab" role="tab">Tags</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="branches" role="menu">
|
||||
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
<a class="select-menu-item js-navigation-item js-navigation-open selected"
|
||||
href="/kc5nra/obs-studio-utils/blob/master/install/osx/obs.png"
|
||||
data-name="master"
|
||||
data-skip-pjax="true"
|
||||
rel="nofollow">
|
||||
<svg aria-hidden="true" class="octicon octicon-check select-menu-item-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5z"/></svg>
|
||||
<span class="select-menu-item-text css-truncate-target js-select-menu-filter-text">
|
||||
master
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
|
||||
<div class="select-menu-list select-menu-tab-bucket js-select-menu-tab-bucket" data-tab-filter="tags">
|
||||
<div data-filterable-for="context-commitish-filter-field" data-filterable-type="substring">
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="select-menu-no-results">Nothing to show</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="BtnGroup float-right">
|
||||
<a href="/kc5nra/obs-studio-utils/find/master"
|
||||
class="js-pjax-capture-input btn btn-sm BtnGroup-item"
|
||||
data-pjax
|
||||
data-hotkey="t">
|
||||
Find file
|
||||
</a>
|
||||
<button aria-label="Copy file path to clipboard" class="js-zeroclipboard btn btn-sm BtnGroup-item tooltipped tooltipped-s" data-copied-hint="Copied!" type="button">Copy path</button>
|
||||
</div>
|
||||
<div class="breadcrumb js-zeroclipboard-target">
|
||||
<span class="repo-root js-repo-root"><span class="js-path-segment"><a href="/kc5nra/obs-studio-utils"><span>obs-studio-utils</span></a></span></span><span class="separator">/</span><span class="js-path-segment"><a href="/kc5nra/obs-studio-utils/tree/master/install"><span>install</span></a></span><span class="separator">/</span><span class="js-path-segment"><a href="/kc5nra/obs-studio-utils/tree/master/install/osx"><span>osx</span></a></span><span class="separator">/</span><strong class="final-path">obs.png</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="commit-tease">
|
||||
<span class="float-right">
|
||||
<a class="commit-tease-sha" href="/kc5nra/obs-studio-utils/commit/b83a806a64ffd96f547029d64ed28aad49e20d5b" data-pjax>
|
||||
b83a806
|
||||
</a>
|
||||
<relative-time datetime="2014-10-01T22:46:15Z">Oct 1, 2014</relative-time>
|
||||
</span>
|
||||
<div>
|
||||
<img alt="@kc5nra" class="avatar" height="20" src="https://avatars3.githubusercontent.com/u/231018?v=3&s=40" width="20" />
|
||||
<a href="/kc5nra" class="user-mention" rel="author">kc5nra</a>
|
||||
<a href="/kc5nra/obs-studio-utils/commit/b83a806a64ffd96f547029d64ed28aad49e20d5b" class="message" data-pjax="true" title="Png more transparent, obs bundle id and img loc">Png more transparent, obs bundle id and img loc</a>
|
||||
</div>
|
||||
|
||||
<div class="commit-tease-contributors">
|
||||
<button type="button" class="btn-link muted-link contributors-toggle" data-facebox="#blob_contributors_box">
|
||||
<strong>1</strong>
|
||||
contributor
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
<div id="blob_contributors_box" style="display:none">
|
||||
<h2 class="facebox-header" data-facebox-id="facebox-header">Users who have contributed to this file</h2>
|
||||
<ul class="facebox-user-list" data-facebox-id="facebox-description">
|
||||
<li class="facebox-user-list-item">
|
||||
<img alt="@kc5nra" height="24" src="https://avatars1.githubusercontent.com/u/231018?v=3&s=48" width="24" />
|
||||
<a href="/kc5nra">kc5nra</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="file">
|
||||
<div class="file-header">
|
||||
<div class="file-actions">
|
||||
|
||||
<div class="BtnGroup">
|
||||
<a href="/kc5nra/obs-studio-utils/raw/master/install/osx/obs.png" class="btn btn-sm BtnGroup-item" id="raw-url">Download</a>
|
||||
<a href="/kc5nra/obs-studio-utils/commits/master/install/osx/obs.png" class="btn btn-sm BtnGroup-item" rel="nofollow">History</a>
|
||||
</div>
|
||||
|
||||
<a class="btn-octicon tooltipped tooltipped-nw"
|
||||
href="github-mac://openRepo/https://github.com/kc5nra/obs-studio-utils?branch=master&filepath=install%2Fosx%2Fobs.png"
|
||||
aria-label="Open this file in GitHub Desktop"
|
||||
data-ga-click="Repository, open with desktop, type:mac">
|
||||
<svg aria-hidden="true" class="octicon octicon-device-desktop" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M15 2H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h5.34c-.25.61-.86 1.39-2.34 2h8c-1.48-.61-2.09-1.39-2.34-2H15c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 9H1V3h14v8z"/></svg>
|
||||
</a>
|
||||
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="/kc5nra/obs-studio-utils/delete/master/install/osx/obs.png" class="inline-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="uGzTDUGxcZBqCvnvwWvHWxzog35RyhtwqPCf9WmjMskKj0JcMzGgzzfI9Vg2tnJjAjFGp9psbMbIg54+M9+7/A==" /></div>
|
||||
<button class="btn-octicon btn-octicon-danger tooltipped tooltipped-nw" type="submit"
|
||||
aria-label="Delete the file in your fork of this project" data-disable-with>
|
||||
<svg aria-hidden="true" class="octicon octicon-trashcan" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M11 2H9c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 12H3V5h1v8h1V5h1v8h1V5h1v8h1V5h1v9zm1-10H2V3h9v1z"/></svg>
|
||||
</button>
|
||||
</form> </div>
|
||||
|
||||
<div class="file-info">
|
||||
52.8 KB
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div itemprop="text" class="blob-wrapper data type-text">
|
||||
<div class="image">
|
||||
<span class="border-wrap"><img src="/kc5nra/obs-studio-utils/blob/master/install/osx/obs.png?raw=true" alt="obs.png"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<button type="button" data-facebox="#jump-to-line" data-facebox-class="linejump" data-hotkey="l" class="d-none">Jump to Line</button>
|
||||
<div id="jump-to-line" style="display:none">
|
||||
<!-- '"` --><!-- </textarea></xmp> --></option></form><form accept-charset="UTF-8" action="" class="js-jump-to-line-form" method="get"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /></div>
|
||||
<input class="form-control linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line…" aria-label="Jump to line" autofocus>
|
||||
<button type="submit" class="btn">Go</button>
|
||||
</form></div>
|
||||
|
||||
</div>
|
||||
<div class="modal-backdrop js-touch-events"></div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="container site-footer-container">
|
||||
<div class="site-footer" role="contentinfo">
|
||||
<ul class="site-footer-links float-right">
|
||||
<li><a href="https://github.com/contact" data-ga-click="Footer, go to contact, text:contact">Contact GitHub</a></li>
|
||||
<li><a href="https://developer.github.com" data-ga-click="Footer, go to api, text:api">API</a></li>
|
||||
<li><a href="https://training.github.com" data-ga-click="Footer, go to training, text:training">Training</a></li>
|
||||
<li><a href="https://shop.github.com" data-ga-click="Footer, go to shop, text:shop">Shop</a></li>
|
||||
<li><a href="https://github.com/blog" data-ga-click="Footer, go to blog, text:blog">Blog</a></li>
|
||||
<li><a href="https://github.com/about" data-ga-click="Footer, go to about, text:about">About</a></li>
|
||||
|
||||
</ul>
|
||||
|
||||
<a href="https://github.com" aria-label="Homepage" class="site-footer-mark" title="GitHub">
|
||||
<svg aria-hidden="true" class="octicon octicon-mark-github" height="24" version="1.1" viewBox="0 0 16 16" width="24"><path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></svg>
|
||||
</a>
|
||||
<ul class="site-footer-links">
|
||||
<li>© 2017 <span title="0.13223s from github-fe143-cp1-prd.iad.github.net">GitHub</span>, Inc.</li>
|
||||
<li><a href="https://github.com/site/terms" data-ga-click="Footer, go to terms, text:terms">Terms</a></li>
|
||||
<li><a href="https://github.com/site/privacy" data-ga-click="Footer, go to privacy, text:privacy">Privacy</a></li>
|
||||
<li><a href="https://github.com/security" data-ga-click="Footer, go to security, text:security">Security</a></li>
|
||||
<li><a href="https://status.github.com/" data-ga-click="Footer, go to status, text:status">Status</a></li>
|
||||
<li><a href="https://help.github.com" data-ga-click="Footer, go to help, text:help">Help</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div id="ajax-error-message" class="ajax-error-message flash flash-error">
|
||||
<svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
|
||||
<button type="button" class="flash-close js-flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
|
||||
<svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
|
||||
</button>
|
||||
You can't perform that action at this time.
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script crossorigin="anonymous" integrity="sha256-uzmufYSNQNbwHmc1XigpZPVPo5E3wOzJ/E7Dfn1GlQg=" src="https://assets-cdn.github.com/assets/frameworks-bb39ae7d848d40d6f01e67355e282964f54fa39137c0ecc9fc4ec37e7d469508.js"></script>
|
||||
<script async="async" crossorigin="anonymous" integrity="sha256-/48DIbQkaCd8FbKJGEm8s5jOpo2/L4j5LZ+RY+umtSU=" src="https://assets-cdn.github.com/assets/github-ff8f0321b42468277c15b2891849bcb398cea68dbf2f88f92d9f9163eba6b525.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="js-stale-session-flash stale-session-flash flash flash-warn flash-banner d-none">
|
||||
<svg aria-hidden="true" class="octicon octicon-alert" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M8.865 1.52c-.18-.31-.51-.5-.87-.5s-.69.19-.87.5L.275 13.5c-.18.31-.18.69 0 1 .19.31.52.5.87.5h13.7c.36 0 .69-.19.86-.5.17-.31.18-.69.01-1L8.865 1.52zM8.995 13h-2v-2h2v2zm0-3h-2V6h2v4z"/></svg>
|
||||
<span class="signed-in-tab-flash">You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
<span class="signed-out-tab-flash">You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
|
||||
</div>
|
||||
<div class="facebox" id="facebox" style="display:none;">
|
||||
<div class="facebox-popup">
|
||||
<div class="facebox-content" role="dialog" aria-labelledby="facebox-header" aria-describedby="facebox-description">
|
||||
</div>
|
||||
<button type="button" class="facebox-close js-facebox-close" aria-label="Close modal">
|
||||
<svg aria-hidden="true" class="octicon octicon-x" height="16" version="1.1" viewBox="0 0 12 16" width="12"><path fill-rule="evenodd" d="M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
94
CI/install/osx/package_util.py
Normal file
94
CI/install/osx/package_util.py
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
def cmd(cmd):
|
||||
import subprocess
|
||||
import shlex
|
||||
return subprocess.check_output(shlex.split(cmd)).rstrip('\r\n')
|
||||
|
||||
def get_tag_info(tag):
|
||||
rev = cmd('git rev-parse {0}'.format(latest_tag))
|
||||
anno = cmd('git cat-file -p {0}'.format(rev))
|
||||
tag_info = []
|
||||
for i, v in enumerate(anno.splitlines()):
|
||||
if i <= 4:
|
||||
continue
|
||||
tag_info.append(v.lstrip())
|
||||
|
||||
return tag_info
|
||||
|
||||
def gen_html(github_user, latest_tag):
|
||||
|
||||
url = 'https://github.com/{0}/obs-studio/commit/%H'.format(github_user)
|
||||
|
||||
with open('readme.html', 'w') as f:
|
||||
f.write("<html><body>")
|
||||
log_cmd = """git log {0}...HEAD --pretty=format:'<li>• <a href="{1}">(view)</a> %s</li>'"""
|
||||
log_res = cmd(log_cmd.format(latest_tag, url))
|
||||
if len(log_res.splitlines()):
|
||||
f.write('<p>Changes since {0}: (Newest to oldest)</p>'.format(latest_tag))
|
||||
f.write(log_res)
|
||||
|
||||
ul = False
|
||||
f.write('<p>')
|
||||
import re
|
||||
|
||||
for l in get_tag_info(latest_tag):
|
||||
if not len(l):
|
||||
continue
|
||||
if l.startswith('*'):
|
||||
ul = True
|
||||
if not ul:
|
||||
f.write('<ul>')
|
||||
f.write('<li>• {0}</li>'.format(re.sub(r'^(\s*)?[*](\s*)?', '', l)))
|
||||
else:
|
||||
if ul:
|
||||
f.write('</ul><p/>')
|
||||
ul = False
|
||||
f.write('<p>{0}</p>'.format(l))
|
||||
if ul:
|
||||
f.write('</ul>')
|
||||
f.write('</p></body></html>')
|
||||
|
||||
cmd('textutil -convert rtf readme.html -output readme.rtf')
|
||||
cmd("""sed -i '' 's/Times-Roman/Verdana/g' readme.rtf""")
|
||||
|
||||
def save_manifest(latest_tag, user, jenkins_build, branch, stable):
|
||||
log = cmd('git log --pretty=oneline {0}...HEAD'.format(latest_tag))
|
||||
manifest = {}
|
||||
manifest['commits'] = []
|
||||
for v in log.splitlines():
|
||||
manifest['commits'].append(v)
|
||||
manifest['tag'] = {
|
||||
'name': latest_tag,
|
||||
'description': get_tag_info(latest_tag)
|
||||
}
|
||||
|
||||
manifest['version'] = cmd('git rev-list HEAD --count')
|
||||
manifest['sha1'] = cmd('git rev-parse HEAD')
|
||||
manifest['jenkins_build'] = jenkins_build
|
||||
|
||||
manifest['user'] = user
|
||||
manifest['branch'] = branch
|
||||
manifest['stable'] = stable
|
||||
|
||||
import cPickle
|
||||
with open('manifest', 'w') as f:
|
||||
cPickle.dump(manifest, f)
|
||||
|
||||
def prepare_pkg(project, package_id):
|
||||
cmd('packagesutil --file "{0}" set package-1 identifier {1}'.format(project, package_id))
|
||||
cmd('packagesutil --file "{0}" set package-1 version {1}'.format(project, '1.0'))
|
||||
|
||||
|
||||
import argparse
|
||||
parser = argparse.ArgumentParser(description='obs-studio package util')
|
||||
parser.add_argument('-u', '--user', dest='user', default='jp9000')
|
||||
parser.add_argument('-p', '--package-id', dest='package_id', default='org.obsproject.pkg.obs-studio')
|
||||
parser.add_argument('-f', '--project-file', dest='project', default='OBS.pkgproj')
|
||||
parser.add_argument('-j', '--jenkins-build', dest='jenkins_build', default='0')
|
||||
parser.add_argument('-b', '--branch', dest='branch', default='master')
|
||||
parser.add_argument('-s', '--stable', dest='stable', required=False, action='store_true', default=False)
|
||||
args = parser.parse_args()
|
||||
|
||||
latest_tag = cmd('git describe --tags --abbrev=0')
|
||||
gen_html(args.user, latest_tag)
|
||||
prepare_pkg(args.project, args.package_id)
|
||||
save_manifest(latest_tag, args.user, args.jenkins_build, args.branch, args.stable)
|
||||
5
CI/install/osx/post-install.sh
Normal file
5
CI/install/osx/post-install.sh
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Fix permissions on CEF
|
||||
chmod 744 "/Library/Application Support/obs-studio/plugins/obs-browser/bin/CEF.app/Contents/Info.plist"
|
||||
chmod 744 "/Library/Application Support/obs-studio/plugins/obs-browser/bin/CEF.app/Contents/Frameworks/CEF Helper.app/Contents/Info.plist"
|
||||
BIN
CI/osxcert/Certificates.p12.enc
Normal file
BIN
CI/osxcert/Certificates.p12.enc
Normal file
Binary file not shown.
130
CI/util/build-package-deps-osx.sh
Executable file
130
CI/util/build-package-deps-osx.sh
Executable file
|
|
@ -0,0 +1,130 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
CURDIR=$(pwd)
|
||||
|
||||
# the temp directory
|
||||
WORK_DIR=`mktemp -d`
|
||||
|
||||
# deletes the temp directory
|
||||
function cleanup {
|
||||
#rm -rf "$WORK_DIR"
|
||||
echo "Deleted temp working directory $WORK_DIR"
|
||||
}
|
||||
|
||||
# register the cleanup function to be called on the EXIT signal
|
||||
trap cleanup EXIT
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
DEPS_DEST=$WORK_DIR/obsdeps
|
||||
|
||||
# make dest dirs
|
||||
mkdir $DEPS_DEST
|
||||
mkdir $DEPS_DEST/bin
|
||||
mkdir $DEPS_DEST/include
|
||||
|
||||
# OSX COMPAT
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.9
|
||||
|
||||
# If you need an olders SDK and Xcode won't give it to you
|
||||
# https://github.com/phracker/MacOSX-SDKs
|
||||
|
||||
# libopus
|
||||
curl -L -O http://downloads.xiph.org/releases/opus/opus-1.1.3.tar.gz
|
||||
tar -xf opus-1.1.3.tar.gz
|
||||
cd ./opus-1.1.3
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libogg
|
||||
curl -L -O http://downloads.xiph.org/releases/ogg/libogg-1.3.2.tar.gz
|
||||
tar -xf libogg-1.3.2.tar.gz
|
||||
cd ./libogg-1.3.2
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libvorbis
|
||||
curl -L -O http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.5.tar.gz
|
||||
tar -xf libvorbis-1.3.5.tar.gz
|
||||
cd ./libvorbis-1.3.5
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libvpx
|
||||
curl -L -O http://storage.googleapis.com/downloads.webmproject.org/releases/webm/libvpx-1.6.0.tar.bz2
|
||||
tar -xf libvpx-1.6.0.tar.bz2
|
||||
cd ./libvpx-1.6.0
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --libdir="/tmp/obsdeps/bin"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# x264
|
||||
git clone git://git.videolan.org/x264.git
|
||||
cd ./x264
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --libdir="/tmp/obsdeps/bin" --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
ln -f -s libx264.*.dylib libx264.dylib
|
||||
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# janson
|
||||
curl -L -O http://www.digip.org/jansson/releases/jansson-2.9.tar.gz
|
||||
tar -xf jansson-2.9.tar.gz
|
||||
cd jansson-2.9
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --libdir="/tmp/obsdeps/bin" --enable-shared --disable-static
|
||||
make -j 12
|
||||
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
export LDFLAGS="-L/tmp/obsdeps/lib"
|
||||
export CFLAGS="-I/tmp/obsdeps/include"
|
||||
|
||||
# FFMPEG
|
||||
curl -L -O https://github.com/FFmpeg/FFmpeg/archive/n3.2.2.zip
|
||||
unzip ./n3.2.2.zip
|
||||
cd ./FFmpeg-n3.2.2
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx
|
||||
make -j 12
|
||||
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
tar -czf osx-deps.tar.gz obsdeps
|
||||
|
||||
cp ./osx-deps.tar.gz $CURDIR
|
||||
69
CI/util/win32.sh
Executable file
69
CI/util/win32.sh
Executable file
|
|
@ -0,0 +1,69 @@
|
|||
#/bin/bash
|
||||
|
||||
cd x264
|
||||
make clean
|
||||
LDFLAGS="-static-libgcc" ./configure --enable-shared --enable-win32thread --disable-avs --disable-ffms --disable-gpac --disable-interlaced --disable-lavf --cross-prefix=i686-w64-mingw32- --host=i686-pc-mingw32 --prefix="/home/jim/packages/win32"
|
||||
make -j6 fprofiled VIDS="CITY_704x576_60_orig_01.yuv"
|
||||
make install
|
||||
i686-w64-mingw32-dlltool -z /home/jim/packages/win32/bin/x264.orig.def --export-all-symbols /home/jim/packages/win32/bin/libx264-148.dll
|
||||
grep "EXPORTS\|x264" /home/jim/packages/win32/bin/x264.orig.def > /home/jim/packages/win32/bin/x264.def
|
||||
rm -f /home/jim/packages/win32/bin/x264.org.def
|
||||
sed -i -e "/\\t.*DATA/d" -e "/\\t\".*/d" -e "s/\s@.*//" /home/jim/packages/win32/bin/x264.def
|
||||
i686-w64-mingw32-dlltool -m i386 -d /home/jim/packages/win32/bin/x264.def -l /home/jim/packages/win32/bin/x264.lib -D /home/jim/win32/packages/bin/libx264-148.dll
|
||||
cd ..
|
||||
|
||||
cd opus
|
||||
make clean
|
||||
LDFLAGS="-static-libgcc" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd zlib/build32
|
||||
make clean
|
||||
cmake .. -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_INSTALL_PREFIX=/home/jim/packages/win32 -DINSTALL_PKGCONFIG_DIR=/home/jim/packages/win32/lib/pkgconfig -DCMAKE_RC_COMPILER=i686-w64-mingw32-windres -DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc"
|
||||
make -j6
|
||||
make install
|
||||
mv ../../win32/lib/libzlib.dll.a ../../win32/lib/libz.dll.a
|
||||
mv ../../win32/lib/libzlibstatic.a ../../win32/lib/libz.a
|
||||
cp ../win32/zlib.def /home/jim/packages/win32/bin
|
||||
i686-w64-mingw32-dlltool -m i386 -d ../win32/zlib.def -l /home/jim/packages/win32/bin/zlib.lib -D /home/jim/win32/packages/bin/zlib.dll
|
||||
cd ../..
|
||||
|
||||
cd libpng
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libogg
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libvorbis
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win32/include" ./configure -host=i686-w64-mingw32 --prefix="/home/jim/packages/win32" --enable-shared --with-ogg="/home/jim/packages/win32"
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libvpxbuild
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" CROSS=i686-w64-mingw32- LDFLAGS="-static-libgcc" ../libvpx/configure --prefix=/home/jim/packages/win32 --enable-vp8 --enable-vp9 --disable-docs --disable-examples --enable-shared --disable-static --enable-runtime-cpu-detect --enable-realtime-only --disable-install-bins --disable-install-docs --disable-unit-tests --target=x86-win32-gcc
|
||||
make -j6
|
||||
make install
|
||||
i686-w64-mingw32-dlltool -m i386 -d libvpx.def -l /home/jim/packages/win32/bin/vpx.lib -D /home/jim/win32/packages/bin/libvpx-1.dll
|
||||
cd ..
|
||||
|
||||
cd ffmpeg
|
||||
make clean
|
||||
cp /media/sf_linux/nvEncodeAPI.h /home/jim/packages/win32/include
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win32/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win32/lib -static-libgcc" CFLAGS="-I/home/jim/packages/win32/include" ./configure --enable-memalign-hack --enable-gpl --disable-programs --disable-doc --arch=x86 --enable-shared --enable-nvenc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-debug --cross-prefix=i686-w64-mingw32- --target-os=mingw32 --pkg-config=pkg-config --prefix="/home/jim/packages/win32" --disable-postproc
|
||||
read -n1 -r -p "Press any key to continue building FFmpeg..." key
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
69
CI/util/win64.sh
Executable file
69
CI/util/win64.sh
Executable file
|
|
@ -0,0 +1,69 @@
|
|||
#/bin/bash
|
||||
|
||||
cd x264
|
||||
make clean
|
||||
LDFLAGS="-static-libgcc" ./configure --enable-shared --enable-win32thread --disable-avs --disable-ffms --disable-gpac --disable-interlaced --disable-lavf --cross-prefix=x86_64-w64-mingw32- --host=x86_64-pc-mingw32 --prefix="/home/jim/packages/win64"
|
||||
make -j6 fprofiled VIDS="CITY_704x576_60_orig_01.yuv"
|
||||
make install
|
||||
x86_64-w64-mingw32-dlltool -z /home/jim/packages/win64/bin/x264.orig.def --export-all-symbols /home/jim/packages/win64/bin/libx264-148.dll
|
||||
grep "EXPORTS\|x264" /home/jim/packages/win64/bin/x264.orig.def > /home/jim/packages/win64/bin/x264.def
|
||||
rm -f /home/jim/packages/win64/bin/x264.org.def
|
||||
sed -i -e "/\\t.*DATA/d" -e "/\\t\".*/d" -e "s/\s@.*//" /home/jim/packages/win64/bin/x264.def
|
||||
x86_64-w64-mingw32-dlltool -m i386:x86-64 -d /home/jim/packages/win64/bin/x264.def -l /home/jim/packages/win64/bin/x264.lib -D /home/jim/win64/packages/bin/libx264-148.dll
|
||||
cd ..
|
||||
|
||||
cd opus
|
||||
make clean
|
||||
LDFLAGS="-static-libgcc" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd zlib/build64
|
||||
make clean
|
||||
cmake .. -DCMAKE_SYSTEM_NAME=Windows -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -DCMAKE_INSTALL_PREFIX=/home/jim/packages/win64 -DCMAKE_RC_COMPILER=x86_64-w64-mingw32-windres -DCMAKE_SHARED_LINKER_FLAGS="-static-libgcc"
|
||||
make -j6
|
||||
make install
|
||||
mv ../../win64/lib/libzlib.dll.a ../../win64/lib/libz.dll.a
|
||||
mv ../../win64/lib/libzlibstatic.a ../../win64/lib/libz.a
|
||||
cp ../win64/zlib.def /home/jim/packages/win64/bin
|
||||
x86_64-w64-mingw32-dlltool -m i386:x86-64 -d ../win32/zlib.def -l /home/jim/packages/win64/bin/zlib.lib -D /home/jim/win64/packages/bin/zlib.dll
|
||||
cd ../..
|
||||
|
||||
cd libpng
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libogg
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libvorbis
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib -static-libgcc" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure -host=x86_64-w64-mingw32 --prefix="/home/jim/packages/win64" --enable-shared --with-ogg="/home/jim/packages/win64"
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
|
||||
cd libvpxbuild
|
||||
make clean
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" CROSS=x86_64-w64-mingw32- LDFLAGS="-static-libgcc" ../libvpx/configure --prefix=/home/jim/packages/win64 --enable-vp8 --enable-vp9 --disable-docs --disable-examples --enable-shared --disable-static --enable-runtime-cpu-detect --enable-realtime-only --disable-install-bins --disable-install-docs --disable-unit-tests --target=x86_64-win64-gcc
|
||||
make -j6
|
||||
make install
|
||||
x86_64-w64-mingw32-dlltool -m i386:x86-64 -d libvpx.def -l /home/jim/packages/win64/bin/vpx.lib -D /home/jim/win64/packages/bin/libvpx-1.dll
|
||||
cd ..
|
||||
|
||||
cd ffmpeg
|
||||
make clean
|
||||
cp /media/sf_linux/nvEncodeAPI.h /home/jim/packages/win64/include
|
||||
PKG_CONFIG_PATH="/home/jim/packages/win64/lib/pkgconfig" LDFLAGS="-L/home/jim/packages/win64/lib" CPPFLAGS="-I/home/jim/packages/win64/include" ./configure --enable-memalign-hack --enable-gpl --disable-doc --arch=x86_64 --enable-shared --enable-nvenc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-debug --cross-prefix=x86_64-w64-mingw32- --target-os=mingw32 --pkg-config=pkg-config --prefix="/home/jim/packages/win64" --disable-postproc
|
||||
read -n1 -r -p "Press any key to continue building FFmpeg..." key
|
||||
make -j6
|
||||
make install
|
||||
cd ..
|
||||
Loading…
Add table
Add a link
Reference in a new issue