From f388a2c15495b01541701aa227db0055f66adc77 Mon Sep 17 00:00:00 2001 From: Bloyburt Date: Thu, 25 Aug 2022 22:45:40 +0100 Subject: [PATCH] multimedia/olive: Added (Olive Video Editor) Signed-off-by: Dave Woodfall Signed-off-by: Willy Sudiarto Raharjo --- multimedia/olive/README | 19 +++ multimedia/olive/doinst.sh | 14 ++ multimedia/olive/olive-0.1.2-FlowLayout.patch | 12 ++ .../olive/olive-0.1.2-QFontMetrics.patch | 121 ++++++++++++++++++ .../olive/olive-0.1.2-QPainterPath.patch | 44 +++++++ .../olive/olive-0.1.2-QWheelEvent.patch | 21 +++ .../olive/olive-0.1.2-appdata-desktop.patch | 24 ++++ multimedia/olive/olive-0.1.2-cacher.patch | 24 ++++ .../olive/olive-0.1.2-clickablelabel.patch | 14 ++ .../olive/olive-0.1.2-proxygenerator.patch | 18 +++ multimedia/olive/olive.SlackBuild | 109 ++++++++++++++++ multimedia/olive/olive.info | 10 ++ multimedia/olive/slack-desc | 19 +++ 13 files changed, 449 insertions(+) create mode 100644 multimedia/olive/README create mode 100644 multimedia/olive/doinst.sh create mode 100644 multimedia/olive/olive-0.1.2-FlowLayout.patch create mode 100644 multimedia/olive/olive-0.1.2-QFontMetrics.patch create mode 100644 multimedia/olive/olive-0.1.2-QPainterPath.patch create mode 100644 multimedia/olive/olive-0.1.2-QWheelEvent.patch create mode 100644 multimedia/olive/olive-0.1.2-appdata-desktop.patch create mode 100644 multimedia/olive/olive-0.1.2-cacher.patch create mode 100644 multimedia/olive/olive-0.1.2-clickablelabel.patch create mode 100644 multimedia/olive/olive-0.1.2-proxygenerator.patch create mode 100644 multimedia/olive/olive.SlackBuild create mode 100644 multimedia/olive/olive.info create mode 100644 multimedia/olive/slack-desc diff --git a/multimedia/olive/README b/multimedia/olive/README new file mode 100644 index 0000000000..ef98d61e26 --- /dev/null +++ b/multimedia/olive/README @@ -0,0 +1,19 @@ +Olive is a cross-platform video editing application licensed under +the GNU GPL version 3. The plan of the development team is to combine +complete colour managment, a fast and high-fidelity float-based +render pipeline, node-based compositing and audio-mixing, and a +highly efficient automated disk cache all together in one program. + +It should be noted that Olive is still in the early alpha stages of +development, and thus should not be used for serious projects; if you +do choose to use Olive for any serious projects, frequent backups of +said projects are highly recommended. + +This SlackBuild packages an older version of Olive (0.1.2), which is +the latest stable version as of this writing. + +The patches in this SlackBuild were originally written by Tércio +Martins for Arch's Olive AUR, and have been graciously re-used here +with his permission. + +Homepage: https://olivevideoeditor.org/ diff --git a/multimedia/olive/doinst.sh b/multimedia/olive/doinst.sh new file mode 100644 index 0000000000..262eb5a9e5 --- /dev/null +++ b/multimedia/olive/doinst.sh @@ -0,0 +1,14 @@ +if [ -x /usr/bin/update-desktop-database ]; then + /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1 +fi + +if [ -x /usr/bin/update-mime-database ]; then + /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1 +fi + +# If other icon themes are installed, then add to/modify this as needed +if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then + if [ -x /usr/bin/gtk-update-icon-cache ]; then + /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1 + fi +fi diff --git a/multimedia/olive/olive-0.1.2-FlowLayout.patch b/multimedia/olive/olive-0.1.2-FlowLayout.patch new file mode 100644 index 0000000000..cde40310e9 --- /dev/null +++ b/multimedia/olive/olive-0.1.2-FlowLayout.patch @@ -0,0 +1,12 @@ +diff --unified --recursive --text olive-0.1.2-orig/ui/flowlayout.cpp olive-0.1.2-new/ui/flowlayout.cpp +--- olive-0.1.2-orig/ui/flowlayout.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/flowlayout.cpp 2020-06-23 18:29:57.338203268 -0300 +@@ -114,7 +114,7 @@ + + Qt::Orientations FlowLayout::expandingDirections() const + { +- return 0; ++ return { }; + } + + bool FlowLayout::hasHeightForWidth() const diff --git a/multimedia/olive/olive-0.1.2-QFontMetrics.patch b/multimedia/olive/olive-0.1.2-QFontMetrics.patch new file mode 100644 index 0000000000..3731aad17b --- /dev/null +++ b/multimedia/olive/olive-0.1.2-QFontMetrics.patch @@ -0,0 +1,121 @@ +diff --unified --recursive --text olive-0.1.2-orig/effects/internal/texteffect.cpp olive-0.1.2-new/effects/internal/texteffect.cpp +--- olive-0.1.2-orig/effects/internal/texteffect.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/effects/internal/texteffect.cpp 2020-06-23 17:41:00.714422192 -0300 +@@ -183,11 +183,11 @@ + if (word_wrap_field->GetBoolAt(timecode)) { + for (int i=0;i width) { ++ if (fm.horizontalAdvance(s) > width) { + int last_space_index = 0; + for (int j=0;j width) { ++ if (fm.horizontalAdvance(s.left(j)) > width) { + break; + } else { + last_space_index = j; +@@ -211,11 +211,11 @@ + + switch (halign_field->GetValueAt(timecode).toInt()) { + case Qt::AlignLeft: text_x = 0; break; +- case Qt::AlignRight: text_x = width - fm.width(lines.at(i)); break; ++ case Qt::AlignRight: text_x = width - fm.horizontalAdvance(lines.at(i)); break; + case Qt::AlignJustify: + // add spaces until the string is too big + text_x = 0; +- while (fm.width(lines.at(i)) < width) { ++ while (fm.horizontalAdvance(lines.at(i)) < width) { + bool space = false; + QString spaced(lines.at(i)); + for (int i=0;i width || !space) { ++ if (fm.horizontalAdvance(spaced) > width || !space) { + break; + } else { + lines[i] = spaced; +@@ -237,7 +237,7 @@ + break; + case Qt::AlignHCenter: + default: +- text_x = (width/2) - (fm.width(lines.at(i))/2); ++ text_x = (width/2) - (fm.horizontalAdvance(lines.at(i))/2); + break; + } + +diff --unified --recursive --text olive-0.1.2-orig/effects/internal/timecodeeffect.cpp olive-0.1.2-new/effects/internal/timecodeeffect.cpp +--- olive-0.1.2-orig/effects/internal/timecodeeffect.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/effects/internal/timecodeeffect.cpp 2020-06-23 17:41:51.815020590 -0300 +@@ -117,7 +117,7 @@ + + int text_x, text_y, rect_y, offset_x, offset_y; + int text_height = fm.height(); +- int text_width = fm.width(display_timecode); ++ int text_width = fm.horizontalAdvance(display_timecode); + QColor background_color = color_bg_val->GetColorAt(timecode); + int alpha_val = qCeil(bg_alpha->GetDoubleAt(timecode)*2.55); + background_color.setAlpha(alpha_val); +diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp +--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 17:38:31.572539882 -0300 +@@ -175,7 +175,7 @@ + void GraphView::draw_line_text(QPainter &p, bool vert, int line_no, int line_pos, int next_line_pos) { + // draws last line's text + QString str = QString::number(line_no*kGraphSize); +- int text_sz = vert ? fontMetrics().height() : fontMetrics().width(str); ++ int text_sz = vert ? fontMetrics().height() : fontMetrics().horizontalAdvance(str); + if (text_sz < (next_line_pos - line_pos)) { + QRect text_rect = vert ? QRect(0, line_pos-50, 50, 50) : QRect(line_pos, height()-50, 50, 50); + p.drawText(text_rect, Qt::AlignBottom | Qt::AlignLeft, str); +diff --unified --recursive --text olive-0.1.2-orig/ui/sourceiconview.cpp olive-0.1.2-new/ui/sourceiconview.cpp +--- olive-0.1.2-orig/ui/sourceiconview.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/sourceiconview.cpp 2020-06-23 17:42:48.155657141 -0300 +@@ -140,7 +140,7 @@ + painter->setPen(text_fgcolor); + + QString duration_str = index.data(Qt::UserRole).toString(); +- int timecode_width = fm.width(duration_str); ++ int timecode_width = fm.horizontalAdvance(duration_str); + int max_name_width = option.rect.width(); + + if (timecode_width < option.rect.width() / 2) { +diff --unified --recursive --text olive-0.1.2-orig/ui/timelineheader.cpp olive-0.1.2-new/ui/timelineheader.cpp +--- olive-0.1.2-orig/ui/timelineheader.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/timelineheader.cpp 2020-06-23 17:43:45.496282517 -0300 +@@ -390,7 +390,7 @@ + bool draw_text = false; + if (text_enabled && lineX-textWidth > lastTextBoundary) { + timecode = frame_to_timecode(frame + in_visible, olive::CurrentConfig.timecode_view, viewer->seq->frame_rate); +- fullTextWidth = fm.width(timecode); ++ fullTextWidth = fm.horizontalAdvance(timecode); + textWidth = fullTextWidth>>1; + + text_x = lineX; +diff --unified --recursive --text olive-0.1.2-orig/ui/timelinewidget.cpp olive-0.1.2-new/ui/timelinewidget.cpp +--- olive-0.1.2-orig/ui/timelinewidget.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/timelinewidget.cpp 2020-06-23 17:39:05.582988929 -0300 +@@ -3162,7 +3162,7 @@ + } + if (clip->linked.size() > 0) { + int underline_y = olive::timeline::kClipTextPadding + p.fontMetrics().height() + clip_rect.top(); +- int underline_width = qMin(text_rect.width() - 1, p.fontMetrics().width(clip->name())); ++ int underline_width = qMin(text_rect.width() - 1, p.fontMetrics().horizontalAdvance(clip->name())); + p.drawLine(text_rect.x(), underline_y, text_rect.x() + underline_width, underline_y); + } + QString name = clip->name(); +diff --unified --recursive --text olive-0.1.2-orig/ui/viewerwindow.cpp olive-0.1.2-new/ui/viewerwindow.cpp +--- olive-0.1.2-orig/ui/viewerwindow.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/viewerwindow.cpp 2020-06-23 17:44:21.156661091 -0300 +@@ -172,7 +172,7 @@ + p.setPen(Qt::white); + p.setBrush(QColor(0, 0, 0, 128)); + +- int text_width = fm.width(fs_str); ++ int text_width = fm.horizontalAdvance(fs_str); + int text_x = (width()/2)-(text_width/2); + int text_y = fm.height()+fm.ascent(); + diff --git a/multimedia/olive/olive-0.1.2-QPainterPath.patch b/multimedia/olive/olive-0.1.2-QPainterPath.patch new file mode 100644 index 0000000000..07cb22eae3 --- /dev/null +++ b/multimedia/olive/olive-0.1.2-QPainterPath.patch @@ -0,0 +1,44 @@ +diff --unified --recursive --text olive-0.1.2-orig/effects/internal/texteffect.cpp olive-0.1.2-new/effects/internal/texteffect.cpp +--- olive-0.1.2-orig/effects/internal/texteffect.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/effects/internal/texteffect.cpp 2020-06-23 03:57:45.377783457 -0300 +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --unified --recursive --text olive-0.1.2-orig/effects/internal/timecodeeffect.cpp olive-0.1.2-new/effects/internal/timecodeeffect.cpp +--- olive-0.1.2-orig/effects/internal/timecodeeffect.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/effects/internal/timecodeeffect.cpp 2020-06-23 05:44:58.589605133 -0300 +@@ -25,6 +25,7 @@ + #include + #include + #include ++#include + #include + #include + #include +diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp +--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 05:48:06.800458024 -0300 +@@ -21,6 +21,7 @@ + #include "graphview.h" + + #include ++#include + #include + #include + #include +diff --unified --recursive --text olive-0.1.2-orig/ui/timelineheader.cpp olive-0.1.2-new/ui/timelineheader.cpp +--- olive-0.1.2-orig/ui/timelineheader.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/timelineheader.cpp 2020-06-23 05:48:36.440594616 -0300 +@@ -21,6 +21,7 @@ + #include "timelineheader.h" + + #include ++#include + #include + #include + #include diff --git a/multimedia/olive/olive-0.1.2-QWheelEvent.patch b/multimedia/olive/olive-0.1.2-QWheelEvent.patch new file mode 100644 index 0000000000..5270f51bb2 --- /dev/null +++ b/multimedia/olive/olive-0.1.2-QWheelEvent.patch @@ -0,0 +1,21 @@ +diff --unified --recursive --text olive-0.1.2-orig/ui/graphview.cpp olive-0.1.2-new/ui/graphview.cpp +--- olive-0.1.2-orig/ui/graphview.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/graphview.cpp 2020-06-23 17:55:37.852888364 -0300 +@@ -795,7 +795,7 @@ + new_y_zoom = y_zoom + (zoom_diff * (delta_v / 120.0)); + + // Center zoom around the mouse cursor vertically +- int true_mouse_y = height()-event->pos().y(); ++ int true_mouse_y = height()-event->position().y(); + set_scroll_y(qRound((double(y_scroll + true_mouse_y) / y_zoom) * new_y_zoom) - true_mouse_y); + + redraw = true; +@@ -807,7 +807,7 @@ + new_x_zoom = x_zoom + (zoom_diff * (delta_h / 120.0)); + + // Center zoom around the mouse cursor horizontally +- set_scroll_x(qRound((double(x_scroll + event->pos().x()) / x_zoom) * new_x_zoom) - event->pos().x()); ++ set_scroll_x(qRound((double(x_scroll + event->position().x()) / x_zoom) * new_x_zoom) - event->position().x()); + + redraw = true; + } diff --git a/multimedia/olive/olive-0.1.2-appdata-desktop.patch b/multimedia/olive/olive-0.1.2-appdata-desktop.patch new file mode 100644 index 0000000000..b2b4e46613 --- /dev/null +++ b/multimedia/olive/olive-0.1.2-appdata-desktop.patch @@ -0,0 +1,24 @@ +diff --unified --recursive --text olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.appdata.xml olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.appdata.xml +--- olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.appdata.xml 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.appdata.xml 2020-06-23 22:02:58.793224798 -0300 +@@ -31,7 +31,6 @@ + + + +- +- ++ + + +diff --unified --recursive --text olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.desktop olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.desktop +--- olive-0.1.2-orig/packaging/linux/org.olivevideoeditor.Olive.desktop 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/packaging/linux/org.olivevideoeditor.Olive.desktop 2020-06-23 22:03:16.533367553 -0300 +@@ -3,7 +3,7 @@ + Comment=Professional open-source non-linear video editor + Comment[it]=Programma di montaggio video professionale open-source + Comment[id]=Aplikasi edit video yang non-linier, profesional serta sumbernya terbuka. +-Exec=olive-editor ++Exec=olive-editor %f + Icon=org.olivevideoeditor.Olive + Terminal=false + Type=Application diff --git a/multimedia/olive/olive-0.1.2-cacher.patch b/multimedia/olive/olive-0.1.2-cacher.patch new file mode 100644 index 0000000000..e93ed3e52b --- /dev/null +++ b/multimedia/olive/olive-0.1.2-cacher.patch @@ -0,0 +1,24 @@ +diff --unified --recursive --text olive-0.1.2-orig/rendering/cacher.cpp olive-0.1.2-new/rendering/cacher.cpp +--- olive-0.1.2-orig/rendering/cacher.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/rendering/cacher.cpp 2020-06-23 16:08:47.307076532 -0300 +@@ -254,7 +254,7 @@ + dout << "starting rev_frame"; + #endif + rev_frame->nb_samples = 0; +- rev_frame->pts = frame_->pkt_pts; ++ rev_frame->pts = frame_->pts; + } + int offset = rev_frame->nb_samples * av_get_bytes_per_sample(static_cast(rev_frame->format)) * rev_frame->channels; + #ifdef AUDIOWARNINGS +@@ -277,9 +277,9 @@ + /* + #ifdef AUDIOWARNINGS + dout << "time for the end of rev cache" << rev_frame->nb_samples << clip->rev_target << frame_->pts << frame_->pkt_duration << frame_->nb_samples; +- dout << "diff:" << (frame_->pkt_pts + frame_->pkt_duration) - clip->rev_target; ++ dout << "diff:" << (frame_->pts + frame_->pkt_duration) - clip->rev_target; + #endif +- int cutoff = qRound64((((frame_->pkt_pts + frame_->pkt_duration) - reverse_target) * timebase) * audio_output->format().sampleRate()); ++ int cutoff = qRound64((((frame_->pts + frame_->pkt_duration) - reverse_target) * timebase) * audio_output->format().sampleRate()); + if (cutoff > 0) { + #ifdef AUDIOWARNINGS + dout << "cut off" << cutoff << "samples (rate:" << audio_output->format().sampleRate() << ")"; diff --git a/multimedia/olive/olive-0.1.2-clickablelabel.patch b/multimedia/olive/olive-0.1.2-clickablelabel.patch new file mode 100644 index 0000000000..f0e8d93f9f --- /dev/null +++ b/multimedia/olive/olive-0.1.2-clickablelabel.patch @@ -0,0 +1,14 @@ +diff --unified --recursive --text olive-0.1.2-orig/ui/clickablelabel.h olive-0.1.2-new/ui/clickablelabel.h +--- olive-0.1.2-orig/ui/clickablelabel.h 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/ui/clickablelabel.h 2020-06-23 14:12:08.786765041 -0300 +@@ -31,8 +31,8 @@ + class ClickableLabel : public QLabel { + Q_OBJECT + public: +- ClickableLabel(QWidget * parent = 0, Qt::WindowFlags f = 0); +- ClickableLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = 0); ++ ClickableLabel(QWidget * parent = 0, Qt::WindowFlags f = Qt::Widget); ++ ClickableLabel(const QString & text, QWidget * parent = 0, Qt::WindowFlags f = Qt::Widget); + void mousePressEvent(QMouseEvent *ev); + signals: + void clicked(); diff --git a/multimedia/olive/olive-0.1.2-proxygenerator.patch b/multimedia/olive/olive-0.1.2-proxygenerator.patch new file mode 100644 index 0000000000..1fab14f604 --- /dev/null +++ b/multimedia/olive/olive-0.1.2-proxygenerator.patch @@ -0,0 +1,18 @@ +diff --unified --recursive --text olive-0.1.2-orig/project/proxygenerator.cpp olive-0.1.2-new/project/proxygenerator.cpp +--- olive-0.1.2-orig/project/proxygenerator.cpp 2019-11-11 03:05:02.000000000 -0300 ++++ olive-0.1.2-new/project/proxygenerator.cpp 2020-06-23 21:07:29.808353198 -0300 +@@ -167,7 +167,13 @@ + } + + // write video header +- avformat_write_header(output_fmt_ctx, nullptr); ++ int error_code; ++ error_code = avformat_write_header(output_fmt_ctx, nullptr); ++ if (error_code < 0) { ++ qWarning() << "Failed to write video header"; ++ cancelled = true; ++ skip = true; ++ } + + // packet that av_read_frame will dump file packets into + AVPacket packet; diff --git a/multimedia/olive/olive.SlackBuild b/multimedia/olive/olive.SlackBuild new file mode 100644 index 0000000000..f18c92a336 --- /dev/null +++ b/multimedia/olive/olive.SlackBuild @@ -0,0 +1,109 @@ +#!/bin/bash + +# Slackware build script for olive + +# Copyright 2022 Bloyburt +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +cd $(dirname $0) ; CWD=$(pwd) + +PRGNAM=olive +VERSION=${VERSION:-0.1.2} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} +PKGTYPE=${PKGTYPE:-tgz} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +# If the variable PRINT_PACKAGE_NAME is set, then this script will report what +# the name of the created package would be, and then exit. This information +# could be useful to other scripts. +if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then + echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE" + exit 0 +fi + +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Apply the various patches +for i in $CWD/*.patch; do patch -p1 < $i; done + +mkdir -p build +cd build + cmake \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_BUILD_TYPE=Release .. + make + make install/strip DESTDIR=$PKG +cd .. + +rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la + +find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a *.md $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +cat $CWD/doinst.sh > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE diff --git a/multimedia/olive/olive.info b/multimedia/olive/olive.info new file mode 100644 index 0000000000..111a4eb8c5 --- /dev/null +++ b/multimedia/olive/olive.info @@ -0,0 +1,10 @@ +PRGNAM="olive" +VERSION="0.1.2" +HOMEPAGE="https://olivevideoeditor.org/" +DOWNLOAD="https://github.com/olive-editor/olive/archive/0.1.2/olive-0.1.2.tar.gz" +MD5SUM="69f391ff44060ae08c7a462d71504515" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="openimageio opencolorio graphviz" +MAINTAINER="Bloyburt" +EMAIL="alexpen@startmail.com" diff --git a/multimedia/olive/slack-desc b/multimedia/olive/slack-desc new file mode 100644 index 0000000000..11c6938a5a --- /dev/null +++ b/multimedia/olive/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +olive: olive (Olive Video Editor) +olive: +olive: Olive is a cross-platform video editing application licensed under +olive: the GNU GPL version 3. The plan of the development team is to combine +olive: complete colour managment, a fast and high-fidelity float-based +olive: render pipeline, node-based compositing and audio-mixing, and a +olive: highly efficient automated disk cache all together in one program. +olive: +olive: Homepage: https://olivevideoeditor.org/ +olive: +olive: