What if a software is not found in the repos?

software
#1

ExactImage, for example.

gentoo has it,
slackware has it,
debian has it,

but we don’t (if I am not wrong).

I don’t badly need it, but the question is what I should do if I do need it. I am not sure I could compile it or make a PKGBUILD myself. I can, of course, run the VB and switch to a distro that has it, but I don’t think that’s a solution.

[wiki] Manjaro - Updates and AUR
#2

You could try and compile it.

The source code/ tarball is here:

http://dl.exactcode.de/oss/exact-image/

Usually the three commands you need are,

./configure
make
make install

There is a guide here
https://wiki.archlinux.org/index.php/creating_packages#Preparation

#3

If the package is popular, someone will make a PKGBUILD for it and put it in AUR. If you need it and only you need it, that’s what you should be doing too. That’s how it work. :slight_smile:
But I myself is quite happy with what are available in AUR right now, everything I need are there. There’s no distro in this world that has every single package available, but I think we have at least 99% of them already, much more than the popular Ubuntu can offer with that crappy PPA. :wink:

1 Like
#4

I’m also interested in packaging this software for Manjaro. I will create AUR package soon.

#5

@Ash: There you go:

https://aur.archlinux.org/packages/exact-image/

Let me know it works for you.

4 Likes
#6

When making packages for AUR are they generally compiled for 32bit or 64bit architecture?

#7

That’s fantastic! Thank you so much!
Something seems to be wrong with the “bardecode.o” yet.

Here’s my complete log:

[code]$ makepkg -sri
==> Making package: exact-image 0.9.1-1 (Mon Aug 29 17:59:03 UTC 2016)
==> Checking runtime dependencies…
==> Installing missing dependencies…
:: Some packages should be upgraded first…
resolving dependencies…
looking for conflicting packages…

Packages (1) archlinux-keyring-20160812-1

