Ravenports generated: 26 Jun 2018 16:20
[ravenports.git] / bucket_1B / unrar
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               unrar
4 VERSION=                5.6.5
5 KEYWORDS=               archivers
6 VARIANTS=               standard
7 SDESC[standard]=        RAR uncompression program and library
8 HOMEPAGE=               https://www.rarlab.com/
9 CONTACT=                nobody
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            https://www.rarlab.com/rar/
13 DISTFILE[1]=            unrarsrc-5.6.5.tar.gz:main
14 DF_INDEX=               1
15 SPKGS[standard]=        single
16
17 OPTIONS_AVAILABLE=      none
18 OPTIONS_STANDARD=       none
19
20 USES=                   ssl c++:single
21
22 DISTNAME=               unrar
23
24 LICENSE=                CUSTOM1:single
25 LICENSE_NAME=           CUSTOM1:"unRAR License"
26 LICENSE_FILE=           CUSTOM1:{{WRKSRC}}/license.txt
27 LICENSE_SCHEME=         solo
28
29 BUILD_TARGET=           unrar lib
30 MAKEFILE=               makefile
31
32 CPPFLAGS=               -I{{OPENSSLINC}}
33                         -DOPENSSL_AES
34 LDFLAGS=                -L{{OPENSSLLIB}}
35                         -lcrypto
36
37 do-install:
38         @${MKDIR} ${STAGEDIR}${PREFIX}/include/unrar
39         ${INSTALL_PROGRAM} ${WRKSRC}/unrar ${STAGEDIR}${PREFIX}/bin/
40         ${INSTALL_DATA} ${WRKSRC}/libunrar.a ${STAGEDIR}${PREFIX}/lib/
41         ${INSTALL_LIB} ${WRKSRC}/libunrar.so ${STAGEDIR}${PREFIX}/lib/libunrar.so.5
42         ${LN} -s libunrar.so.5 ${STAGEDIR}${PREFIX}/lib/libunrar.so
43         ${INSTALL_DATA} ${WRKSRC}/dll.hpp ${STAGEDIR}${PREFIX}/include/unrar/dll.hpp
44
45 [FILE:428:descriptions/desc.single]
46 The unRAR utility is a freeware program, distributed with source code and
47 developed for extracting, testing and viewing the contents of archives
48 created with the RAR archiver, version 1.50 and above.
49
50 The UnRAR library and utility are a minor part of the RAR archiver and
51 contain the RAR uncompression algorithm. UnRAR requires a very small
52 amount of memory to operate. It can be used by other programs to extract
53 RAR archives.
54
55
56 [FILE:100:distinfo]
57 eba36a421bf41491818dee9507d934064622bc0bd9db6bbb8422a4706f200898       226296 unrarsrc-5.6.5.tar.gz
58
59
60 [FILE:77:manifests/plist.single]
61 bin/unrar
62 include/unrar/dll.hpp
63 lib/
64  libunrar.a
65  libunrar.so
66  libunrar.so.5
67
68
69 [FILE:1557:patches/patch-makefile]
70 --- makefile.orig       2017-11-22 06:53:39 UTC
71 +++ makefile
72 @@ -2,14 +2,13 @@
73  # Makefile for UNIX - unrar
74  
75  # Linux using GCC
76 -CXX=c++
77 -CXXFLAGS=-O2 -Wno-logical-op-parentheses -Wno-switch -Wno-dangling-else
78 -LIBFLAGS=-fPIC
79 -DEFINES=-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP
80 -STRIP=strip
81 -AR=ar
82 -LDFLAGS=-pthread
83 -DESTDIR=/usr
84 +CXX?=          c++
85 +CXXFLAGS?=     -O2 -Wno-logical-op-parentheses -Wno-switch -Wno-dangling-else
86 +DEFINES=       -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -DRAR_SMP
87 +STRIP?=                strip
88 +AR?=           ar
89 +LDFLAGS+=      -pthread
90 +DESTDIR?=      /usr
91  
92  # Linux using LCC
93  #CXX=lcc
94 @@ -128,9 +127,16 @@ OBJECTS=rar.o strlist.o strfn.o pathfn.o
95         rijndael.o getbits.o sha1.o sha256.o blake2s.o hash.o extinfo.o extract.o volume.o \
96    list.o find.o unpack.o headers.o threadpool.o rs16.o cmddata.o ui.o
97  
98 +.SUFFIXES:     .so
99 +
100 +SOBJECTS=      ${OBJECTS:.o=.so} ${LIB_OBJ:.o=.so}
101 +
102  .cpp.o:
103         $(COMPILE) -D$(WHAT) -c $<
104  
105 +.cpp.so:
106 +       $(COMPILE) -DRARDLL -fPIC -o ${.TARGET} -c ${.IMPSRC}
107 +
108  all:   unrar
109  
110  install:       install-unrar
111 @@ -151,13 +157,11 @@ sfx:      clean $(OBJECTS)
112         $(LINK) -o default.sfx $(LDFLAGS) $(OBJECTS)
113         $(STRIP) default.sfx
114  
115 -lib:   WHAT=RARDLL
116 -lib:   CXXFLAGS+=$(LIBFLAGS)
117 -lib:   clean $(OBJECTS) $(LIB_OBJ)
118 +lib:   $(SOBJECTS)
119         @rm -f libunrar.so
120         @rm -f libunrar.a
121 -       $(LINK) -shared -o libunrar.so $(LDFLAGS) $(OBJECTS) $(LIB_OBJ)
122 -       $(AR) rcs libunrar.a $(OBJECTS) $(LIB_OBJ)
123 +       $(LINK) -shared -o libunrar.so $(LDFLAGS) -Wl,-soname,libunrar.so.5 $(SOBJECTS) 
124 +       $(AR) rcs libunrar.a $(SOBJECTS)
125  
126  install-unrar:
127                         install -D unrar $(DESTDIR)/bin/unrar
128
129
130 [FILE:213:patches/patch-os.hpp]
131 --- os.hpp.orig 2018-06-24 15:10:31 UTC
132 +++ os.hpp
133 @@ -161,6 +161,10 @@
134  #include <locale.h>
135  
136  
137 +#ifdef OPENSSL_AES
138 +#include <openssl/evp.h>
139 +#endif // OPENSSL_AES
140 +
141  #ifdef  S_IFLNK
142  #define SAVE_LINKS
143  #endif
144
145
146 [FILE:3006:patches/patch-rijndael.cpp]
147 --- rijndael.cpp.orig   2018-06-24 15:10:31 UTC
148 +++ rijndael.cpp
149 @@ -7,6 +7,8 @@
150   ***************************************************************************/
151  #include "rar.hpp"
152  
153 +#ifndef OPENSSL_AES
154 +
155  #ifdef USE_SSE
156  #include <wmmintrin.h>
157  #endif
158 @@ -56,6 +58,7 @@ inline void Copy128(byte *dest,const byt
159  #endif
160  }
161  
162 +#endif // OPENSSL_AES
163  
164  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
165  // API
166 @@ -63,14 +66,35 @@ inline void Copy128(byte *dest,const byt
167  
168  Rijndael::Rijndael()
169  {
170 +#ifndef OPENSSL_AES
171    if (S[0]==0)
172      GenerateTables();
173 +#endif // OPENSSL_AES
174    CBCMode = true; // Always true for RAR.
175  }
176  
177  
178  void Rijndael::Init(bool Encrypt,const byte *key,uint keyLen,const byte * initVector)
179  {
180 +#ifdef OPENSSL_AES
181 +  const EVP_CIPHER *cipher;
182 +  switch(keyLen)
183 +  {
184 +    case 128:
185 +      cipher = EVP_aes_128_cbc();
186 +      break;
187 +    case 192:
188 +      cipher = EVP_aes_192_cbc();
189 +      break;
190 +    case 256:
191 +      cipher = EVP_aes_256_cbc();
192 +      break;
193 +  }
194 +
195 +  EVP_CIPHER_CTX_init(&ctx);
196 +  EVP_CipherInit_ex(&ctx, cipher, NULL, key, initVector, Encrypt);
197 +  EVP_CIPHER_CTX_set_padding(&ctx, 0);
198 +#else // OPENSSL_AES
199  #ifdef USE_SSE
200    // Check SSE here instead of constructor, so if object is a part of some
201    // structure memset'ed before use, this variable is not lost.
202 @@ -111,6 +135,7 @@ void Rijndael::Init(bool Encrypt,const b
203  
204    if(!Encrypt)
205      keyEncToDec();
206 +#endif // OPENSSL_AES
207  }
208  
209  void Rijndael::blockEncrypt(const byte *input,size_t inputLen,byte *outBuffer)
210 @@ -118,6 +143,11 @@ void Rijndael::blockEncrypt(const byte *
211    if (inputLen <= 0)
212      return;
213  
214 +#ifdef OPENSSL_AES
215 +  int outLen;
216 +  EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen);
217 +  return;
218 +#else // OPENSSL_AES
219    size_t numBlocks = inputLen/16;
220  #ifdef USE_SSE
221    if (AES_NI)
222 @@ -176,6 +206,7 @@ void Rijndael::blockEncrypt(const byte *
223      input += 16;
224    }
225    Copy128(m_initVector,prevBlock);
226 +#endif // OPENSSL_AES
227  }
228  
229  
230 @@ -217,6 +248,11 @@ void Rijndael::blockDecrypt(const byte *
231    if (inputLen <= 0)
232      return;
233  
234 +#ifdef OPENSSL_AES
235 +  int outLen;
236 +  EVP_CipherUpdate(&ctx, outBuffer, &outLen, input, inputLen);
237 +  return;
238 +#else // OPENSSL_AES
239    size_t numBlocks=inputLen/16;
240  #ifdef USE_SSE
241    if (AES_NI)
242 @@ -279,6 +315,8 @@ void Rijndael::blockDecrypt(const byte *
243    }
244  
245    memcpy(m_initVector,iv,16);
246 +
247 +#endif // OPENSSL_AES
248  }
249  
250  
251 @@ -314,7 +352,7 @@ void Rijndael::blockDecryptSSE(const byt
252  }
253  #endif
254  
255 -
256 +#ifndef OPENSSL_AES
257  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
258  // ALGORITHM
259  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
260 @@ -454,7 +492,7 @@ void Rijndael::GenerateTables()
261      U1[b][0]=U2[b][1]=U3[b][2]=U4[b][3]=T5[i][0]=T6[i][1]=T7[i][2]=T8[i][3]=FFmul0e(b);
262    }
263  }
264 -
265 +#endif // OPENSSL_AES
266  
267  #if 0
268  static void TestRijndael();
269
270
271 [FILE:662:patches/patch-rijndael.hpp]
272 --- rijndael.hpp.orig   2018-06-24 15:10:31 UTC
273 +++ rijndael.hpp
274 @@ -16,6 +16,9 @@
275  class Rijndael
276  { 
277    private:
278 +#ifdef OPENSSL_AES
279 +    EVP_CIPHER_CTX ctx;
280 +#else // OPENSSL_AES
281  #ifdef USE_SSE
282      void blockEncryptSSE(const byte *input,size_t numBlocks,byte *outBuffer);
283      void blockDecryptSSE(const byte *input, size_t numBlocks, byte *outBuffer);
284 @@ -25,6 +28,7 @@ class Rijndael
285      void keySched(byte key[_MAX_KEY_COLUMNS][4]);
286      void keyEncToDec();
287      void GenerateTables();
288 +#endif // OPENSSL_AES
289  
290      // RAR always uses CBC, but we may need to turn it off when calling
291      // this code from other archive formats with CTR and other modes.
292