commit
7f622d907a
|
@ -1,114 +0,0 @@
|
|||
hr() {
|
||||
echo "───────────────────────────────────────────────────"
|
||||
echo $1
|
||||
echo "───────────────────────────────────────────────────"
|
||||
}
|
||||
|
||||
# Exit if something fails
|
||||
set -e
|
||||
|
||||
# Generate file name variables
|
||||
export GIT_TAG=$(git describe --abbrev=0)
|
||||
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.dmg
|
||||
|
||||
echo "git tag: $GIT_TAG"
|
||||
|
||||
cd ./build
|
||||
|
||||
# Move obslua
|
||||
hr "Moving OBS LUA"
|
||||
mv ./rundir/RelWithDebInfo/data/obs-scripting/obslua.so ./rundir/RelWithDebInfo/bin/
|
||||
|
||||
# Move obspython
|
||||
hr "Moving OBS Python"
|
||||
# mv ./rundir/RelWithDebInfo/data/obs-scripting/_obspython.so ./rundir/RelWithDebInfo/bin/
|
||||
# mv ./rundir/RelWithDebInfo/data/obs-scripting/obspython.py ./rundir/RelWithDebInfo/bin/
|
||||
|
||||
# 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 --stable=$STABLE
|
||||
|
||||
../CI/install/osx/packageApp.sh
|
||||
|
||||
# fix obs outputs plugin it doesn't play nicely with dylibBundler at the moment
|
||||
if [ -f /usr/local/opt/mbedtls/lib/libmbedtls.12.dylib ]; then
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedtls.12.dylib ./OBS.app/Contents/Frameworks/
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedcrypto.3.dylib ./OBS.app/Contents/Frameworks/
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedx509.0.dylib ./OBS.app/Contents/Frameworks/
|
||||
chmod +w ./OBS.app/Contents/Frameworks/*.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Frameworks/libmbedtls.12.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Frameworks/libmbedcrypto.3.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Frameworks/libmbedx509.0.dylib
|
||||
install_name_tool -change libmbedtls.12.dylib @executable_path/../Frameworks/libmbedtls.12.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change libmbedcrypto.3.dylib @executable_path/../Frameworks/libmbedcrypto.3.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change libmbedx509.0.dylib @executable_path/../Frameworks/libmbedx509.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
elif [ -f /usr/local/opt/mbedtls/lib/libmbedtls.13.dylib ]; then
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedtls.13.dylib ./OBS.app/Contents/Frameworks/
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedcrypto.5.dylib ./OBS.app/Contents/Frameworks/
|
||||
cp /usr/local/opt/mbedtls/lib/libmbedx509.1.dylib ./OBS.app/Contents/Frameworks/
|
||||
chmod +w ./OBS.app/Contents/Frameworks/*.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedtls.13.dylib ./OBS.app/Contents/Frameworks/libmbedtls.13.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedcrypto.5.dylib ./OBS.app/Contents/Frameworks/libmbedcrypto.5.dylib
|
||||
install_name_tool -id @executable_path/../Frameworks/libmbedx509.1.dylib ./OBS.app/Contents/Frameworks/libmbedx509.1.dylib
|
||||
install_name_tool -change libmbedtls.13.dylib @executable_path/../Frameworks/libmbedtls.13.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change libmbedcrypto.5.dylib @executable_path/../Frameworks/libmbedcrypto.5.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change libmbedx509.1.dylib @executable_path/../Frameworks/libmbedx509.1.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
fi
|
||||
|
||||
install_name_tool -change /usr/local/opt/curl/lib/libcurl.4.dylib @executable_path/../Frameworks/libcurl.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change @rpath/libobs.0.dylib @executable_path/../Frameworks/libobs.0.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
install_name_tool -change /tmp/obsdeps/bin/libjansson.4.dylib @executable_path/../Frameworks/libjansson.4.dylib ./OBS.app/Contents/Plugins/obs-outputs.so
|
||||
|
||||
# copy sparkle into the app
|
||||
hr "Copying Sparkle.framework"
|
||||
cp -R ../../sparkle/Sparkle.framework ./OBS.app/Contents/Frameworks/
|
||||
install_name_tool -change @rpath/Sparkle.framework/Versions/A/Sparkle @executable_path/../Frameworks/Sparkle.framework/Versions/A/Sparkle ./OBS.app/Contents/MacOS/obs
|
||||
|
||||
# Copy Chromium embedded framework to app Frameworks directory
|
||||
hr "Copying Chromium Embedded Framework.framework"
|
||||
sudo mkdir -p OBS.app/Contents/Frameworks
|
||||
sudo cp -R ../../cef_binary_${CEF_BUILD_VERSION}_macosx64/Release/Chromium\ Embedded\ Framework.framework OBS.app/Contents/Frameworks/
|
||||
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/Plugins/obs-browser.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/Plugins/obs-browser.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/Plugins/obs-browser.so
|
||||
|
||||
cp ../CI/install/osx/OBSPublicDSAKey.pem OBS.app/Contents/Resources
|
||||
|
||||
# edit plist
|
||||
plutil -insert CFBundleVersion -string $GIT_TAG ./OBS.app/Contents/Info.plist
|
||||
plutil -insert CFBundleShortVersionString -string $GIT_TAG ./OBS.app/Contents/Info.plist
|
||||
plutil -insert OBSFeedsURL -string https://obsproject.com/osx_update/feeds.xml ./OBS.app/Contents/Info.plist
|
||||
plutil -insert SUFeedURL -string https://obsproject.com/osx_update/stable/updates.xml ./OBS.app/Contents/Info.plist
|
||||
plutil -insert SUPublicDSAKeyFile -string OBSPublicDSAKey.pem ./OBS.app/Contents/Info.plist
|
||||
|
||||
dmgbuild -s ../CI/install/osx/settings.json "OBS" obs.dmg
|
||||
|
||||
if [ -v "$TRAVIS" ]; then
|
||||
# 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 ""
|
||||
# macOS 10.12+
|
||||
security set-key-partition-list -S apple-tool:,apple: -s -k mysecretpassword build.keychain
|
||||
fi
|
||||
|
||||
cp ./OBS.dmg ./$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
|
|
@ -1,17 +0,0 @@
|
|||
# Make sure ccache is found
|
||||
export PATH=/usr/local/opt/ccache/libexec:$PATH
|
||||
|
||||
git fetch --tags
|
||||
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DENABLE_SPARKLE_UPDATER=ON \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.13 \
|
||||
-DDISABLE_PYTHON=ON \
|
||||
-DQTDIR=/usr/local/Cellar/qt/5.14.1 \
|
||||
-DDepsPath=/tmp/obsdeps \
|
||||
-DVLCPath=$PWD/../../vlc-3.0.8 \
|
||||
-DBUILD_BROWSER=ON \
|
||||
-DBROWSER_DEPLOY=ON \
|
||||
-DWITH_RTMPS=ON \
|
||||
-DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
|
|
@ -1,81 +0,0 @@
|
|||
hr() {
|
||||
echo "───────────────────────────────────────────────────"
|
||||
echo $1
|
||||
echo "───────────────────────────────────────────────────"
|
||||
}
|
||||
|
||||
# Exit if something fails
|
||||
set -e
|
||||
|
||||
# Echo all commands before executing
|
||||
set -v
|
||||
|
||||
if [[ $TRAVIS ]]; then
|
||||
git fetch --unshallow
|
||||
fi
|
||||
|
||||
git fetch origin --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
|
||||
hr "Downloading Packages app"
|
||||
wget --quiet --retry-connrefused --waitretry=1 https://s3-us-west-2.amazonaws.com/obs-nightly/Packages.pkg
|
||||
sudo installer -pkg ./Packages.pkg -target /
|
||||
|
||||
brew update
|
||||
|
||||
#Base OBS Deps and ccache
|
||||
for DEPENDENCY in jack speexdsp ccache mbedtls freetype fdk-aac cmocka; do
|
||||
if [ ! -d "$(brew --cellar)/${DEPENDENCY}" ]; then
|
||||
brew install $DEPENDENCY
|
||||
else
|
||||
brew upgrade $DEPENDENCY
|
||||
fi
|
||||
done
|
||||
|
||||
brew install https://gist.githubusercontent.com/DDRBoxman/9c7a2b08933166f4b61ed9a44b242609/raw/ef4de6c587c6bd7f50210eccd5bd51ff08e6de13/qt.rb
|
||||
if [ -d "$(brew --cellar)/swig" ]; then
|
||||
brew unlink swig
|
||||
fi
|
||||
brew install https://gist.githubusercontent.com/DDRBoxman/4cada55c51803a2f963fa40ce55c9d3e/raw/572c67e908bfbc1bcb8c476ea77ea3935133f5b5/swig.rb
|
||||
|
||||
pip install dmgbuild
|
||||
|
||||
export PATH=/usr/local/opt/ccache/libexec:$PATH
|
||||
ccache -s || echo "CCache is not available."
|
||||
|
||||
# Fetch and untar prebuilt OBS deps that are compatible with older versions of OSX
|
||||
hr "Downloading OBS deps"
|
||||
wget --quiet --retry-connrefused --waitretry=1 https://github.com/obsproject/obs-deps/releases/download/2020-04-24/osx-deps-2020-04-24.tar.gz
|
||||
tar -xf ./osx-deps-2020-04-24.tar.gz -C /tmp
|
||||
|
||||
# Fetch vlc codebase
|
||||
hr "Downloading VLC repo"
|
||||
wget --quiet --retry-connrefused --waitretry=1 https://downloads.videolan.org/vlc/3.0.8/vlc-3.0.8.tar.xz
|
||||
tar -xf vlc-3.0.8.tar.xz
|
||||
|
||||
# Get sparkle
|
||||
hr "Downloading Sparkle framework"
|
||||
wget --quiet --retry-connrefused --waitretry=1 -O sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/1.23.0/Sparkle-1.23.0.tar.bz2
|
||||
mkdir ./sparkle
|
||||
tar -xf ./sparkle.tar.bz2 -C ./sparkle
|
||||
sudo cp -R ./sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
|
||||
|
||||
# CEF Stuff
|
||||
hr "Downloading CEF"
|
||||
wget --quiet --retry-connrefused --waitretry=1 https://obs-nightly.s3-us-west-2.amazonaws.com/cef_binary_${CEF_BUILD_VERSION}_macosx64.tar.bz2
|
||||
tar -xf ./cef_binary_${CEF_BUILD_VERSION}_macosx64.tar.bz2
|
||||
cd ./cef_binary_${CEF_BUILD_VERSION}_macosx64
|
||||
# remove a broken test
|
||||
sed -i '.orig' '/add_subdirectory(tests\/ceftests)/d' ./CMakeLists.txt
|
||||
# target 10.11
|
||||
sed -i '.orig' s/\"10.9\"/\"10.11\"/ ./cmake/cef_variables.cmake
|
||||
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.11 ..
|
||||
make -j4
|
||||
mkdir libcef_dll
|
||||
cd ../../
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>obs.icns</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>OBS</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>OBS - Free and Open Source Streaming/Recording Software</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>obs</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.obsproject.obs-studio</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.8.5</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>LSAppNapIsDisabled</key>
|
||||
<true/>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>OBS needs to access the camera to enable camera sources to work.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>OBS needs to access the microphone to enable audio input.</string>
|
||||
</dict>
|
||||
</plist>
|
|
@ -1,36 +0,0 @@
|
|||
-----BEGIN PUBLIC KEY-----
|
||||
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
|
||||
MGjmuSOlPA1umQsToIcO4g==
|
||||
-----END PUBLIC KEY-----
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 28 KiB |
|
@ -1 +0,0 @@
|
|||
dmgbuild -s ./settings.json "OBS" obs.dmg
|
|
@ -1,238 +0,0 @@
|
|||
#!/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://obsproject.com/osx_update')
|
||||
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:
|
||||
if ".ini" in file_:
|
||||
continue
|
||||
if ".png" in file_:
|
||||
continue
|
||||
if ".effect" in file_:
|
||||
continue
|
||||
if ".py" in file_:
|
||||
continue
|
||||
if ".json" in file_:
|
||||
continue
|
||||
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")
|
||||
add_plugins(path, "styles")
|
||||
|
||||
|
||||
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:
|
||||
if copy_as == "Python":
|
||||
continue
|
||||
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")
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
tiffutil -cathidpicheck background.png background@2x.png -out background.tiff
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
|
@ -1,77 +0,0 @@
|
|||
# Exit if something fails
|
||||
set -e
|
||||
|
||||
rm -rf ./OBS.app
|
||||
|
||||
mkdir OBS.app
|
||||
mkdir OBS.app/Contents
|
||||
mkdir OBS.app/Contents/MacOS
|
||||
mkdir OBS.app/Contents/PlugIns
|
||||
mkdir OBS.app/Contents/Resources
|
||||
|
||||
cp -R rundir/RelWithDebInfo/bin/ ./OBS.app/Contents/MacOS
|
||||
cp -R rundir/RelWithDebInfo/data ./OBS.app/Contents/Resources
|
||||
cp ../CI/install/osx/obs.icns ./OBS.app/Contents/Resources
|
||||
cp -R rundir/RelWithDebInfo/obs-plugins/ ./OBS.app/Contents/PlugIns
|
||||
cp ../CI/install/osx/Info.plist ./OBS.app/Contents
|
||||
|
||||
../CI/install/osx/dylibBundler -b -cd -d ./OBS.app/Contents/Frameworks -p @executable_path/../Frameworks/ \
|
||||
-s ./OBS.app/Contents/MacOS \
|
||||
-s /usr/local/opt/mbedtls/lib/ \
|
||||
-x ./OBS.app/Contents/PlugIns/coreaudio-encoder.so \
|
||||
-x ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so \
|
||||
-x ./OBS.app/Contents/PlugIns/frontend-tools.so \
|
||||
-x ./OBS.app/Contents/PlugIns/image-source.so \
|
||||
-x ./OBS.app/Contents/PlugIns/linux-jack.so \
|
||||
-x ./OBS.app/Contents/PlugIns/mac-avcapture.so \
|
||||
-x ./OBS.app/Contents/PlugIns/mac-capture.so \
|
||||
-x ./OBS.app/Contents/PlugIns/mac-decklink.so \
|
||||
-x ./OBS.app/Contents/PlugIns/mac-syphon.so \
|
||||
-x ./OBS.app/Contents/PlugIns/mac-vth264.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-browser.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-browser-page \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-ffmpeg.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-filters.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-transitions.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-vst.so \
|
||||
-x ./OBS.app/Contents/PlugIns/rtmp-services.so \
|
||||
-x ./OBS.app/Contents/MacOS/obs \
|
||||
-x ./OBS.app/Contents/MacOS/obs-ffmpeg-mux \
|
||||
-x ./OBS.app/Contents/MacOS/obslua.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-x264.so \
|
||||
-x ./OBS.app/Contents/PlugIns/text-freetype2.so \
|
||||
-x ./OBS.app/Contents/PlugIns/obs-libfdk.so
|
||||
# -x ./OBS.app/Contents/MacOS/_obspython.so \
|
||||
# -x ./OBS.app/Contents/PlugIns/obs-outputs.so \
|
||||
|
||||
/usr/local/Cellar/qt/5.14.1/bin/macdeployqt ./OBS.app
|
||||
|
||||
mv ./OBS.app/Contents/MacOS/libobs-opengl.so ./OBS.app/Contents/Frameworks
|
||||
|
||||
rm -f -r ./OBS.app/Contents/Frameworks/QtNetwork.framework
|
||||
|
||||
# put qt network in here becasuse streamdeck uses it
|
||||
cp -R /usr/local/opt/qt/lib/QtNetwork.framework ./OBS.app/Contents/Frameworks
|
||||
chmod -R +w ./OBS.app/Contents/Frameworks/QtNetwork.framework
|
||||
rm -r ./OBS.app/Contents/Frameworks/QtNetwork.framework/Headers
|
||||
rm -r ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/Headers/
|
||||
chmod 644 ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/Resources/Info.plist
|
||||
install_name_tool -id @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
|
||||
install_name_tool -change /usr/local/Cellar/qt/5.14.1/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/Frameworks/QtNetwork.framework/Versions/5/QtNetwork
|
||||
|
||||
|
||||
# decklink ui qt
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/decklink-ouput-ui.so
|
||||
|
||||
# frontend tools qt
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/frontend-tools.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/frontend-tools.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/frontend-tools.so
|
||||
|
||||
# vst qt
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtGui.framework/Versions/5/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui ./OBS.app/Contents/PlugIns/obs-vst.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtCore.framework/Versions/5/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore ./OBS.app/Contents/PlugIns/obs-vst.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtWidgets.framework/Versions/5/QtWidgets @executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets ./OBS.app/Contents/PlugIns/obs-vst.so
|
||||
install_name_tool -change /usr/local/opt/qt/lib/QtMacExtras.framework/Versions/5/QtMacExtras @executable_path/../Frameworks/QtMacExtras.framework/Versions/5/QtMacExtras ./OBS.app/Contents/PlugIns/obs-vst.so
|
|
@ -1,94 +0,0 @@
|
|||
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)
|
|
@ -1 +0,0 @@
|
|||
#!/usr/bin/env bash
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"title": "OBS",
|
||||
"background": "../CI/install/osx/background.tiff",
|
||||
"format": "UDZO",
|
||||
"compression-level": 9,
|
||||
"window": { "position": { "x": 100, "y": 100 },
|
||||
"size": { "width": 540, "height": 380 } },
|
||||
"contents": [
|
||||
{ "x": 120, "y": 180, "type": "file",
|
||||
"path": "./OBS.app" },
|
||||
{ "x": 420, "y": 180, "type": "link", "path": "/Applications" }
|
||||
]
|
||||
}
|
Binary file not shown.
|
@ -1,161 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
# This script builds a tar file that contains a bunch of deps that OBS needs for
|
||||
# advanced functionality on OSX. Currently this tar file is pulled down off of s3
|
||||
# and used in the CI build process on travis.
|
||||
# Mostly this sets build flags to compile with older SDKS and make sure that
|
||||
# the libs are portable.
|
||||
|
||||
exists()
|
||||
{
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
if ! exists nasm; then
|
||||
echo "nasm not found. Try brew install nasm"
|
||||
exit
|
||||
fi
|
||||
|
||||
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
|
||||
mkdir $DEPS_DEST/lib
|
||||
|
||||
# OSX COMPAT
|
||||
export MACOSX_DEPLOYMENT_TARGET=10.11
|
||||
|
||||
# If you need an olders SDK and Xcode won't give it to you
|
||||
# https://github.com/phracker/MacOSX-SDKs
|
||||
|
||||
# libopus
|
||||
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/opus/opus-1.2.1.tar.gz
|
||||
tar -xf opus-1.2.1.tar.gz
|
||||
cd ./opus-1.2.1
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libogg
|
||||
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.3.tar.gz
|
||||
tar -xf libogg-1.3.3.tar.gz
|
||||
cd ./libogg-1.3.3
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libvorbis
|
||||
curl -L -O https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.tar.gz
|
||||
tar -xf libvorbis-1.3.6.tar.gz
|
||||
cd ./libvorbis-1.3.6
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --disable-shared --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# libvpx
|
||||
curl -L -O https://chromium.googlesource.com/webm/libvpx/+archive/v1.7.0.tar.gz
|
||||
mkdir -p ./libvpx-v1.7.0
|
||||
tar -xf v1.7.0.tar.gz -C $PWD/libvpx-v1.7.0
|
||||
cd ./libvpx-v1.7.0
|
||||
mkdir -p build
|
||||
cd ./build
|
||||
../configure --disable-shared --prefix="/tmp/obsdeps" --libdir="/tmp/obsdeps/lib"
|
||||
make -j 12
|
||||
make install
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
# x264
|
||||
git clone git://git.videolan.org/x264.git
|
||||
cd ./x264
|
||||
git checkout origin/stable
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --extra-ldflags="-mmacosx-version-min=10.11" --enable-static --prefix="/tmp/obsdeps"
|
||||
make -j 12
|
||||
make install
|
||||
../configure --extra-ldflags="-mmacosx-version-min=10.11" --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.11.tar.gz
|
||||
tar -xf jansson-2.11.tar.gz
|
||||
cd jansson-2.11
|
||||
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/n4.0.2.zip
|
||||
unzip ./n4.0.2.zip
|
||||
cd ./FFmpeg-n4.0.2
|
||||
mkdir build
|
||||
cd ./build
|
||||
../configure --pkg-config-flags="--static" --extra-ldflags="-mmacosx-version-min=10.11" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-outdev=sdl
|
||||
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/
|
||||
|
||||
#luajit
|
||||
curl -L -O https://luajit.org/download/LuaJIT-2.0.5.tar.gz
|
||||
tar -xf LuaJIT-2.0.5.tar.gz
|
||||
cd LuaJIT-2.0.5
|
||||
make PREFIX=/tmp/obsdeps
|
||||
make PREFIX=/tmp/obsdeps install
|
||||
find /tmp/obsdeps/lib -name libluajit\*.dylib -exec cp \{\} $DEPS_DEST/lib/ \;
|
||||
rsync -avh --include="*/" --include="*.h" --exclude="*" src/* $DEPS_DEST/include/
|
||||
make PREFIX=/tmp/obsdeps uninstall
|
||||
|
||||
cd $WORK_DIR
|
||||
|
||||
tar -czf osx-deps.tar.gz obsdeps
|
||||
|
||||
cp ./osx-deps.tar.gz $CURDIR
|
|
@ -1,69 +0,0 @@
|
|||
#/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 ..
|
|
@ -1,69 +0,0 @@
|
|||
#/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…
Reference in New Issue