You are not logged in.

#1 2014-02-04 19:15:50

up
Member
Registered: 2012-08-14
Posts: 12

Creating PKGBUILD for palemoon, browser based on firefox

Hi,

I'm relative new Arch user and I haven't done any packaging until today with Pale Moon. It is a web browser based on Mozilla Firefox and it has been build to linux just a while ago. The author of the project gave me permission to submit it to AUR. I would be happy to do it, but I don't have any previous experience with packaging. Could someone check the PKGBUILD that it is correct and adheres the AUR standards? And, anyone interested with more experience is free to take it over.

The project home page is http://palemoon.org
and the linux binaries are at http://sourceforge.net/projects/pm4linux/,

Here is the PKGBUILD file. I used firefox-esr-bin as an example and copied the dependencies from it.

# Maintainer: sumt <sumt at sci dot fi>
pkgname=palemoon
pkgver=24.3.1
pkgrel=1
pkgdesc="Browser based on Firefox that's optimised for performance."
arch=('i686' 'x86_64')
url="http://sourceforge.net/projects/pm4linux/"
license=('MPL' 'GPL' 'LGPL')
depends=('gtk2' 'dbus-glib' 'desktop-file-utils' 'libxt' 'mime-types' 'nss' 'shared-mime-info')
optdepends=('networkmanager: Location detection via available WiFi networks'
            'gstreamer0.10-base-plugins: vorbis decoding, ogg demuxing'
            'gstreamer0.10-good-plugins: webm and mp4 demuxing'
            'gstreamer0.10-bad-plugins: aac, vp8 and opus decoding'
            'gstreamer0.10-ugly-plugins: h.264 and mp3 decoding'
            'gstreamer0.10-ffmpeg: more decoders'
            'libpulse: PulseAudio audio driver')
install=$pkgname.install
source=(http://downloads.sourceforge.net/pm4linux/$pkgname-$pkgver.en-US.linux-$CARCH.tar.bz2
        $pkgname.desktop)
md5sums=('88fe69cd12baf1de15d58c1be5e68a2e'
         '220EDFF6FA5A275B53D7EDC1E6A3DB99')
[ "$CARCH" == "i686" ] && md5sums[0]='065793af06c68a4491acb2fd1a9eda29'

package() {
    cd $srcdir
    install -d $pkgdir/{usr/{bin,share/applications},opt}
    cp -r $pkgname/ $pkgdir/opt/$pkgname
    ln -s /opt/$pkgname/$pkgname $pkgdir/usr/bin/$pkgname
    install -m644 $srcdir/$pkgname.desktop $pkgdir/usr/share/applications/
}

Results of namcap for the build package. Is there anything that I should be concerned about?

> namcap palemoon-24.3.1-1-x86_64.pkg.tar.xz 
palemoon E: ELF file ('opt/palemoon/libnssdbm3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libssl3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/palemoon-bin') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/plugin-container') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/palemoon') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libmozalloc.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libplds4.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libsmime3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libsoftokn3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libxul.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libmozsqlite3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/mozilla-xremote-client') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libnss3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libplc4.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libfreebl3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libnspr4.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libnssckbi.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/libnssutil3.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/webapprt-stub') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/browser/components/libbrowsercomps.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/components/libmozgnome.so') outside of a valid path.
palemoon E: ELF file ('opt/palemoon/components/libdbusservice.so') outside of a valid path.
palemoon W: Referenced library 'libmozsqlite3.so' is an uninstalled dependency
palemoon W: Referenced library 'libxul.so' is an uninstalled dependency
palemoon W: Referenced library 'libmozalloc.so' is an uninstalled dependency
palemoon E: Dependency java-environment detected and not included (found class files opt/palemoon/distribution/bundles/statusbar@palemoon.org/chrome.jar, opt/palemoon/browser/chrome/browser.jar, opt/palemoon/browser/chrome/en-US.jar, opt/palemoon/chrome/marionette.jar, opt/palemoon/chrome/en-US.jar, opt/palemoon/chrome/toolkit.jar, opt/palemoon/chrome/recording.jar, opt/palemoon/chrome/pippki.jar, opt/palemoon/webapprt/chrome/en-US.jar, opt/palemoon/webapprt/chrome/webapprt.jar)
palemoon W: Dependency alsa-lib detected but optional (libraries ['usr/lib/libasound.so.2'] needed in files ['opt/palemoon/libxul.so'])
palemoon W: Dependency included and not needed ('mime-types')
palemoon W: Dependency shared-mime-info included but already satisfied

Last edited by up (2014-02-10 07:27:04)

Offline

#2 2014-02-04 21:05:15

Jristz
Member
From: America/Santiago
Registered: 2011-06-11
Posts: 1,022

Re: Creating PKGBUILD for palemoon, browser based on firefox

look like need xulruner too to work

