2016-09-13 05:52:54 -04:00
name : hugo
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
issues : https://github.com/gohugoio/hugo/issues
source-code : https://github.com/gohugoio/hugo.git
website : https://gohugo.io/
2016-09-13 05:52:54 -04:00
summary : Fast and Flexible Static Site Generator
description : |
Hugo is a static HTML and CSS website generator written in Go. It is
optimized for speed, easy use and configurability. Hugo takes a directory
with content and templates and renders them into a full HTML website.
2021-04-22 11:57:40 -04:00
license : "Apache-2.0"
base : core20
2020-09-12 01:56:29 -04:00
confinement : strict
2022-08-30 01:14:22 -04:00
adopt-info : hugo
2016-09-13 05:52:54 -04:00
2021-10-11 17:39:02 -04:00
package-repositories :
- type : apt
components : [ main]
suites : [ focal]
key-id : 9FD3B784BC1C6FC31A8A0A1C1655A0AB68576280
url : https://deb.nodesource.com/node_16.x
2022-04-01 04:52:39 -04:00
plugs :
2022-06-24 02:59:37 -04:00
etc-gitconfig :
2022-04-01 04:52:39 -04:00
interface : system-files
read :
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
- /etc/gitconfig
2022-06-24 02:59:37 -04:00
gitconfig :
2022-04-01 04:52:39 -04:00
interface : personal-files
read :
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
- $HOME/.gitconfig
- $HOME/.config/git/config
environment :
HOME : $SNAP_REAL_HOME
GIT_EXEC_PATH : $SNAP/usr/lib/git-core
GOCACHE : $SNAP_USER_DATA/.cache/go-build
npm_config_cache : $SNAP_USER_DATA/.npm
npm_config_init_module : $SNAP_USER_DATA/.npm-init.js
npm_config_userconfig : $SNAP_USER_DATA/.npmrc
pandoc_datadir : $SNAP/usr/share/pandoc
PYTHONHOME : /usr:$SNAP/usr
RUBYLIB : $SNAP/usr/lib/ruby/vendor_ruby/2.7.0:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/ruby/vendor_ruby/2.7.0:$SNAP/usr/lib/ruby/vendor_ruby:$SNAP/usr/lib/ruby/2.7.0:$SNAP/usr/lib/$SNAPCRAFT_ARCH_TRIPLET/ruby/2.7.0
2022-06-24 02:59:37 -04:00
2016-09-13 05:52:54 -04:00
apps :
hugo :
command : bin/hugo
2018-04-05 09:15:51 -04:00
completer : hugo-completion
2021-04-22 11:57:40 -04:00
plugs :
- home
- network-bind
- removable-media
2022-06-27 11:27:30 -04:00
- etc-gitconfig
- gitconfig
2016-09-13 05:52:54 -04:00
parts :
2018-09-25 09:05:55 -04:00
git :
plugin : nil
stage-packages :
- git
prime :
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
- usr/bin/git
- usr/lib
go :
plugin : nil
stage-snaps :
- go/1.19/stable
prime :
- bin/go
- pkg/tool
- -pkg/tool/*
2018-09-25 09:05:55 -04:00
2016-09-13 05:52:54 -04:00
hugo :
2018-09-30 01:29:57 -04:00
plugin : nil
2016-09-13 05:52:54 -04:00
source : .
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
after :
- git
- go
2022-08-30 01:14:22 -04:00
override-pull : |
snapcraftctl pull
snapcraftctl set-version "$(git describe --tags --always --match 'v[0-9]*' | sed 's/^v//; s/-/+git/; s/-g/./')"
2022-08-30 05:52:16 -04:00
if grep -q 'Suffix:\s*""' common/hugo/version_current.go; then
snapcraftctl set-grade "stable"
else
snapcraftctl set-grade "devel"
fi
2018-07-09 04:41:10 -04:00
override-build : |
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
echo "\nStarting override-build:"
2018-09-25 09:05:55 -04:00
set -ex
2018-09-30 01:29:57 -04:00
export GOPATH=$(realpath ../go)
2018-09-30 16:22:01 -04:00
export PATH=$GOPATH/bin:$PATH
2018-09-25 09:05:55 -04:00
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
echo " * Patch securityConfig.go to allow"
echo " - GIT_EXEC_PATH and LD_LIBRARY_PATH to be passed to git"
echo " - npm_config_{cache,init_module,userconfig} to be passed to npx"
echo " - pandoc_datadir to be passed to pandoc"
echo " - PYTHONHOME and SNAP to be passed to rst2html"
echo " - RUBYLIB to be passed to asciidoctor"
sed -i '/OsEnv : NewWhitelist/s/)\$/|GIT_EXEC_PATH|LD_LIBRARY_PATH|npm_config_(cache|init_module|userconfig)|pandoc_datadir|PYTHONHOME|RUBYLIB|SNAP&/' config/security/securityConfig.go
git diff config/security/securityConfig.go
2021-04-22 11:57:40 -04:00
echo " * SNAPCRAFT_IMAGE_INFO=${SNAPCRAFT_IMAGE_INFO=}"
2018-10-11 10:56:53 -04:00
# Example: SNAPCRAFT_IMAGE_INFO='{"build_url": "https://launchpad.net/~gohugoio/+snap/hugo-extended-dev/+build/344022"}'
2021-04-22 11:57:40 -04:00
export HUGO_BUILD_TAGS=""
2018-10-11 10:56:53 -04:00
if echo $SNAPCRAFT_IMAGE_INFO | grep -q '/+snap/hugo-extended'; then
2021-04-22 11:57:40 -04:00
HUGO_BUILD_TAGS="extended"
2018-10-11 10:56:53 -04:00
fi
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
2018-10-11 10:56:53 -04:00
echo " * Building hugo (HUGO_BUILD_TAGS=\"$HUGO_BUILD_TAGS\")..."
2022-08-30 05:52:16 -04:00
go build -v -ldflags "-X github.com/gohugoio/hugo/common/hugo.vendorInfo=snap:$(git describe --tags --always --match 'v[0-9]*' | sed 's/^v//; s/-/+git/; s/-g/./')" -tags "$HUGO_BUILD_TAGS"
2018-04-05 09:14:51 -04:00
./hugo version
2018-07-09 04:41:10 -04:00
ldd hugo || :
2018-09-25 09:05:55 -04:00
2018-07-09 04:41:10 -04:00
echo " * Building shell completion..."
2022-01-30 18:33:15 -05:00
./hugo completion bash > hugo-completion
2018-09-25 09:05:55 -04:00
2018-07-09 04:41:10 -04:00
echo " * Installing to ${SNAPCRAFT_PART_INSTALL}..."
2018-04-05 09:14:51 -04:00
install -d $SNAPCRAFT_PART_INSTALL/bin
2018-07-09 04:41:10 -04:00
cp -av hugo $SNAPCRAFT_PART_INSTALL/bin/
mv -v hugo-completion $SNAPCRAFT_PART_INSTALL/
2018-09-25 09:05:55 -04:00
2018-07-09 04:41:10 -04:00
echo " * Stripping binary..."
ls -l $SNAPCRAFT_PART_INSTALL/bin/hugo
2018-07-09 03:45:18 -04:00
strip --remove-section=.comment --remove-section=.note $SNAPCRAFT_PART_INSTALL/bin/hugo
2018-07-09 04:41:10 -04:00
ls -l $SNAPCRAFT_PART_INSTALL/bin/hugo
2018-08-24 11:35:07 -04:00
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
asciidoctor :
plugin : nil
stage-packages :
- asciidoctor
override-build : |
set -ex
snapcraftctl build
sed -i '1s|#!/usr/bin/ruby|#!/usr/bin/env ruby|' $SNAPCRAFT_PART_INSTALL/usr/bin/asciidoctor
dart-sass-embedded :
plugin : nil
build-packages :
- curl
override-build : |
set -ex
snapcraftctl build
case "$SNAPCRAFT_TARGET_ARCH" in
amd64) arch=x64 ;;
arm64) arch=arm64 ;;
i386) arch=ia32 ;;
*) arch="" ;;
esac
if [[ -n $arch ]]; then
url=$(curl -s https://api.github.com/repos/sass/dart-sass-embedded/releases/latest | awk -F\" "/browser_download_url.*-linux-${arch}.tar.gz/{print \$(NF-1)}")
curl -LO --retry-connrefused --retry 10 "$url"
tar xf sass_embedded-*-linux-$arch.tar.gz sass_embedded/dart-sass-embedded
install -d $SNAPCRAFT_PART_INSTALL/bin
cp -av sass_embedded/dart-sass-embedded $SNAPCRAFT_PART_INSTALL/bin/
fi
2021-04-26 12:17:44 -04:00
node :
plugin : nil
2021-04-27 11:00:04 -04:00
stage-packages :
- nodejs
2021-04-26 12:17:44 -04:00
2021-04-22 11:57:40 -04:00
pandoc :
plugin : nil
stage-packages :
- pandoc
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
rst2html :
plugin : nil
stage-packages :
- python3-docutils
override-build : |
set -ex
snapcraftctl build
sed -i "s|'/usr/share/docutils/'|os.path.expandvars('\$SNAP/usr/share/docutils/')|" $SNAPCRAFT_PART_INSTALL/usr/lib/python3/dist-packages/docutils/__init__.py
2021-04-22 11:57:40 -04:00
organize :
snap: Make external dependencies actually work
Git:
- Set GIT_EXEC_PATH and include usr/lib/git-core so that git can find the
git-remote-https helper (needed by e.g. "go mod download").
Go:
- Put Go in its own snap part, and use stage-snaps instead of build-snaps
so that it is included in the final snap.
- Set GOCACHE to a writable directory. (In a previous commit,
HOME is set to $SNAP_REAL_HOME which is unwritable.)
Hugo:
- Patch config/security/securityConfig.go "[security.exec] osEnv" whitelist
(during snap build) so that external dependencies can use the required
environment variables to run properly from within the snap.
Asciidoctor:
- Replace shebang line in asciidoctor so it can find the ruby executable.
- Set RUBYLIB so that Ruby can find its libraries.
Caveat/TODO: The Ruby version is hardcoded in our custom RUBYLIB.
Embedded Dart Sass:
- Download from GitHub and install it, for amd64 and arm64 only.
Node.js:
- Remove my incomplete include list so that npx is actually installed.
- Set npm_config_{cache,init_module,userconfig} to writable locations.
Pandoc:
- Set pandoc_datadir so that Pandoc can find its data files.
rst2html:
- Install python3-docutils package for rst2html, rst2html5, etc.
- Set PYTHONHOME so that Python can find its libraries.
Note that asciidoctor, pandoc and rst2html are not in Hugo’s default
"[security.exec] allow" whitelist, and the snap package does not change
that default, so they still needed to be whitelisted manually in
config.toml if necessary by the end user.
Special thanks to Joe Mooring (@jmooring) for meticulously diagnosing
the issue and providing a comprehensive test repository at
https://github.com/jmooring/hugo-snap-test without which I would not
have been able to understand and resolve the issue.
Fixes #9078
2022-08-13 13:29:01 -04:00
usr/share/docutils/scripts/python3 : usr/bin