new package: pdftk (#8166)
This commit is contained in:
		 Elizabeth Fischer
					Elizabeth Fischer
				
			
				
					committed by
					
						 scheibelp
						scheibelp
					
				
			
			
				
	
			
			
			 scheibelp
						scheibelp
					
				
			
						parent
						
							0f1a1ae94e
						
					
				
				
					commit
					3cbae250f0
				
			| @@ -0,0 +1,69 @@ | ||||
| ############################################################################## | ||||
| # Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC. | ||||
| # Produced at the Lawrence Livermore National Laboratory. | ||||
| # | ||||
| # This file is part of Spack. | ||||
| # Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||
| # LLNL-CODE-647188 | ||||
| # | ||||
| # For details, see https://github.com/spack/spack | ||||
| # Please also see the NOTICE and LICENSE files for our notice and the LGPL. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU Lesser General Public License (as | ||||
| # published by the Free Software Foundation) version 2.1, February 1999. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||
| # conditions of the GNU Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this program; if not, write to the Free Software | ||||
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
| from spack import * | ||||
| import os | ||||
|  | ||||
|  | ||||
| class EclipseGcjParser(Package): | ||||
|     """GCJ requires the Eclipse Java parser, but does not ship with it. | ||||
|     This builds that parser into an executable binary, thereby | ||||
|     making GCJ work.""" | ||||
|  | ||||
|     homepage = "https://github.com/spack/spack/issues/8165" | ||||
|     url = "ftp://sourceware.org/pub/java/ecj-4.8.jar" | ||||
|     # Official download found at (see ecj-4.8M4.jar and ecjsrc-4.8M4.jar) | ||||
|     # http://download.eclipse.org/eclipse/downloads/drops4/S-4.8M4-201712062000/ | ||||
|  | ||||
|     maintainers = ['citibeth'] | ||||
|  | ||||
|     version('4.8', 'd7cd6a27c8801e66cbaa964a039ecfdb', expand=False) | ||||
|  | ||||
|     phases = ('build', 'install') | ||||
|  | ||||
|     @property | ||||
|     def gcj(self): | ||||
|         """Obtain Executable for the gcj included with this GCC, | ||||
|         even in the face of GCC binaries with version numbers | ||||
|         included in their names.""" | ||||
|  | ||||
|         dir, gcc = os.path.split(str(self.compiler.cc)) | ||||
|         if 'gcc' not in gcc: | ||||
|             raise ValueError( | ||||
|                 'Package {0} requires GCC to build'.format(self.name)) | ||||
|  | ||||
|         return Executable(join_path(dir, gcc.replace('gcc', 'gcj'))) | ||||
|  | ||||
|     def build(self, spec, prefix): | ||||
|         self.gcj( | ||||
|             '-o', 'ecj1', | ||||
|             '--main=org.eclipse.jdt.internal.compiler.batch.GCCMain', | ||||
|             'ecj-4.8.jar') | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         mkdirp(spec.prefix.bin) | ||||
|         install('ecj1', spec.prefix.bin) | ||||
|  | ||||
|     def setup_environment(self, spack_env, run_env): | ||||
|         run_env.prepend_path('PATH', self.prefix.bin) | ||||
							
								
								
									
										102
									
								
								var/spack/repos/builtin/packages/pdftk/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								var/spack/repos/builtin/packages/pdftk/package.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,102 @@ | ||||
| ############################################################################## | ||||
| # Copyright (c) 2013-2018, Lawrence Livermore National Security, LLC. | ||||
| # Produced at the Lawrence Livermore National Laboratory. | ||||
| # | ||||
| # This file is part of Spack. | ||||
| # Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved. | ||||
| # LLNL-CODE-647188 | ||||
| # | ||||
| # For details, see https://github.com/spack/spack | ||||
| # Please also see the NOTICE and LICENSE files for our notice and the LGPL. | ||||
| # | ||||
| # This program is free software; you can redistribute it and/or modify | ||||
| # it under the terms of the GNU Lesser General Public License (as | ||||
| # published by the Free Software Foundation) version 2.1, February 1999. | ||||
| # | ||||
| # This program is distributed in the hope that it will be useful, but | ||||
| # WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF | ||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and | ||||
| # conditions of the GNU Lesser General Public License for more details. | ||||
| # | ||||
| # You should have received a copy of the GNU Lesser General Public | ||||
| # License along with this program; if not, write to the Free Software | ||||
| # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||||
| ############################################################################## | ||||
| from spack import * | ||||
| import os | ||||
|  | ||||
|  | ||||
| class Pdftk(MakefilePackage): | ||||
|     """PDFtk Server is a command-line tool for working with PDFs. It is | ||||
|     commonly used for client-side scripting or server-side processing | ||||
|     of PDFs.""" | ||||
|  | ||||
|     homepage = "https://www.pdflabs.com/tools/pdftk-server" | ||||
|     url      = "https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk-2.02-src.zip" | ||||
|     # Alternative download locations: | ||||
|     # https://sources.debian.org/src/pdftk/ | ||||
|     # http://archive.ubuntu.com/ubuntu/pool/universe/p/pdftk/pdftk_2.02.orig.tar.gz | ||||
|  | ||||
|     maintainers = ['citibeth'] | ||||
|  | ||||
|     version('2.02', '6534365fd6727724f288a556ede33faa') | ||||
|  | ||||
|     depends_on('eclipse-gcj-parser', type='build') | ||||
|  | ||||
|     # Only takes effect in phases not overridden here | ||||
|     build_directory = 'pdftk' | ||||
|  | ||||
|     # https://www.pdflabs.com/docs/install-pdftk-on-redhat-or-centos/ | ||||
|     def edit(self, spec, prefix): | ||||
|  | ||||
|         # ------ Fix install directory in main Makefile | ||||
|         makefile = FileFilter(join_path('pdftk', 'Makefile.Base')) | ||||
|         makefile.filter('/usr/local/bin', spec.prefix.bin) | ||||
|  | ||||
|         # ------ Create new config file | ||||
|         compiler = self.compiler | ||||
|         gcc_base = os.path.split(os.path.split(compiler.cxx)[0])[0] | ||||
|         gcc_version = compiler.version | ||||
|  | ||||
|         cppflags = ( | ||||
|             '-DPATH_DELIM=0x2f', | ||||
|             '-DASK_ABOUT_WARNINGS=false', | ||||
|             '-DUNBLOCK_SIGNALS', | ||||
|             '-fdollars-in-identifiers') | ||||
|         cxxflags = ('-Wall', '-Wextra', '-Weffc++', '-O2') | ||||
|         gcjflags = ('-Wall', '-Wextra', '-O2') | ||||
|         vars = [ | ||||
|             ('VERSUFF', '-%s' % gcc_version), | ||||
|             ('CXX', compiler.cxx), | ||||
|             ('GCJ', spec['eclipse-gcj-parser'].package.gcj), | ||||
|             ('GCJH', join_path(gcc_base, 'bin', 'gcjh')), | ||||
|             ('GJAR', join_path(gcc_base, 'bin', 'gjar')), | ||||
|             ('LIBGCJ', join_path( | ||||
|                 gcc_base, 'share', 'java', | ||||
|                 'libgcj-{0}.jar'.format(gcc_version))), | ||||
|             ('AR', 'ar'), | ||||
|             ('RM', 'rm'), | ||||
|             ('ARFLAGS', 'rs'), | ||||
|             ('RMFLAGS', '-vf'), | ||||
|             ('CPPFLAGS', ' '.join(cppflags)), | ||||
|             ('CXXFLAGS', ' '.join(cxxflags)), | ||||
|             ('GCJFLAGS', ' '.join(gcjflags)), | ||||
|             ('GCJHFLAGS', '-force'), | ||||
|             ('LDLIBS', '-lgcj') | ||||
|         ] | ||||
|         with open(join_path('pdftk', 'Makefile.Spack'), 'w') as mk: | ||||
|             for var, val in vars: | ||||
|                 mk.write("export {0}={1}\n".format(var, str(val))) | ||||
|             mk.write('include Makefile.Base\n') | ||||
|  | ||||
|     def build(self, spec, prefix): | ||||
|         compiler = self.compiler | ||||
|         gcc_base = os.path.split(os.path.split(compiler.cxx)[0])[0] | ||||
|         env['PATH'] = join_path(gcc_base, 'bin') + ':' + env['PATH'] | ||||
|         with working_dir(self.build_directory): | ||||
|             make('-f', 'Makefile.Spack', parallel=False) | ||||
|  | ||||
|     def install(self, spec, prefix): | ||||
|         mkdirp(self.spec.prefix.bin) | ||||
|         with working_dir(self.build_directory): | ||||
|             make('-f', 'Makefile.Spack', 'install', parallel=False) | ||||
		Reference in New Issue
	
	Block a user