Try put these lib in /opt/palemon/{bin,lib,whatever} fallow neededs or in /usr/ in they respective paths


Well, I suppose that this is somekind of signature, no?

Offline

#3 2014-02-07 14:27:30

up
Member
Registered: 2012-08-14
Posts: 12

Re: Creating PKGBUILD for palemoon, browser based on firefox

Well, I changed the path from /opt/palemoon to /usr/lib/palemoon, added icons to usr/share, and symlinked dictionary folders to use system-provided paths.

Here is the new PKGBUILD,

# Maintainer: sumt <sumt at sci dot fi>
pkgname=palemoon
pkgver=24.3.1
pkgrel=1
pkgdesc="Browser based on Firefox that's optimised for performance."
arch=('i686' 'x86_64')
url="http://sourceforge.net/projects/pm4linux/"
license=('MPL' 'GPL' 'LGPL')
depends=('gtk2' 'dbus-glib' 'desktop-file-utils' 'libxt' 'mime-types' 'nss' 'alsa-lib')
optdepends=('networkmanager: Location detection via available WiFi networks'
            'gstreamer0.10-base-plugins: vorbis decoding, ogg demuxing'
            'gstreamer0.10-good-plugins: webm and mp4 demuxing'
            'gstreamer0.10-bad-plugins: aac, vp8 and opus decoding'
            'gstreamer0.10-ugly-plugins: h.264 and mp3 decoding'
            'gstreamer0.10-ffmpeg: more decoders'
            'libpulse: PulseAudio audio driver')
install=palemoon.install
source=(http://downloads.sourceforge.net/pm4linux/$pkgname-$pkgver.en-US.linux-$CARCH.tar.bz2
        $pkgname.desktop)
md5sums=('88fe69cd12baf1de15d58c1be5e68a2e'
         '00d640ab6261fd1fb4adbadf79edd1f5')
[ "$CARCH" == "i686" ] && md5sums[0]='065793af06c68a4491acb2fd1a9eda29'

package() {
  install -d "$pkgdir"/usr/{bin,lib}
  cp -r palemoon/ "$pkgdir/usr/lib/$pkgname"
  ln -s "/usr/lib/$pkgname/palemoon" "$pkgdir/usr/bin/palemoon"
  install -Dm644 palemoon.desktop "$pkgdir/usr/share/applications/$pkgname.desktop"

  # icons
  install -Dm644 palemoon/browser/chrome/icons/default/default16.png \
    "$pkgdir/usr/share/icons/hicolor/16x16/apps/$pkgname.png"
  install -Dm644 palemoon/browser/chrome/icons/default/default32.png \
    "$pkgdir/usr/share/icons/hicolor/32x32/apps/$pkgname.png"
  install -Dm644 palemoon/browser/chrome/icons/default/default48.png \
    "$pkgdir/usr/share/icons/hicolor/48x48/apps/$pkgname.png"
  install -Dm644 palemoon/browser/icons/mozicon128.png \
    "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png"

  # use system-provided dictionaries
  rm -rf "$pkgdir"/usr/lib/$pkgname/{dictionaries,hyphenation}
  ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries"
  ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation"

  # avoid duplicate binaries
  # https://bugzilla.mozilla.org/show_bug.cgi?id=658850
  ln -sf palemoon "$pkgdir/usr/lib/$pkgname/palemoon-bin"
}

and namcap results,

> namcap palemoon-24.3.1-1-x86_64.pkg.tar.xz 
palemoon W: Referenced library 'libmozsqlite3.so' is an uninstalled dependency
palemoon W: Referenced library 'libxul.so' is an uninstalled dependency
palemoon W: Referenced library 'libmozalloc.so' is an uninstalled dependency
palemoon E: Symlink (usr/lib/palemoon/hyphenation) points to non-existing /usr/share/hyphen
palemoon E: Symlink (usr/lib/palemoon/dictionaries) points to non-existing /usr/share/hunspell
palemoon E: Dependency java-environment detected and not included (found class files usr/lib/palemoon/distribution/bundles/statusbar@palemoon.org/chrome.jar, usr/lib/palemoon/browser/chrome/browser.jar, usr/lib/palemoon/browser/chrome/en-US.jar, usr/lib/palemoon/chrome/marionette.jar, usr/lib/palemoon/chrome/en-US.jar, usr/lib/palemoon/chrome/toolkit.jar, usr/lib/palemoon/chrome/recording.jar, usr/lib/palemoon/chrome/pippki.jar, usr/lib/palemoon/webapprt/chrome/en-US.jar, usr/lib/palemoon/webapprt/chrome/webapprt.jar)
palemoon W: Dependency included and not needed ('mime-types')

Any comments? Thanks.

Offline

#4 2014-02-07 15:31:15

Lone_Wolf
Forum Moderator
From: Netherlands, Europe
Registered: 2005-10-04
Posts: 11,952

