diff --git a/fixtures/mecab/mecab-0.996.tgz b/fixtures/mecab/mecab-0.996.tgz new file mode 100644 index 000000000..81ec112f6 Binary files /dev/null and b/fixtures/mecab/mecab-0.996.tgz differ diff --git a/manifest.yml b/manifest.yml index cb075c313..242cf36ae 100644 --- a/manifest.yml +++ b/manifest.yml @@ -2,7 +2,7 @@ language: python default_versions: - name: python - version: 2.7.14 + version: 3.6.5 dependency_deprecation_dates: - version_line: 2.7.x name: python @@ -133,6 +133,12 @@ dependencies: sha256: f7cddbb5f5c640311eb00eab6e849f7701fa70bf6a183fc8a2c33dd1d1672fb2 cf_stacks: - cflinuxfs2 +- name: mecab + version: 0.996 + uri: https://raw.githubusercontent.com/Sunmx/python-buildpack/master/fixtures/mecab/mecab-0.996.tgz + sha256: e5ad542dced00342b280f0c58a3e9825fa26abf3c936e470f6727381192aeb56 + cf_stacks: + - cflinuxfs2 include_files: - CHANGELOG - CONTRIBUTING.md diff --git a/src/python/supply/supply.go b/src/python/supply/supply.go index 41f3b02e9..efda22cdd 100644 --- a/src/python/supply/supply.go +++ b/src/python/supply/supply.go @@ -90,6 +90,11 @@ func RunPython(s *Supplier) error { s.Log.Error("Could not install python: %v", err) return err } + + if err := s.InstallMecab(); err != nil { + s.Log.Error("Could not install mecab: %v", err) + return err + } if err := s.InstallPip(); err != nil { s.Log.Error("Could not install pip: %v", err) @@ -291,6 +296,37 @@ func (s *Supplier) InstallPython() error { return nil } +func (s *Supplier) InstallMecab() error { + var dep libbuildpack.Dependency + + dep.Name = "mecab" + dep.Version = "0.996" + + mecabInstallDir := filepath.Join(s.Stager.DepDir(), "mecab") + if err := s.Installer.InstallDependency(dep, mecabInstallDir); err != nil { + return err + } + + if err := s.Stager.LinkDirectoryInDepDir(filepath.Join(mecabInstallDir, "bin"), "bin"); err != nil { + return err + } + if err := s.Stager.LinkDirectoryInDepDir(filepath.Join(mecabInstallDir, "lib"), "lib"); err != nil { + return err + } + if err := s.Stager.LinkDirectoryInDepDir(filepath.Join(mecabInstallDir, "include"), "include"); err != nil { + return err + } + if err := s.Stager.LinkDirectoryInDepDir(filepath.Join(mecabInstallDir, "etc"), "etc"); err != nil { + return err + } + + if err := os.Setenv("LD_LIBRARY_PATH", fmt.Sprintf("%s:%s", filepath.Join(s.Stager.DepDir(), "lib"), os.Getenv("LD_LIBRARY_PATH"))); err != nil { + return err + } + + return nil +} + func (s *Supplier) RewriteShebangs() error { files, err := filepath.Glob(filepath.Join(s.Stager.DepDir(), "bin", "*")) if err != nil {