summaryrefslogtreecommitdiff
path: root/libre/ruby/PKGBUILD
blob: e5e4c1d77f13fdd6d064ccbcf1210294683bb0e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# Maintainer (Arch): Thomas Dziedzic <gostrc@gmail.com>
# Contributor (Arch): Allan McRae <allan@archlinux.org>
# Contributor (Arch): John Proctor <jproctor@prium.net>
# Contributor (Arch): Jeramy Rutley <jrutley@gmail.com>

# Maintainer: fauno <fauno@parabola.nu>
# Contributor: Daniel Milewski <niitotantei@riseup.net>
# Contributor: André Silva <emulatorman@parabola.nu>
# Contributor: Luke Shumaker <lukeshu@parabola.nu>

# Rationale for inclusion in [libre]: Problematic license of
# generator.c in bundled json extension.
#
# https://labs.parabola.nu/issues/674
# https://bugs.ruby-lang.org/issues/11844
# https://github.com/flori/json/issues/277

pkgname=(ruby ruby-docs)
pkgver=2.4.1
_jsonver=2.0.2
pkgrel=3.parabola3
_srcrel=2 # increment this to rebuild the sourceball without bumping pkgver
arch=(i686 x86_64 armv7h)
url='http://www.ruby-lang.org/en/'
license=(BSD2 custom)
makedepends=(gdbm openssl libffi doxygen graphviz libyaml ttf-dejavu tk)
options=(!emptydirs)
source=(https://repo.parabola.nu/other/ruby-libre/ruby-${pkgver}-libre${_srcrel}.tar.gz
        gemrc)
sha1sums=('ca7ca50c2e96200062afe081bf82c2cfaa3d18a1'
          'dc536754c8fac2c3d82965c5a708cd8f79562d98')

mkdepends=('ruby') # for 'gem build'
mksource=(https://cache.ruby-lang.org/pub/ruby/${pkgver:0:3}/ruby-${pkgver}.tar.xz
          ruby-${pkgver}-remove-json-ext.patch
          ruby-${pkgver}-add-json_pure.patch
          json-${_jsonver}.tar.gz::https://github.com/flori/json/archive/v${_jsonver}.tar.gz
          json-${_jsonver}-ruby-${pkgver}-backports.patch
          json-${_jsonver}-libre.patch)
mksha512sums=('e6fd290b6edd166348b70f0f1c56f7ed9d956c4c1eb91d97d0548041ca4196b9b75ec1ad35c745bdbfd4de195899093e7205d7f02b014ecf1c48e6f31cf25903'
              'a7b6a5a6da4861ee51f3e9a9064c39ef1e5f2efb7d969f20f93028acfa0eed0264c336fce2eb1c6a3bdcdc595ef2cf3441b5db7cd4eebf5f24e5cb4a19a7d915'
              '29185acc7ea3ad48e805945e53717bfd8483a0581236eb49e63eb8e9f467ddcede38a606d089aa35e5fb73099a1ebdb253fc4c51a7933b900fc36918a43628b8'
              '405f09681808c108ec4a889f7628ede4aec15122c8a6848b5a7ec99a17bd8d72bf410152461164acd0f17d92a460732bf525c26a17b319b94dc940dccf6d3ebf'
              '1882619e98fa4b6cc2738c25ebf0ba957499f6b20f6837f23379b90700a6a751d0a9be85032f1c9e1d98f8d839784a3caa611266ad68e311dd3747cb0396b817'
              '53459f8971e87a3a5dfff3e72be5d27460a624eff06ccabb57bef1fd039c77d67f0f9eecdc03661c929d9eda9bff8f86383c9b16b15602a874bcf1914aecf633')

mksource() {
  # Start with the vanilla version of json
  cd "$srcdir/json-${_jsonver}"
  # Apply changes made to it for the ruby distribution
  patch -p1 -i ../json-${_jsonver}-ruby-${pkgver}-backports.patch
  # Modify it so that 'json' doesn't try to load (non-free!) 'json/ext'
  rm -rf -- json.gemspec ext lib/json/ext*
  patch -p1 -i ../json-${_jsonver}-libre.patch

  # Now modify the ruby sources to include the json_pure lib instead
  # of the json ext
  cd "$srcdir/ruby-${pkgver}"
  # remove the json ext
  rm -rv ext/json test/json
  patch -p1 -i ../ruby-${pkgver}-remove-json-ext.patch
  # and insert the json_pure lib
  cp -r  ../json-${_jsonver}/lib/*             -t lib/
  cp     ../json-${_jsonver}/json_pure.gemspec -t lib/json/
  cp -rT ../json-${_jsonver}/tests                test/json
  patch -p1 -i ../ruby-${pkgver}-add-json_pure.patch

  # Clean up the original json sources
  cd "$srcdir"
  rm -rf "json-${_jsonver}"
}

build() {
  cd ruby-${pkgver}

  PKG_CONFIG=/usr/bin/pkg-config ./configure \
    --prefix=/usr \
    --sysconfdir=/etc \
    --localstatedir=/var \
    --sharedstatedir=/var/lib \
    --libexecdir=/usr/lib/ruby \
    --enable-shared \
    --disable-rpath \
    --with-dbm-type=gdbm_compat

  make
}

check() {
  cd ruby-${pkgver}

  make test
}

package_ruby() {
  pkgdesc='An object-oriented language for quick and easy programming'
  depends=(gdbm openssl libffi libyaml gmp zlib)
  optdepends=(
      'ruby-docs: Ruby documentation'
      'tk: for Ruby/TK'
  )
  provides=(rubygems rake)
  conflicts=(rake)
  backup=(etc/gemrc)
  install=ruby.install

  cd ruby-${pkgver}

  make DESTDIR="${pkgdir}" install-nodoc

  install -D -m644 ${srcdir}/gemrc "${pkgdir}/etc/gemrc"

  install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby/LICENSE"
  install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby/BSDL"
}

package_ruby-docs() {
  pkgdesc='Documentation files for ruby'

  cd ruby-${pkgver}

  make DESTDIR="${pkgdir}" install-doc install-capi

  install -D -m644 COPYING "${pkgdir}/usr/share/licenses/ruby-docs/LICENSE"
  install -D -m644 BSDL "${pkgdir}/usr/share/licenses/ruby-docs/BSDL"

  # sometimes it installs ruby/capi/doxygen_objdb_XXXXXXX.tmp;
  # otherwise /usr/share/doc is empty
  rm -rf "$pkgdir/usr/share/doc"
}