Re: Creating PKGBUILD for palemoon, browser based on firefox

check if the 3 referenced librariries are provided by palemoon itself.
If that's not the case, then you need to check which pacakges do provide them and add those to dependencies

which pacakge do /usr/share/hyphen & /usr/sharer/hunspell belong to ?
they should either be dep or optdep .

some palemoon functions appear to need java-environment , unless you're sure they are not needed better add it as dependency.


Disliking systemd intensely, but not satisfied with alternatives so focusing on taming systemd.


(A works at time B)  && (time C > time B ) ≠  (A works at time C)

Offline

#5 2014-02-12 13:22:12

serdotlinecho
Member
Registered: 2013-01-26
Posts: 100

Re: Creating PKGBUILD for palemoon, browser based on firefox

Been waiting for linux build for ages and now finally we have it! Well, it's pre-compiled binary, right?

Last edited by serdotlinecho (2014-02-12 14:17:40)

Offline

#6 2014-02-12 14:46:01

up
Member
Registered: 2012-08-14
Posts: 12

Re: Creating PKGBUILD for palemoon, browser based on firefox

serdotlinecho wrote:

Been waiting for linux build for ages and now finally we have it! Well, it's pre-compiled binary, right?

Yes, access2godzilla has been working on it to get it to linux. He hosts his builds on sourceforge. The link is in the first post.

You can find the source code for Pale Moon from http://www.palemoon.org/sourcecode.shtml

Offline

#7 2014-02-12 14:58:15

progandy
Member
Registered: 2012-05-17
Posts: 5,201

Re: Creating PKGBUILD for palemoon, browser based on firefox

If you want to use a prebuilt application, then the location in /opt is right regardless of what namcap says. java-environment is not required. namcap demands java as soon as some .jar files are present. firefox uses .jar files for other things than java packages. So I guess your first PKGBUILD was not wrong.

If you can move palemoon into proper locations then you can doo so,too When symlinking, please use relative paths if that is feasable (e.g. ln -s ../lib/pm/pm /usr/bin/pm)

Last edited by progandy (2014-02-12 15:14:23)


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |

Offline

#8 2014-02-12 16:34:20

serdotlinecho
Member
Registered: 2013-01-26
Posts: 100

Re: Creating PKGBUILD for palemoon, browser based on firefox

up wrote:
serdotlinecho wrote:

Been waiting for linux build for ages and now finally we have it! Well, it's pre-compiled binary, right?

Yes, access2godzilla has been working on it to get it to linux. He hosts his builds on sourceforge. The link is in the first post.

You can find the source code for Pale Moon from http://www.palemoon.org/sourcecode.shtml

Just finish installed Pale Moon using your tarball and now browsing using Pale Moon. Thanks for the tarball and the PKGBUILD!
Are you planning to summit to AUR website?

Offline

#9 2014-02-12 19:11:40

up
Member
Registered: 2012-08-14
Posts: 12

Re: Creating PKGBUILD for palemoon, browser based on firefox

progandy wrote:

If you want to use a prebuilt application, then the location in /opt is right regardless of what namcap says.

Well back to /opt/ then. What exactly is wrong in using /usr/lib/ for a prebuild package and why /opt should be used instead?

Also should I rename the package to palemoon-bin?

Offline

#10 2014-02-12 19:44:24

progandy
Member
Registered: 2012-05-17
Posts: 5,201

Re: Creating PKGBUILD for palemoon, browser based on firefox

up wrote:
progandy wrote:

If you want to use a prebuilt application, then the location in /opt is right regardless of what namcap says.

Well back to /opt/ then. What exactly is wrong in using /usr/lib/ for a prebuild package and why /opt should be used instead?

You don't have to go back. If you have a prebuilt package which is designed to run from /opt, then you are allowed to install it there. Of course it is always nice if you can fit the package into the standard directory scheme and if you like to do the work, then by all means do so.

Also should I rename the package to palemoon-bin?

Probably. The name without -bin should be kept free in the AUR if someone wants to publish the PKGBUILD for it I guess.


| alias CUTF='LANG=en_XX.UTF-8@POSIX ' |

Offline

#11 2014-02-12 20:58:15

up
Member
Registered: 2012-08-14
Posts: 12

Re: Creating PKGBUILD for palemoon, browser based on firefox

Oh, ok thanks for explaining, progandy!

serdotlinecho wrote:

Just finish installed Pale Moon using your tarball and now browsing using Pale Moon. Thanks for the tarball and the PKGBUILD!
Are you planning to summit to AUR website?

Yes,  and already did so! It's for the new 24.3.2 version that was released just few hours ago, so you can update it using AUR!

Link: https://aur.archlinux.org/packages/palemoon/

Thanks all for the helpful comments!

Offline

Board footer

Powered by FluxBB