Total Download Size: 0.57 MiB
Total Installed Size: 0.78 MiB
Net Upgrade Size: 0.01 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages…
archlinux-keyring-20160812-1-any 582.7 KiB 164K/s 00:04 [###################################################] 100%
(1/1) checking keys in keyring [###################################################] 100%
(1/1) checking package integrity [###################################################] 100%
(1/1) loading package files [###################################################] 100%
(1/1) checking for file conflicts [###################################################] 100%
(1/1) checking available disk space [###################################################] 100%
:: Processing package changes…
(1/1) upgrading archlinux-keyring [###################################################] 100%
==> Appending keys from archlinux.gpg…
==> Locally signing trusted keys in keyring…
-> Locally signing key 0E8B644079F599DFC1DDC3973348882F6AC6A4C2…
-> Locally signing key 684148BB25B49E986A4944C55184252D824B18E8…
-> Locally signing key 91FFE0700E80619CEB73235CA88E23E377514E00…
-> Locally signing key 44D4A033AC140143927397D47EFD567D4C7EA887…
-> Locally signing key 27FFC4769E19F096D41D9265A04F9397CDFD6BB0…
-> Locally signing key AB19265E5D7D20687D303246BA1DFB64FFF979E7…
==> Importing owner trust values…
==> Disabling revoked keys in keyring…
-> Disabling key F5A361A3A13554B85E57DDDAAF7EF7873CFD4BB6…
-> Disabling key 7FA647CD89891DEDC060287BB9113D1ED21E1A55…
-> Disabling key D4DE5ABDE2A7287644EAC7E36D1A9E70E19DAA50…
-> Disabling key BC1FBE4D2826A0B51E47ED62E2539214C6C11350…
-> Disabling key 9515D8A8EAB88E49BB65EDBCE6B456CAF15447D5…
-> Disabling key 4A8B17E20B88ACA61860009B5CED81B7C2E5C0D2…
-> Disabling key 63F395DE2D6398BBE458F281F2DBB4931985A992…
-> Disabling key 0B20CA1931F5DA3A70D0F8D2EA6836E1AB441196…
-> Disabling key 8F76BEEA0289F9E1D3E229C05F946DED983D4366…
-> Disabling key 66BD74A036D522F51DD70A3C7F2A16726521E06D…
-> Disabling key 81D7F8241DB38BC759C80FCE3A726C6170E80477…
-> Disabling key E7210A59715F6940CF9A4E36A001876699AD6E84…
==> Updating trust database…
gpg: next trustdb check due at 2016-10-19

resolving dependencies…
looking for conflicting packages…

Packages (1) agg-2.5-8

Total Download Size: 0.25 MiB
Total Installed Size: 1.90 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages…
agg-2.5-8-x86_64 257.1 KiB 127K/s 00:02 [###################################################] 100%
(1/1) checking keys in keyring [###################################################] 100%
(1/1) checking package integrity [###################################################] 100%
(1/1) loading package files [###################################################] 100%
(1/1) checking for file conflicts [###################################################] 100%
(1/1) checking available disk space [###################################################] 100%
:: Processing package changes…
(1/1) installing agg [###################################################] 100%
==> Checking buildtime dependencies…
==> Retrieving sources…
-> Downloading exact-image-0.9.1.tar.bz2…
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 292k 100 292k 0 0 544k 0 --:–:-- --:–:-- --:–:-- 544k
-> Found exact-image-giflib.patch
-> Found exact-image-libpng.patch
-> Found exact-image-libungif.patch
==> Validating source files with md5sums…
exact-image-0.9.1.tar.bz2 … Passed
exact-image-giflib.patch … Passed
exact-image-libpng.patch … Passed
exact-image-libungif.patch … Passed
==> Extracting sources…
-> Extracting exact-image-0.9.1.tar.bz2 with bsdtar
==> Starting prepare()…
patching file codecs/gif.cc
patching file codecs/png.cc
Hunk #9 succeeded at 247 with fuzz 1.
patching file codecs/Makefile
==> Starting build()…
checking whether the C++ compiler works … yes
checking for C++ STL support … yes
checking for C++ templates … yes
checking for C++ template specialization … yes
checking for C++ partial template specialization … yes
checking whether C++ supports templates … yes
checking for header iostream … found
checking for header string … found
checking for header iostream … found
checking for header sstream … found
checking for header fstream … found
checking for package x11 (atleast 11.0) … yes (11.0)
checking for package libagg (atleast 2.3) … yes (2.5.0)
checking for package freetype2 (atleast 9.5.0) … yes (18.3.12)
checking for package evas (atleast 0.9.9) … no

Enlightenment Evas was not found - edisplay is disabled.
Evas can be obtained from: www.enlightenment.org

checking for header Evas_Engine_GL_X11.h … not found
checking for package libjpeg … yes
checking for package libtiff … yes
checking for package libpng (atleast 1.2) … yes (1.6.22)
checking for package libungif … yes
checking for package jasper … yes
checking for package expat … yes
checking for package OpenEXR (atleast 1.2.0) … yes (2.2.0)
checking for package lcms (atleast 1.10) … no
checking for package bardecode … no
For optional, proprietary barcode recognition, place it in ‘external/’.

checking for package swig (atleast 1.3.32) … no
checking for package lua (atleast 5.1) … yes (5.3.3)
checking for package perl (atleast 5.8.0) … yes (5.24.0)
checking for package php (atleast 5.2.0) … no
checking for package python (atleast 2.5.0) … yes (3.5.1)
checking for package ruby (atleast 1.8.5) … yes (2.3.1p112)
C++ objdir/lib/optimize2bw.o
C++ objdir/lib/Colorspace.o
C++ objdir/lib/hocr.o
C++ objdir/lib/low-level.o
C++ objdir/lib/crop.o
C++ objdir/lib/FG-Matrix.o
C++ objdir/lib/rotate.o
C++ objdir/lib/ContourUtility.o
C++ objdir/lib/Matrix.o
C++ objdir/lib/canvas.o
C++ objdir/lib/scale.o
C++ objdir/lib/empty-page.o
C++ objdir/lib/segmentation.o
C++ objdir/lib/ContourMatching.o
C++ objdir/lib/Image2.o
C++ objdir/lib/GaussianBlur.o
C++ objdir/lib/riemersma.o
C++ objdir/lib/Image.o
C++ objdir/lib/floyd-steinberg.o
C++ objdir/lib/agg.o
C++ objdir/lib/DistanceMatrix.o
C++ objdir/lib/vectorial.o
C++ objdir/lib/Contours.o
LINK LIB objdir/lib/lib.a
C++ objdir/codecs/dcraw.o
In file included from codecs/dcraw.cc:137:0:
codecs/dcraw.h: In function ‘void dcraw::adobe_coeff(const char*, const char*)’:
codecs/dcraw.h:7403:18: warning: iteration 3 invokes undefined behavior [-Waggressive-loop-optimizations]
cam_xyz[0][j] = table[i].trans[j] / 10000.0;
^~~~~~~~~~~~~~~
codecs/dcraw.h:7402:14: note: within this loop
for (j=0; j < 12; j++)
^~
codecs/dcraw.h: In function ‘void dcraw::kodak_radc_load_raw()’:
codecs/dcraw.h:2007:29: warning: iteration 386 invokes undefined behavior [-Waggressive-loop-optimizations]
buf[c][0][i] = (buf[c][0][i] * val + x) >> s;
~^
codecs/dcraw.h:2006:19: note: within this loop
for (i=0; i < sizeof(buf[0])/sizeof(short); i++)
^
~~~~~~~~~~~
codecs/dcraw.h:1998:18: warning: iteration 386 invokes undefined behavior [-Waggressive-loop-optimizations]
buf[0][0][i] = 2048;
~^~
codecs/dcraw.h:1997:15: note: within this loop
for (i=0; i < sizeof(buf)/sizeof(short); i++)
^
~~~~~~~~~~
codecs/dcraw.h: In function ‘void dcraw::foveon_interpolate()’:
codecs/dcraw.h:3150:35: warning: iteration 2 invokes undefined behavior [-Waggressive-loop-optimizations]
ddft[0][0][i] = ddft[1][0][i] +
^
codecs/dcraw.h:3149:17: note: within this loop
for (i=0; i < 6; i++)
^
codecs/dcraw.h:3104:35: warning: iteration 2 invokes undefined behavior [-Waggressive-loop-optimizations]
ddft[0][0][i] = ddft[1][0][i] +
^
codecs/dcraw.h:3103:17: note: within this loop
for (i=0; i < 6; i++)
^
codecs/dcraw.h: In function ‘void dcraw::parse_mos(int)’:
codecs/dcraw.h:5220:17: warning: iteration 3 invokes undefined behavior [-Waggressive-loop-optimizations]
romm_cam[0][i] = int_to_float(get4());
~^
~
codecs/dcraw.h:5219:19: note: within this loop
for (i=0; i < 9; i++)
^
codecs/dcraw.h: In function ‘void dcraw::parse_phase_one(int)’:
codecs/dcraw.h:6254:19: warning: iteration 3 invokes undefined behavior [-Waggressive-loop-optimizations]
romm_cam[0][i] = getreal(11);
~^
codecs/dcraw.h:6253:14: note: within this loop
for (i=0; i < 9; i++)
^
C++ objdir/codecs/openexr.o
C++ objdir/codecs/agg_svg_path_renderer.o
C++ objdir/codecs/png.o
C++ objdir/codecs/agg_svg_parser.o
C++ objdir/codecs/xpm.o
C++ objdir/codecs/raw.o
C++ objdir/codecs/agg_svg_path_tokenizer.o
C++ objdir/codecs/bmp.o
C++ objdir/codecs/pnm.o
C++ objdir/codecs/jpeg.o
C++ objdir/codecs/eps.o
C++ objdir/codecs/pdf.o
C++ objdir/codecs/tiff.o
C++ objdir/codecs/pcx.o
C++ objdir/codecs/gif.o
C++ objdir/codecs/tga.o
C++ objdir/codecs/Codecs.o
C++ objdir/codecs/ps.o
C++ objdir/codecs/jpeg2000.o
C++ objdir/codecs/svg.o
C objdir/codecs/transupp.o
codecs/transupp.c: In function ‘jtransform_request_workspace’:
codecs/transupp.c:923:7: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
ERREXIT(srcinfo, “Invalid crop request”); /* was: JERR_BAD_CROP_SPEC */
^

codecs/transupp.c:933:7: warning: assignment makes integer from pointer without a cast [-Wint-conversion]
ERREXIT(srcinfo, “Invalid crop request”); /* was: JERR_BAD_CROP_SPEC */
^

LINK LIB objdir/codecs/lib.a
C++ objdir/bardecode/Scanner.o
LINK LIB objdir/bardecode/bardecode.a
C++ objdir/utility/ArgumentList.o
C++ objdir/utility/File.o
C++ objdir/frontends/optimize2bw.o
LINK EXEC objdir/frontends/optimize2bw
C++ objdir/frontends/bardecode.o
LINK EXEC objdir/frontends/bardecode
C++ objdir/frontends/hocr2pdf.o
LINK EXEC objdir/frontends/hocr2pdf
C++ objdir/frontends/edentify.o
LINK EXEC objdir/frontends/edentify
C++ objdir/frontends/empty-page.o
LINK EXEC objdir/frontends/empty-page
C++ objdir/frontends/e2mtiff.o
LINK EXEC objdir/frontends/e2mtiff
C++ objdir/frontends/econvert.o
LINK EXEC objdir/frontends/econvert
rm objdir/frontends/bardecode.o objdir/frontends/edentify.o objdir/frontends/hocr2pdf.o objdir/frontends/e2mtiff.o objdir/frontends/econvert.o objdir/frontends/empty-page.o objdir/frontends/optimize2bw.o
==> Entering fakeroot environment…
==> Starting package()…
C++ objdir/frontends/optimize2bw.o
LINK EXEC objdir/frontends/optimize2bw
C++ objdir/frontends/bardecode.o
In file included from bardecode/Scanner.tcc:22:0,
from bardecode/Scanner.hh:186,
from frontends/bardecode.cc:31:
bardecode/code25i.hh:34:36: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double BarDecode::code25i_t::n_lq’ of non-integral type [-fpermissive]
static const double n_lq = 15;
^~
bardecode/code25i.hh:35:36: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double BarDecode::code25i_t::n_hq’ of non-integral type [-fpermissive]
static const double n_hq = 5.3;
^

bardecode/code25i.hh:36:36: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double BarDecode::code25i_t::w_lq’ of non-integral type [-fpermissive]
static const double w_lq = 5.2;
^

bardecode/code25i.hh:37:36: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double BarDecode::code25i_t::w_hq’ of non-integral type [-fpermissive]
static const double w_hq = 1.5;
^

bardecode/code25i.hh:38:35: error: ‘constexpr’ needed for in-class initialization of static data member ‘const double BarDecode::code25i_t::tol’ of non-integral type [-fpermissive]
static const double tol = 0.2;
^

In file included from bardecode/Scanner.tcc:19:0,
from bardecode/Scanner.hh:186,
from frontends/bardecode.cc:31:
bardecode/scanner_utils.hh:292:14: warning: ‘bool BarDecode::{anonymous}::scanner_utilities::get_parity(const BarDecode::bar_vector_t&, BarDecode::u_t)’ defined but not used [-Wunused-function]
bool get_parity(const bar_vector_t& v, u_t u)
^~~~~~~~~~
bardecode/scanner_utils.hh:44:14: warning: ‘void BarDecode::{anonymous}::debug::print_bar_vector(const BarDecode::bar_vector_t&)’ defined but not used [-Wunused-function]
void print_bar_vector(const bar_vector_t& b)
^~~~~~~~~~~~~~~~
build/bottom.make:57: recipe for target ‘objdir/frontends/bardecode.o’ failed
make: *** [objdir/frontends/bardecode.o] Error 1
==> ERROR: A failure occurred in package().
Aborting…
$[/code]

And here’s my inxi -F:

[code]$ inxi -F

System: Host: me Kernel: 4.4.17-1-MANJARO x86_64 (64 bit) Desktop: KDE Plasma 5.7.3

       Distro: Manjaro Linux

Machine: System: Dell product: Inspiron 24-5459 v: X00

       Mobo: Dell model: 0WCWFJ v: A00 Bios: Dell v: 2.1.2 date: 11/06/2015

CPU: Quad core Intel Core i5-6400T (-MCP-) cache: 6144 KB
clock speeds: max: 2800 MHz 1: 937 MHz 2: 2300 MHz 3: 2299 MHz 4: 2300 MHz

Graphics: Card-1: Intel HD Graphics 530

       Card-2: NVIDIA GM108M [GeForce 930M]

       Display Server: X.Org 1.17.4 driver: intel Resolution: 1920x1080@60.00hz

       GLX Renderer: Mesa DRI Intel HD Graphics 530 (Skylake GT2) GLX Version: 3.0 Mesa 12.0.1

Audio: Card Intel Sunrise Point-H HD Audio driver: snd_hda_intel Sound: ALSA v: k4.4.17-1-MANJARO

Network: Card-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller driver: r8168

       IF: enp2s0 state: up speed: 100 Mbps duplex: full mac: f4:8e:38:80:9b:99

       Card-2: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter driver: ath9k

       IF: wlp4s0 state: down mac: b0:c0:90:1c:82:71

       Card-3: Atheros

       IF: null-if-id state: N/A speed: N/A duplex: N/A mac: N/A

Drives: HDD Total Size: 1000.2GB (12.2% used) ID-1: /dev/sda model: ST1000LM024_HN size: 1000.2GB

Partition: ID-1: / size: 909G used: 105G (13%) fs: ext4 dev: /dev/sda1

       ID-2: swap-1 size: 9.45GB used: 0.00GB (0%) fs: swap dev: /dev/sda2

Sensors: System Temperatures: cpu: 29.8C mobo: 27.8C

       Fan Speeds (in rpm): cpu: N/A fan-1: 2045

Info: Processes: 169 Uptime: 2:08 Memory: 3403.9/7892.0MB Client: Shell (bash) inxi: 2.3.0
$[/code]

#8

I tried, but there were errors in the output I could not interprete. Like @crazyg4merz, I am quite happy with what I have got from the repos or otherwise. My question is quite general, but my example — ExactImage — was not easy (for me).

#9

Try adding this to the PKGBUILD in the

./configure --prefix=/usr \
  --without-bardecode

I see that the gentoo ebuild has that option too.

#10

I’ve just added this and then I’ve run makepkg -sri again, but, surprisingly, the output is exactly the same.

#11

My bad. The build process should be fixed now. Please try again and let me know.

3 Likes
#12

It depends on your PC arch, as PKGBUILD has usually support for both i686 and x86_64, but you can try cross-architecture building with some helper scripts available in devtools package.

You can also encounter noarch packages which are basically arch independent (e.g. python, perl, etc.).

1 Like
#13

It is just brilliant now! Thank you very much indeed.
I have tried it with pdfocr — https://github.com/gkovacs/pdfocr/
It works really fine.

I wish pdfocr could use 2+ languages like djvubind can. It seems to be unable yet. Please let me know if you are aware of a script which can ocr pdfs with 2+ languages.