From 1fa502f26b13d5872e4c24771cda692d05ccfe48 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Wed, 28 Nov 2018 15:59:20 +0100 Subject: libre/pacman: Add preliminary ppc64le support. This has not been built or tested on ppc64le, however it enables to create a ppc64le chroot with librechroot. While creating the chroot, it does install the packages: $ sudo librechroot -A ppc64le -n parabola-ppc64le make [...] ( 1/134) installing linux-libre-api-headers [################################################] 100% ( 2/134) installing tzdata [################################################] 100% [...] and the packages binaries are indeed for ppc64le: $ file /var/lib/archbuild/parabola-ppc64le/root/usr/bin/bash /var/lib/archbuild/parabola-ppc64le/root/usr/bin/bash: ELF 64-bit [...], 64-bit PowerPC [...] However, qemu(through qemu-user-static-binfmt) currently fails at running any of theses binaries with: "error: command terminated by signal 4: Illegal instruction". This also affects the packages post-installation and hooks. Signed-off-by: Denis 'GNUtoo' Carikli --- libre/pacman/PKGBUILD | 10 +++- libre/pacman/pacman.conf.ppc64le | 122 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 libre/pacman/pacman.conf.ppc64le diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD index 9c19b4c82..4e9b31394 100644 --- a/libre/pacman/PKGBUILD +++ b/libre/pacman/PKGBUILD @@ -12,10 +12,10 @@ pkgname=pacman pkgver=5.1.1 pkgrel=1 -pkgrel+=.parabola7 +pkgrel+=.parabola8 pkgdesc="A library-based package manager with dependency support" arch=('x86_64') -arch+=('i686' 'armv7h') +arch+=('i686' 'armv7h' 'ppc64le') url="http://www.archlinux.org/pacman/" license=('GPL') groups=('base' 'base-devel') @@ -53,6 +53,7 @@ sha256sums=('be04b9162d62d2567e21402dcbabb5bedfdb03909fa5ec6e8568e02ab325bd8d' '53c3d28314fd8fc6f92a0720c41fc5bd4c7b24793f84158d07988b294c5480a2' '6baddd5a4651f147b9412d86dc8c5b4763e4f34deaf140a7fb986fb4d4a05949' '435f4e93355048f83697317b35aad7788162bab5f58f1b9268bc83ad03ed41d8' + '88359b6a39c8c1d43b1d1ead05425b0199f8783c330f1b5ec84edcdba5ffb06e' 'c0cbdc0df96f13a73d241c1eb85a969098bd414f12ecd7c045922b154537e00a' '220f1b25a64727041dc6fa3fd486b0a043f735a3f6cecedc4e2f7c47ec6ce66d' '2a857061f032ff5485f5c75ab74e6f6532621e08963ef48640a792cca16cacd6' @@ -124,6 +125,11 @@ build() { mychost="armv7l-unknown-linux-gnueabihf" myflags="-march=armv7-a -mfloat-abi=hard -mfpu=vfpv3-d16 -O2 -pipe -fstack-protector-strong -fno-plt" ;; + ppc64le) + mycarch="ppc64le" + mychost="powerpc64le-unknown-linux-gnu" + myflags="-mcpu=native -O2 -pipe -fstack-protector-strong -fno-plt" + ;; esac myldflags="-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now" diff --git a/libre/pacman/pacman.conf.ppc64le b/libre/pacman/pacman.conf.ppc64le new file mode 100644 index 000000000..df1b8c75e --- /dev/null +++ b/libre/pacman/pacman.conf.ppc64le @@ -0,0 +1,122 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -L -C - -f -o %o %u +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all Arch/Parabola packagers +# with `pacman-key --populate archlinux` and `pacman-key --populate parabola`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +# NOTE: Nonprism is a particular repository that aims to provide software built +# and patched without services under global data surveillance programs like PRISM, +# XKeyscore and Tempora. For more info see: https://wiki.parabola.nu/Nonprism + +#[nonprism-testing] +#Include = /etc/pacman.d/mirrorlist + +#[nonprism] +#Include = /etc/pacman.d/mirrorlist + +[libre-testing] +Include = /etc/pacman.d/mirrorlist + +[libre] +Include = /etc/pacman.d/mirrorlist + +#[testing] +#Include = /etc/pacman.d/mirrorlist + +[core] +Include = /etc/pacman.d/mirrorlist + +[extra] +Include = /etc/pacman.d/mirrorlist + +#[community-testing] +#Include = /etc/pacman.d/mirrorlist + +[community] +Include = /etc/pacman.d/mirrorlist + +# The PCR (Parabola Community Repository) contains packages maintained by trusted +# members of the Parabola community. It also contains packages maintained by +# Parabola developers, but that the developer decided didn't belong in core/libre. + +#[pcr-testing] +#Include = /etc/pacman.d/mirrorlist + +[pcr] +Include = /etc/pacman.d/mirrorlist + +# Parabola also supports another community projects and personal repositories, to +# find them check out this wiki page: https://wiki.parabola.nu/Repositories + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + +Include = /etc/pacman.d/*.conf -- cgit v1.2.2