You are not logged in.
Hi,
to keep it short: i have no interest in becoming a maintainer, or be deep into how AUR works.
However: I had an itch: Seamonkey
This package is already not maintained for a while.
To scratch that itch, I build myself the latest version on Arch.
Is anybody interested in the PKGBUILD file for him/herself or maintaining it in the repo's?
cheers.
Hendrik-Jan
Offline
If you are going to continue using Seamonkey and updating the PKGBUILD for your own use as / whenever needed then it costs you nothing to submit it to the AUR (maybe a few minutes). I can't understand why you'd be hesitant to do so.
EDIT: nevermind, see below. I didn't realize this existed in the repos.
Last edited by Trilby (2020-03-08 22:56:12)
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
If you are going to continue using Seamonkey and updating the PKGBUILD for your own use as / whenever needed then it costs you nothing to submit it to the AUR (maybe a few minutes). I can't understand why you'd be hesitant to do so.
The submitted PKGBUILDs must not build applications already in any of the official binary repositories under any circumstances. Check the official package database for the package. If any version of it exists, do not submit the package. If the official package is out-of-date, flag it as such. If the official package is broken or is lacking a feature, then please file a bug report.
Offline
Yeah. As strange as it sounds. According to Arch's CoC, if a package is out of date, you are encouraged to build yourself an up-to-date version of it using asp. But you are forbidden to share that update with other users via AUR.
Last edited by schard (2020-03-09 08:10:16)
Inofficial first vice president of the Rust Evangelism Strike Force
Offline
Hi,
the package has been out of date for quite some time already.
And also the last 2 builds came from its maintainer, but in both instances I had sent him my PKGBUILD file.
Since September 2019 (I also sent a PKGBUILD then), there was no more response and no more package.
Hence my request in this forum.
I know Seamonkey is not the most popular package ever, but I understood it still has some people using it. And to let everybody invent their own wheel also seemed somewhat lame.
Hendrik-Jan
Offline
Yeah. As strange as it sounds. According to Arch's CoC, if a package is out of date, you are encouraged to build yourself an up-to-date version of it using asp. But you are forbidden to share that update with other users via AUR.
Why is this strange? If users want to install "foo", shouldn't pacman -S foo do precisely this? What would you name a package that is "foo, but updated in a timely fashion"?
Since the AUR does not offer packages, merely PKGBUILDs, what is the shareability advantage of publishing an AUR package that merely bumps the pkgver, something anyone can do directly from asp?
@hjheins
What changes to the currently packaged version are there? Is it a simple version bump?
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
... what is the shareability advantage of publishing an AUR package that merely bumps the pkgver, something anyone can do directly from asp?
I would certainly hope there was a lot more to it than this. I'm baffled by people who give package maintainers a hard time when a package is out of date for days or weeks, but if all it took was a bump of the version number to have this up and running there'd not be much excuse for it to sit out of date in the repos for 6 months.
If substantial work is needed to get the updated version ready, then sitting there for that long would be more defensible, but then too there'd be more value in sharing the new PKGBUILD - and if it really is up to snuff, the maintainer should be able to update the package in [community].
"UNIX is simple and coherent" - Dennis Ritchie; "GNU's Not Unix" - Richard Stallman
Offline
Yup -- hence my curiosity re: what changes are needed.
FWIW, the seamonkey maintainer is not our most active maintainer (life happens, and stuff). It's regrettable to have a package out of date for so long, but as a whole we try to avoid such situations. And, in the right here and now, I could offer to sponsor a non-maintainer update (at least into community-testing) if someone tells me what is needed. Hence, there is a very real reason to answer my question.
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
What changes to the currently packaged version are there? Is it a simple version bump?
Hi eschwartz,
unfortunately it is not just a version bump.
There are a couple of new patches and a forced dependency on Rust.
Can I post the PKGBUILD somewhere?
As mentioned before: I did contact the Maintainer, and not just for this last iteration. I also worked with him before. I do get that life can actually can make it difficult/impossible to work on things like packages. I am definitely also not banging anyone for this, but simply asking how I can get this new build to other people out there.
Hendrik-Jan
Last edited by hjheins (2020-03-10 10:11:32)
Offline
schard wrote:Yeah. As strange as it sounds. According to Arch's CoC, if a package is out of date, you are encouraged to build yourself an up-to-date version of it using asp. But you are forbidden to share that update with other users via AUR.
Why is this strange? If users want to install "foo", shouldn't pacman -S foo do precisely this? What would you name a package that is "foo, but updated in a timely fashion"?
I'd just modify the PKGBUILD and keep the original name and do a pacman -U <pkg>.
If it is, as @Trilby suggested just a version bump, this should be done in a few minutes.
My point was not, that the Arch community forbids users to share updated packages, but that is does not provide a platform therefor.
Being a software developer myself, I fully understand that the devs sometimes cannot keep up with their (voluntary) maintenance of packages.
As a user I can of course quickly update the version number and rebuild - and so can any other user.
But if a necessary change goes beyond a simple version update, which I could fix in no time but may be complicated to do for an unexperienced user, I have no officialy supported means of providing them with the updated package, that the TU/dev currently has no time to update.
And that's the problem. Not for me, but for the others.
@hjheins
If you have an updated, working PKGBUILD, you can send it to the package maintainer in the hope that they will review it and update the package accordingly in time.
If you want to share it right now with other users, so that they can use the updated version, your only option is to post in on your blog and hope that somebody will find it there.
You are not allowed to submit it to the AUR, nor is there any other offical platform to share it. Which is excatly my critique.
Last edited by schard (2020-03-10 10:34:24)
Inofficial first vice president of the Rust Evangelism Strike Force
Offline
Maybe he could post this PKGBUILD here in [ code ] tags ?
Offline
Would this work?
What you download is an archive containing the PKGBUILD file, but also the patches you will need.
It downloads the source by itself.
Seamonkey 2.53.1 PKGBUILD
Hendrik-Jan
Offline
@hjheins
If you have an updated, working PKGBUILD, you can send it to the package maintainer in the hope that they will review it and update the package accordingly in time.
If you want to share it right now with other users, so that they can use the updated version, your only option is to post in on your blog and hope that somebody will find it there.
You are not allowed to submit it to the AUR, nor is there any other offical platform to share it. Which is excatly my critique.
What is your critique? Did you really just claim that it's forbidden to post it to the forum in this thread right here, and that "you must put it in your blog"?
Why are you trying to speak on behalf of Arch Linux™? As a project representative, I assure you it's fine to use this forum platform for this precise purpose. The other official platform operated and maintained by Arch Linux™as a suitable place for sharing updated PKGBUILDs that perform "more than just a pkgver bump" updates, is the arch-general mailing list.
This is not the first time either of those platforms have been used for exactly this purpose.
@hjheins
Thanks.
# Maintainer: HJ Heins <hjheins@gmail.com>
# Contributor: Kyle Keen <keenerd@gmail.com>
# Before you build!!!!
# Requires rust 1.36.0
# Easiest is with rustup: install it, do: rustup toolchain 1.36.0 , rustup default 1.36.0
# you are now set to build this package...
pkgname=seamonkey
pkgver=2.53.1
pkgrel=2
pkgdesc="SeaMonkey internet suite"
arch=(x86_64)
license=(MPL GPL LGPL)
depends=('alsa-lib' 'dbus-glib' 'desktop-file-utils' 'gtk3' 'hunspell' 'libevent' 'libnotify' 'libvpx' 'libxt' 'mime-types' 'mozilla-common' 'nss' 'sqlite' 'startup-notification' 'libpulse' 'icu' 'clang' 'llvm')
makedepends=(unzip zip pkg-config python2-setuptools yasm inetutils mesa autoconf2.13 imake python gst-plugins-base llvm nasm cbindgen nodejs python2-psutil libnotify rustup)
optdepends=('gst-plugins-base: vorbis decoding, ogg demuxing'
'gst-plugins-bad: aac, vp8 and opus decoding'
'gst-plugins-good: webm and mp4 demuxing'
'gst-plugins-ugly: h.264 decoding')
options=(!emptydirs !makeflags !strip)
url="https://www.seamonkey-project.org/"
source=("https://archive.mozilla.org/pub/seamonkey/releases/$pkgver/source/$pkgname-$pkgver.source.tar.xz"
# mozconfig
# seamonkey-2.0-lang.patch
# patch-bug1435212.xz
# no-crmf.diff)
)
sha256sums=('b17c41bbb21c45989f430ffe9bc92397560ba75c20266c5d0bdede6a365b1c6b'
# 'db85ee94a3b78e941bf6d223636d9476db9edb2b32a3d04963c667b7e1eca8ee'
# 'ab19d10fbd6258aec37ab5e5efb12429814b2c24a1193284a48dd654311b4e2e'
# 'dce68858694f820a9a1fc2428038a88ea00b4835cea0778734db794fea3bb21a'
# 'fb85a538044c15471c12cf561d6aa74570f8de7b054a7063ef88ee1bdfc1ccbb'
)
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
# Mozilla API keys (see https://location.services.mozilla.com/api)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact heftig@archlinux.org for
# more information.
_mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a
prepare() {
rustup toolchain 1.36.0
rustup default 1.36.0
alias python='/usr/bin/python2.7'
mkdir mozbuild
cd "$pkgname-$pkgver"
# ffmpeg 4.0 patch from freebsd
# https://github.com/freebsd/freebsd-ports/blob/master/www/seamonkey/files/patch-bug1435212
#patch -Np1 -d mozilla -i ../../patch-bug1435212
#remove_unused_variables
#https://bugzilla.mozilla.org/show_bug.cgi?id=1427455
patch -Np1 -i ../../remove_unused_variables.diff
#base_app_path
#https://bugzilla.mozilla.org/show_bug.cgi?id=445128
patch -Np1 -i ../../base_app_path.diff
#libvpx>=1.80 webrtc failure
#https://bug1612722.bmoattachments.org/attachment.cgi?id=9130052
patch -Np1 -i ../../libvpx_greater_1.80_issue.diff
# work around from FS#54395
#patch -Np1 -d mozilla -i ../../no-crmf.diff
##sed -i "s/'crmf',//" mozilla/security/manager/ssl/moz.build
#sed -i 's/^.*-lcrmf/#&/' mozilla/config/external/nss/crmf/moz.build
#sed -i 's/ -lcrmf"/"/' mozilla/old-configure.in.orig
##sed -i 's/ -lcrmf"/"/' mozilla/old-configure
#sed -i 's/SDK_LIBS = crmf/SDK_LIBS = /' mozilla/config/external/nss/Makefile.in
echo -n "$_google_api_key" >google-api-key
echo -n "$_mozilla_api_key" >mozilla-api-key
cat >../mozconfig <<EOF
ac_add_options --enable-application=suite
ac_add_options --prefix=/usr
ac_add_options --enable-release
ac_add_options --enable-optimize="-O2"
ac_add_options --with-ccache=/usr/bin/ccache
#ac_add_options --enable-rust-simd
#export CC='clang --target=x86_64-unknown-linux-gnu'
#export CCX='clang++ --target=x86_64-unknown-linux-gnu'
export AR=llvm-ar
export NM=llvm-nm
export RANLIB=llvm-ranlib
# Branding
ac_add_options --enable-official-branding
ac_add_options --with-distribution-id=org.archlinux
ac_add_options --with-unsigned-addon-scopes=app,system
export MOZILLA_OFFICIAL=1
export MOZ_APP_REMOTINGNAME=${pkgname//-/}
export MOZ_TELEMETRY_REPORTING=1
export MOZ_REQUIRE_SIGNING=1
mk_add_options MOZ_MAKE_FLAGS="-s -j4"
# Keys
ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/mozilla-api-key
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-png
ac_add_options --with-system-zlib
ac_add_options --with-system-bz2
ac_add_options --with-system-png
ac_add_options --with-system-libvpx
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
ac_add_options --with-system-libevent
#ac_add_options --enable-system-cairo
ac_add_options --with-pthreads
ac_add_options --enable-system-pixman
ac_add_options --enable-default-toolkit=cairo-gtk3
#ac_add_options --disable-webrtc
# Features
ac_add_options --enable-startup-notification
ac_add_options --enable-jack
ac_add_options --enable-alsa
ac_add_options --enable-irc
ac_add_options --enable-calendar
ac_add_options --enable-dominspector
ac_add_options --enable-js-shell
ac_add_options --enable-elf-hack
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --disable-gconf
ac_add_options --disable-updater
ac_add_options --disable-crashreporter
ac_add_options --disable-tests
EOF
}
build() {
cd $pkgname-$pkgver
#export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/seamonkey-$pkgver"
#export MOZ_MAKE_FLAGS="$MAKEFLAGS"
#unset MAKEFLAGS
#unset CPPFLAGS
export MOZ_NOSPAM=1
export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
# Work around https://github.com/rust-lang/cargo/issues/7147
export CARGO_HOME="$srcdir/mozilla/.cargo"
# LTO needs more open files
ulimit -n 4096
# -fno-plt with cross-LTO causes obscure LLVM errors
# LLVM ERROR: Function Import: link error
#CFLAGS="${CFLAGS/-fno-plt/}"
#CXXFLAGS="${CXXFLAGS/-fno-plt/}"
#cleanup functions that do not work
sed -i -e '/pid_t gettid/,+3 s@^@//@' mozilla/tools/profiler/core/platform.h
echo "Building optimized browser..."
cat >.mozconfig ../mozconfig - <<END
END
make -l1 -f client.mk configure
make -f client.mk build
}
package() {
cd "$pkgname-$pkgver"
make -f client.mk install DESTDIR="$pkgdir"
local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js"
install -Dvm644 /dev/stdin "$vendorjs" <<END
// Use LANG environment variable to choose locale
pref("intl.locale.requested", "");
// Use system-provided dictionaries
pref("spellchecker.dictionary_path", "/usr/share/hunspell");
// Disable default browser checking.
pref("browser.shell.checkDefaultBrowser", false);
// Don't disable extensions in the application directory
pref("extensions.autoDisableScopes", 11);
END
local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"
install -Dvm644 /dev/stdin "$distini" <<END
[Global]
id=archlinux
version=1.0
about=Mozilla $pkgname for Arch Linux
[Preferences]
app.distributor=archlinux
app.distributor.channel=$pkgname
app.partner.archlinux=archlinux
END
install -Dm644 suite/branding/$pkgname/default64.png \
"$pkgdir/usr/share/pixmaps/$pkgname.png"
install -Dm644 mozilla/toolkit/mozapps/installer/linux/rpm/mozilla.desktop \
"$pkgdir/usr/share/applications/$pkgname.desktop"
sed -i 's/@MOZ_APP_DISPLAYNAME@/SeaMonkey internet suite/' \
"$pkgdir/usr/share/applications/$pkgname.desktop"
sed -i 's/@MOZ_APP_NAME@/$pkgname/' "$pkgdir/usr/share/applications/$pkgname.desktop"
# Install a wrapper to avoid confusion about binary path
install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END
#!/bin/sh
exec /usr/lib/$pkgname/$pkgname "\$@"
END
# Use system certificates
local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so"
if [[ -e $nssckbi ]]; then
ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi"
fi
if [[ -f "$startdir/.crash-stats-api.token" ]]; then
find . -name '*crashreporter-symbols-full.zip' -exec \
"$startdir/upload-symbol-archive" "$startdir/.crash-stats-api.token" {} +
else
find . -name '*crashreporter-symbols-full.zip' -exec \
cp -fvt "$startdir" {} +
fi
}
So some things I'd note... we don't use rustup in Arch packaging, there is a "rust" package (what is "Requires rust 1.36.0" and does that actually mean "at least rust 1.36.0, but 1.41.1 will work too"?), and I very much doubt that clang and llvm are dependencies... makedepends, probably.
Also the extra source files need to go in the source=() array and there is a bunch of commented stuff that should really just be dropped, I suppose...
You have some sed stuff that I cannot see working as single-quoted strings containing '$pkgname'?
The "Building optimized browser" stuff seems like it's copied from recent versions of the firefox PKGBUILD, but it doesn't actually do that part.
...
Anyway, no promises but I may be able to find time to integrate these changes and produce test packages if Kyle lacks the time.
Last edited by eschwartz (2020-03-10 16:16:54)
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
@eschwartz,
unfortunately rust 1.36.0 is a must. No higher or lower version will work.
This is why I used rustup. while otherwise I would also have been packaging rust 1.36.0
The other stuff: yes, I still have some cleanup to do.
I started with the seamonkye PKGBUILD, got some inspiration from firefox, and mixed it all up so to say.
I will post a cleaner version for 2.53.2, which apparently will come in a couple of weeks.
Hendrik-Jan
Offline
Oof, exact pinned versions of rust are a pretty annoying issue. Is there a bug report for this, or a patch that can make it work on newer rust versions? The mozilla base code is supposed to work with the current rust, so in principle it should be possible to make it work for seamonkey too, though that may depend on where they last branched mozilla-central?
Last edited by eschwartz (2020-03-10 17:28:21)
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
unfortunately there is not.
This is why i chose this route. However "unpretty", it was better and easier to manage than the alternative.
As mentioned: Seamonkey 2.53.2 will work with rust 1.41.0 which should make things a bit easier.
Last edited by hjheins (2020-03-11 06:53:53)
Offline
Yeah, that would help a lot.
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
Many thanks for your initiative, Hendrik-Jan! I managed to build SeaMonkey 2.53.1 in a clean chroot with rust 1.41 using the PKGBUILD and mozconfig below. Both files are based on their counterparts from the seamonkey-2.49.4 package and Hendrik-Jan's version posted earlier today. I discussed privately with him and he suggests to move on with them for the moment. Any feedback is of course more than welcome!
What would maybe also be good is if we could notify the user to back up the profile and give a link to the release notes during the installation (this is what the developers strongly recommend in the release notes on https://www.seamonkey-project.org/).
pkgname=seamonkey
pkgver=2.53.1
pkgrel=1
pkgdesc="SeaMonkey internet suite"
arch=('x86_64')
license=('MPL')
depends=('dbus-glib' 'gtk3' 'mozilla-common' 'hunspell' 'libxt' 'mime-types' 'nss' 'sqlite' 'startup-notification' 'libpulse' 'icu')
makedepends=('unzip' 'zip' 'yasm' 'autoconf2.13' 'clang' 'llvm' 'rust' 'git' 'python2' 'gtk2')
url="https://www.seamonkey-project.org/"
source=("https://archive.mozilla.org/pub/seamonkey/releases/$pkgver/source/seamonkey-$pkgver.source.tar.xz"
mozconfig
"rust140-nsstring.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128681"
"rust140-url-P1-pre.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128685"
"rust140-url-P2-1.6.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128686"
"rust140-url-P3-1.7.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128689"
"rust140-url-P4-pre172.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128690"
"rust140-url-P5-1.7.2.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128692"
"rust140-url-P6-post.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128693"
"rust141-encoding_rs.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128694"
"pathname-1-1427455.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/381d4dee00fa3627f7f03cc99d7f421cbf329e3a"
"pathname-2-445128.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/2a4cd620f89b34eaa0ee74638d03b88342cb995e"
)
sha256sums=('0cfa348eff8e71596780fa2f97092f132859bc03de04b2313eb9d74fcb24b99a'
'be7e819bc54fb9811d57ecb0096b31a408db7de4adbd66262f5efe5acc02a01d'
'6c5e705228647c44fb348e06ed7fa475f212b2c5ee9602410c2071f11e8855a9'
'b822bc6977648803f73aad9af7b124c3380611667cfec74bc4b641207c9d619f'
'8e097387ad6f137f0d9080f87ffc433efde5b4fa037d2845e4c54ec7cc6cfbcc'
'd3080710ae115925e880d5db758e5c6a7a229a62d3a6035f323d00fcd36dcb94'
'63c211a827bece5409480f19e1bd73f8a35a9e4fb6ee94dd40923bea3fe25d06'
'ef538ab7ffb370f6d0cb9c67e7bb33484cdcdfe9a08c2661a4fad8d0d391a200'
'990bd9a60b78ee1134733d47e49eb1a75dd586b222ea537868784044b5a5ac31'
'9f9c11ef22bea5031bad37400c585c1a7db488fc448c47544116acfba66184c7'
'cfecc41c36a476f9a21f0e8bf0a4046ed70271a801ad57514aed1991a09f0573'
'527099f80eb4da96f3a9365040b820a251779ceb01f0aceef8405b03d94920f4')
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
# Mozilla API keys (see https://location.services.mozilla.com/api)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact heftig@archlinux.org for
# more information.
_mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a
prepare() {
cd "$pkgname-$pkgver"
cp ../mozconfig .mozconfig
echo -n "$_google_api_key" > google-api-key
echo -n "$_mozilla_api_key" > mozilla-api-key
cat >> .mozconfig <<EOF
ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/mozilla-api-key
EOF
# http://www.linuxfromscratch.org/blfs/view/svn/xsoft/seamonkey.html
# Remove a function definition which is incompatible with the one in glibc-2.30:
sed -i -e '/pid_t gettid/,+3 s@^@//@' mozilla/tools/profiler/core/platform.h
# rust-1.41
# https://bugzilla.mozilla.org/show_bug.cgi?id=1617782
cd mozilla
patch -p1 -i ../../rust140-nsstring.patch
patch -p1 -i ../../rust140-url-P1-pre.patch
patch -p1 -i ../../rust140-url-P2-1.6.0.patch
#patch -p1 -i ../../rust140-url-P3-1.7.0.patch
git apply -p1 ../../rust140-url-P3-1.7.0.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=1617782#c6
patch -p1 -i ../../rust140-url-P4-pre172.patch
patch -p1 -i ../../rust140-url-P5-1.7.2.patch
patch -p1 -i ../../rust140-url-P6-post.patch
patch -p1 -i ../../rust141-encoding_rs.patch
# remove version number from path name
# https://bugzilla.mozilla.org/show_bug.cgi?id=1427455
# https://bugzilla.mozilla.org/show_bug.cgi?id=445128
patch -p1 -i ../../pathname-1-1427455.patch
patch -p1 -i ../../pathname-2-445128.patch
}
build() {
cd "$pkgname-$pkgver"
make -f client.mk build
}
package() {
cd "$pkgname-$pkgver"
make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
rm -rf "$pkgdir"/usr/lib/seamonkey/{dictionaries,hyphenation}
ln -s /usr/share/hunspell "$pkgdir/usr/lib/seamonkey/dictionaries"
ln -s /usr/share/hyphen "$pkgdir/usr/lib/seamonkey/hyphenation"
install -Dm644 suite/branding/seamonkey/default128.png \
"$pkgdir/usr/share/pixmaps/seamonkey.png"
install -Dm644 mozilla/toolkit/mozapps/installer/linux/rpm/mozilla.desktop \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_DISPLAYNAME@/SeaMonkey internet suite/' \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_NAME@/seamonkey/' "$pkgdir/usr/share/applications/seamonkey.desktop"
}
ac_add_options --enable-application=suite
ac_add_options --prefix=/usr
ac_add_options --libdir=/usr/lib
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --with-system-bz2
ac_add_options --with-system-png
#ac_add_options --with-system-libevent
#ac_add_options --with-system-libvpx
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
#ac_add_options --enable-system-cairo
ac_add_options --with-pthreads
ac_add_options --enable-system-pixman
ac_add_options --disable-gconf
ac_add_options --with-system-icu
# Features
ac_add_options --enable-startup-notification
#ac_add_options --enable-safe-browsing
#ac_add_options --enable-gio
#ac_add_options --disable-gstreamer
ac_add_options --enable-pulseaudio
ac_add_options --enable-optimize="-O2"
ac_add_options --enable-strip
ac_add_options --enable-install-strip
#ac_add_options --disable-gnomevfs
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-tests
#ac_add_options --disable-installer
ac_add_options --disable-webrender
ac_add_options --disable-stylo
export MOZILLA_OFFICIAL=1
export CC=clang
export CXX=clang++
export AR=llvm-ar
export NM=llvm-nm
export RANLIB=llvm-ranlib
Offline
Many thanks for your initiative, Hendrik-Jan! I managed to build SeaMonkey 2.53.1 in a clean chroot with rust 1.41 using the PKGBUILD and mozconfig below. Both files are based on their counterparts from the seamonkey-2.49.4 package and Hendrik-Jan's version posted earlier today. I discussed privately with him and he suggests to move on with them for the moment. Any feedback is of course more than welcome!
Excellent detective work, much appreciated!
What would maybe also be good is if we could notify the user to back up the profile and give a link to the release notes during the installation (this is what the developers strongly recommend in the release notes on https://www.seamonkey-project.org/).
https://wiki.archlinux.org/index.php/PKGBUILD#install can print a message to the person running pacman, using vercmp to make sure it is only printed during this particular upgrade.
Various packages in the official repos contain example code for printing such one-time messages, though you may need to grep through the svntogit repository to find one -- I don't remember any specific packages off the top of my head.
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
Hi Eli,
I think this should work (inspired by https://bbs.archlinux.org/viewtopic.php … 8#p1535928):
post_upgrade() {
if (( $(vercmp $2 2.53.1) < 0 )); then
echo
echo "SeaMonkey ${1%-*} makes changes to your profile that can't be reverted in case you want to go back to a previous version of SeaMonkey. Make a full backup of your profile and thoroughly read and follow the Release Notes at https://www.seamonkey-project.org/releases/seamonkey2.53.1/."
echo
fi
}
The text is copied from the release notes.
One would just need to save this as seamonkey.install and add
install="$pkgname.install"
to the PKGBUILD.
Last edited by kifuna (2020-03-11 18:29:14)
Offline
Hi kifuna,
allow me to simplify your PKGBUILD please. :-)
I put the mozconfig into it, to make it more portable:
PKGBUILD
pkgname=seamonkey
pkgver=2.53.1
pkgrel=1
pkgdesc="SeaMonkey internet suite"
arch=('x86_64')
license=('MPL')
depends=('dbus-glib' 'gtk3' 'mozilla-common' 'hunspell' 'libxt' 'mime-types' 'nss' 'sqlite' 'startup-notification' 'libpulse' 'icu')
makedepends=('unzip' 'zip' 'yasm' 'autoconf2.13' 'clang' 'llvm' 'rust' 'git' 'python2' 'gtk2')
url="https://www.seamonkey-project.org/"
source=("https://archive.mozilla.org/pub/seamonkey/releases/$pkgver/source/seamonkey-$pkgver.source.tar.xz"
"rust140-nsstring.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128681"
"rust140-url-P1-pre.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128685"
"rust140-url-P2-1.6.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128686"
"rust140-url-P3-1.7.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128689"
"rust140-url-P4-pre172.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128690"
"rust140-url-P5-1.7.2.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128692"
"rust140-url-P6-post.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128693"
"rust141-encoding_rs.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128694"
"pathname-1-1427455.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/381d4dee00fa3627f7f03cc99d7f421cbf329e3a"
"pathname-2-445128.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/2a4cd620f89b34eaa0ee74638d03b88342cb995e"
)
sha256sums=('0cfa348eff8e71596780fa2f97092f132859bc03de04b2313eb9d74fcb24b99a'
'6c5e705228647c44fb348e06ed7fa475f212b2c5ee9602410c2071f11e8855a9'
'b822bc6977648803f73aad9af7b124c3380611667cfec74bc4b641207c9d619f'
'8e097387ad6f137f0d9080f87ffc433efde5b4fa037d2845e4c54ec7cc6cfbcc'
'd3080710ae115925e880d5db758e5c6a7a229a62d3a6035f323d00fcd36dcb94'
'63c211a827bece5409480f19e1bd73f8a35a9e4fb6ee94dd40923bea3fe25d06'
'ef538ab7ffb370f6d0cb9c67e7bb33484cdcdfe9a08c2661a4fad8d0d391a200'
'990bd9a60b78ee1134733d47e49eb1a75dd586b222ea537868784044b5a5ac31'
'9f9c11ef22bea5031bad37400c585c1a7db488fc448c47544116acfba66184c7'
'cfecc41c36a476f9a21f0e8bf0a4046ed70271a801ad57514aed1991a09f0573'
'527099f80eb4da96f3a9365040b820a251779ceb01f0aceef8405b03d94920f4')
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
# Mozilla API keys (see https://location.services.mozilla.com/api)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact heftig@archlinux.org for
# more information.
_mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a
prepare() {
cd "$pkgname-$pkgver"
cat >../mozconfig <<EOF
ac_add_options --enable-application=suite
ac_add_options --prefix=/usr
ac_add_options --libdir=/usr/lib
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --with-system-bz2
ac_add_options --with-system-png
#ac_add_options --with-system-libevent
#ac_add_options --with-system-libvpx
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
#ac_add_options --enable-system-cairo
ac_add_options --with-pthreads
ac_add_options --enable-system-pixman
ac_add_options --disable-gconf
ac_add_options --with-system-icu
# Features
ac_add_options --enable-startup-notification
#ac_add_options --enable-safe-browsing
#ac_add_options --enable-gio
#ac_add_options --disable-gstreamer
ac_add_options --enable-pulseaudio
ac_add_options --enable-optimize="-O2"
ac_add_options --enable-strip
ac_add_options --enable-install-strip
#ac_add_options --disable-gnomevfs
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-tests
#ac_add_options --disable-installer
ac_add_options --disable-webrender
ac_add_options --disable-stylo
export MOZILLA_OFFICIAL=1
export CC=clang
export CXX=clang++
export AR=llvm-ar
export NM=llvm-nm
export RANLIB=llvm-ranlib
EOF
echo -n "$_google_api_key" > google-api-key
echo -n "$_mozilla_api_key" > mozilla-api-key
cat >> .mozconfig <<EOF
ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/mozilla-api-key
EOF
# http://www.linuxfromscratch.org/blfs/view/svn/xsoft/seamonkey.html
# Remove a function definition which is incompatible with the one in glibc-2.30:
sed -i -e '/pid_t gettid/,+3 s@^@//@' mozilla/tools/profiler/core/platform.h
# rust-1.41
# https://bugzilla.mozilla.org/show_bug.cgi?id=1617782
cd mozilla
patch -p1 -i ../../rust140-nsstring.patch
patch -p1 -i ../../rust140-url-P1-pre.patch
patch -p1 -i ../../rust140-url-P2-1.6.0.patch
#patch -p1 -i ../../rust140-url-P3-1.7.0.patch
git apply -p1 ../../rust140-url-P3-1.7.0.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=1617782#c6
patch -p1 -i ../../rust140-url-P4-pre172.patch
patch -p1 -i ../../rust140-url-P5-1.7.2.patch
patch -p1 -i ../../rust140-url-P6-post.patch
patch -p1 -i ../../rust141-encoding_rs.patch
# remove version number from path name
# https://bugzilla.mozilla.org/show_bug.cgi?id=1427455
# https://bugzilla.mozilla.org/show_bug.cgi?id=445128
patch -p1 -i ../../pathname-1-1427455.patch
patch -p1 -i ../../pathname-2-445128.patch
}
build() {
cd "$pkgname-$pkgver"
cat >.mozconfig ../mozconfig - <<END
END
make -f client.mk build
}
package() {
cd "$pkgname-$pkgver"
make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
rm -rf "$pkgdir"/usr/lib/seamonkey/{dictionaries,hyphenation}
ln -s /usr/share/hunspell "$pkgdir/usr/lib/seamonkey/dictionaries"
ln -s /usr/share/hyphen "$pkgdir/usr/lib/seamonkey/hyphenation"
install -Dm644 suite/branding/seamonkey/default128.png \
"$pkgdir/usr/share/pixmaps/seamonkey.png"
install -Dm644 mozilla/toolkit/mozapps/installer/linux/rpm/mozilla.desktop \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_DISPLAYNAME@/SeaMonkey internet suite/' \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_NAME@/seamonkey/' "$pkgdir/usr/share/applications/seamonkey.desktop"
}
post_upgrade() {
if (( $(vercmp $2 2.53.1) < 0 )); then
echo
echo "SeaMonkey ${1%-*} makes changes to your profile that can't be reverted in case you want to go back to a previous version of SeaMonkey. Make a full backup of your profile and thoroughly read and follow the Release Notes at https://www.seamonkey-project.org/releases/seamonkey2.53.1/."
echo
fi
}
seamonkey.install
install="$pkgname.install"
cheers,
Hendrik-Jan
Offline
Hi Hendrik-Jan,
sure, good idea. :-) Just one thing, the line
install="$pkgname.install"
should be added to the PKGBUILD and post_upgrade() should be defined in seamonkey.install:
pkgname=seamonkey
pkgver=2.53.1
pkgrel=1
pkgdesc="SeaMonkey internet suite"
arch=('x86_64')
license=('MPL')
depends=('dbus-glib' 'gtk3' 'hunspell' 'libxt' 'mime-types' 'nss' 'sqlite' 'startup-notification' 'libpulse' 'icu') # 'mozilla-common'
makedepends=('unzip' 'zip' 'yasm' 'autoconf2.13' 'clang' 'llvm' 'rust' 'git' 'python2' 'gtk2')
url="https://www.seamonkey-project.org/"
source=("https://archive.mozilla.org/pub/seamonkey/releases/$pkgver/source/seamonkey-$pkgver.source.tar.xz"
"rust140-nsstring.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128681"
"rust140-url-P1-pre.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128685"
"rust140-url-P2-1.6.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128686"
"rust140-url-P3-1.7.0.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128689"
"rust140-url-P4-pre172.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128690"
"rust140-url-P5-1.7.2.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128692"
"rust140-url-P6-post.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128693"
"rust141-encoding_rs.patch::https://bugzilla.mozilla.org/attachment.cgi?id=9128694"
"pathname-1-1427455.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/381d4dee00fa3627f7f03cc99d7f421cbf329e3a"
"pathname-2-445128.patch::https://hg.mozilla.org/mozreview/gecko/raw-rev/2a4cd620f89b34eaa0ee74638d03b88342cb995e")
sha256sums=('0cfa348eff8e71596780fa2f97092f132859bc03de04b2313eb9d74fcb24b99a'
'6c5e705228647c44fb348e06ed7fa475f212b2c5ee9602410c2071f11e8855a9'
'b822bc6977648803f73aad9af7b124c3380611667cfec74bc4b641207c9d619f'
'8e097387ad6f137f0d9080f87ffc433efde5b4fa037d2845e4c54ec7cc6cfbcc'
'd3080710ae115925e880d5db758e5c6a7a229a62d3a6035f323d00fcd36dcb94'
'63c211a827bece5409480f19e1bd73f8a35a9e4fb6ee94dd40923bea3fe25d06'
'ef538ab7ffb370f6d0cb9c67e7bb33484cdcdfe9a08c2661a4fad8d0d391a200'
'990bd9a60b78ee1134733d47e49eb1a75dd586b222ea537868784044b5a5ac31'
'9f9c11ef22bea5031bad37400c585c1a7db488fc448c47544116acfba66184c7'
'cfecc41c36a476f9a21f0e8bf0a4046ed70271a801ad57514aed1991a09f0573'
'527099f80eb4da96f3a9365040b820a251779ceb01f0aceef8405b03d94920f4')
install="$pkgname.install"
# Google API keys (see http://www.chromium.org/developers/how-tos/api-keys)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact foutrelis@archlinux.org for
# more information.
_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
# Mozilla API keys (see https://location.services.mozilla.com/api)
# Note: These are for Arch Linux use ONLY. For your own distribution, please
# get your own set of keys. Feel free to contact heftig@archlinux.org for
# more information.
_mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a
prepare() {
cd "$pkgname-$pkgver"
cat > .mozconfig <<EOF
ac_add_options --enable-application=suite
ac_add_options --prefix=/usr
ac_add_options --libdir=/usr/lib
# System libraries
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
ac_add_options --with-system-jpeg
ac_add_options --with-system-zlib
ac_add_options --with-system-bz2
ac_add_options --with-system-png
#ac_add_options --with-system-libevent
#ac_add_options --with-system-libvpx
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
#ac_add_options --enable-system-cairo
ac_add_options --with-pthreads
ac_add_options --enable-system-pixman
ac_add_options --disable-gconf
ac_add_options --with-system-icu
# Features
ac_add_options --enable-startup-notification
#ac_add_options --enable-safe-browsing
#ac_add_options --enable-gio
#ac_add_options --disable-gstreamer
ac_add_options --enable-pulseaudio
ac_add_options --enable-optimize="-O2"
ac_add_options --enable-strip
ac_add_options --enable-install-strip
#ac_add_options --disable-gnomevfs
ac_add_options --disable-crashreporter
ac_add_options --disable-updater
ac_add_options --disable-tests
#ac_add_options --disable-installer
ac_add_options --disable-webrender
ac_add_options --disable-stylo
export MOZILLA_OFFICIAL=1
export CC=clang
export CXX=clang++
export AR=llvm-ar
export NM=llvm-nm
export RANLIB=llvm-ranlib
EOF
echo -n "$_google_api_key" > google-api-key
echo -n "$_mozilla_api_key" > mozilla-api-key
cat >> .mozconfig <<EOF
ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/google-api-key
ac_add_options --with-mozilla-api-keyfile=${PWD@Q}/mozilla-api-key
EOF
# http://www.linuxfromscratch.org/blfs/view/svn/xsoft/seamonkey.html
# Remove a function definition which is incompatible with the one in glibc-2.30:
sed -i -e '/pid_t gettid/,+3 s@^@//@' mozilla/tools/profiler/core/platform.h
# rust-1.41
# https://bugzilla.mozilla.org/show_bug.cgi?id=1617782
cd mozilla
patch -p1 -i ../../rust140-nsstring.patch
patch -p1 -i ../../rust140-url-P1-pre.patch
patch -p1 -i ../../rust140-url-P2-1.6.0.patch
#patch -p1 -i ../../rust140-url-P3-1.7.0.patch
git apply -p1 ../../rust140-url-P3-1.7.0.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=1617782#c6
patch -p1 -i ../../rust140-url-P4-pre172.patch
patch -p1 -i ../../rust140-url-P5-1.7.2.patch
patch -p1 -i ../../rust140-url-P6-post.patch
patch -p1 -i ../../rust141-encoding_rs.patch
# remove version number from path name
# https://bugzilla.mozilla.org/show_bug.cgi?id=1427455
# https://bugzilla.mozilla.org/show_bug.cgi?id=445128
patch -p1 -i ../../pathname-1-1427455.patch
patch -p1 -i ../../pathname-2-445128.patch
}
build() {
cd "$pkgname-$pkgver"
make -f client.mk build
}
package() {
cd "$pkgname-$pkgver"
make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
rm -rf "$pkgdir"/usr/lib/seamonkey/{dictionaries,hyphenation}
ln -s /usr/share/hunspell "$pkgdir/usr/lib/seamonkey/dictionaries"
ln -s /usr/share/hyphen "$pkgdir/usr/lib/seamonkey/hyphenation"
install -Dm644 suite/branding/seamonkey/default128.png \
"$pkgdir/usr/share/pixmaps/seamonkey.png"
install -Dm644 mozilla/toolkit/mozapps/installer/linux/rpm/mozilla.desktop \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_DISPLAYNAME@/SeaMonkey internet suite/' \
"$pkgdir/usr/share/applications/seamonkey.desktop"
sed -i 's/@MOZ_APP_NAME@/seamonkey/' "$pkgdir/usr/share/applications/seamonkey.desktop"
}
post_upgrade() {
if (( $(vercmp $2 2.53.1) < 0 )); then
echo
echo "SeaMonkey ${1%-*} makes changes to your profile that can't be reverted in case you want to go back to a previous version of SeaMonkey. Make a full backup of your profile and thoroughly read and follow the Release Notes at https://www.seamonkey-project.org/releases/seamonkey2.53.1/."
echo
fi
}
@eschwartz: Is there a policy of using post_upgrade() or pre_upgrade() for this kind of announcement?
Offline
post_upgrade is a reasonable place to put such warnings, yes.
Managing AUR repos The Right Way -- aurpublish (now a standalone tool)
Offline
Hi eschwartz,
out of curiousity: what would be the procedure here? At what point would an application like this one be dropped from the repository and be available to be offered in AUR?
thanks,
Hendrik-Jan
Offline
what would be the procedure here?
You can always send your changes to the package maintainer. I do that sort of thing fairly regularly.
Offline