me
/
guix
Archived
1
0
Fork 0

gnu: yt-dlp: Don't inherit from youtube-dl.

yt-dlp has diverged from youtube-dl sufficiently that package inheritance
hinders package maintenance.

* gnu/packages/video.scm (yt-dlp): Don't inherit from YOUTUBE-DL.
[build-system, synopsis, license]: New fields.
[arguments]: Adjust accordingly.
[inputs]: Add FFMPEG.

Change-Id: I14c4cfb6a75ba0421c62eac778072ab3e76c72a1
master
Leo Famulari 2024-06-18 22:11:51 -04:00
parent ddbbb78786
commit 66e9ce2bae
No known key found for this signature in database
GPG Key ID: 6AAC1963757F47FF
1 changed files with 49 additions and 46 deletions

View File

@ -3136,7 +3136,7 @@ YouTube.com and many more sites.")
(license license:public-domain)))
(define-public yt-dlp
(package/inherit youtube-dl
(package
(name "yt-dlp")
(version "2023.10.13")
(source
@ -3148,51 +3148,52 @@ YouTube.com and many more sites.")
(file-name (git-file-name name version))
(sha256
(base32 "1cy8cpqwq6yfsbrnln3qqp9lsjckn20m6w7b890ha7jahyir5m1n"))))
(build-system python-build-system)
(arguments
(substitute-keyword-arguments (package-arguments youtube-dl)
((#:tests? _) (not (%current-target-system)))
((#:phases phases)
#~(modify-phases #$phases
;; See the comment for the corresponding phase in youtube-dl.
(replace 'default-to-the-ffmpeg-input
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "yt_dlp/postprocessor/ffmpeg.py"
(("location = self.get_param(.*)$")
(string-append
"location = '"
(dirname (search-input-file inputs "bin/ffmpeg"))
"'\n")))))
(replace 'build-generated-files
(lambda* (#:key inputs #:allow-other-keys)
(if (assoc-ref inputs "pandoc")
(invoke "make"
"PYTHON=python"
"yt-dlp"
"yt-dlp.1"
"completions")
(invoke "make"
"PYTHON=python"
"yt-dlp"
"completions"))))
(replace 'fix-the-data-directories
(lambda* (#:key outputs #:allow-other-keys)
(let ((prefix (assoc-ref outputs "out")))
(substitute* "setup.py"
(("'etc/")
(string-append "'" prefix "/etc/"))
(("'share/")
(string-append "'" prefix "/share/"))))))
(delete 'install-completion)
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest" "-k" "not download"))))))))
(inputs (modify-inputs (package-inputs youtube-dl)
(append python-brotli
python-certifi
python-mutagen
python-pycryptodomex
python-websockets)))
`(#:tests? ,(not (%current-target-system))
#:phases
(modify-phases %standard-phases
;; See <https://issues.guix.gnu.org/43418#5>.
;; ffmpeg is big but required to request free formats from, e.g.,
;; YouTube so pull it in unconditionally. Continue respecting the
;; --ffmpeg-location argument.
(add-after 'unpack 'default-to-the-ffmpeg-input
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "yt_dlp/postprocessor/ffmpeg.py"
(("location = self.get_param(.*)$")
(string-append
"location = '"
(dirname (search-input-file inputs "bin/ffmpeg"))
"'\n")))))
(add-before 'build 'build-generated-files
(lambda* (#:key inputs #:allow-other-keys)
(if (assoc-ref inputs "pandoc")
(invoke "make"
"PYTHON=python"
"yt-dlp"
"yt-dlp.1"
"completions")
(invoke "make"
"PYTHON=python"
"yt-dlp"
"completions"))))
(add-before 'install 'fix-the-data-directories
(lambda* (#:key outputs #:allow-other-keys)
(let ((prefix (assoc-ref outputs "out")))
(substitute* "setup.py"
(("'etc/")
(string-append "'" prefix "/etc/"))
(("'share/")
(string-append "'" prefix "/share/"))))))
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "pytest" "-k" "not download")))))))
(inputs (list ffmpeg python-brotli
python-certifi
python-mutagen
python-pycryptodomex
python-websockets))
(native-inputs
(append
;; To generate the manpage.
@ -3200,13 +3201,15 @@ YouTube.com and many more sites.")
(list pandoc)
'())
(list python-pytest zip)))
(synopsis "Download videos from YouTube.com and other sites")
(description
"yt-dlp is a small command-line program to download videos from
YouTube.com and many more sites. It is a fork of youtube-dl with a
focus on adding new features while keeping up-to-date with the
original project.")
(properties '((release-monitoring-url . "https://pypi.org/project/yt-dlp/")))
(home-page "https://github.com/yt-dlp/yt-dlp")))
(home-page "https://github.com/yt-dlp/yt-dlp")
(license license:public-domain)))
(define-public you-get
(package