diff --git a/pecl/package.xml.in b/pecl/package.xml.in new file mode 100644 index 0000000..ca43925 --- /dev/null +++ b/pecl/package.xml.in @@ -0,0 +1,47 @@ + + + pdlib + pecl.php.net + PHP extension for Dlib + + This extension provide some machine learning capability to php via Dlib. + + + Malvin Lok + goodspb + goodspb.luo@gmail.com + yes + + %RELEASE_DATE% + + + %RELEASE_VERSION% + %RELEASE_VERSION% + + + %RELEASE_STABILITY% + %RELEASE_STABILITY% + + MIT + +- Add native vector_lenght() function which calculates the euclidean distance 80% faster + + +%RELEASE_FILES% + + + + + 7.2.0 + + + 1.4.0b1 + + + + pdlib + + \ No newline at end of file diff --git a/pecl/prep-release.php b/pecl/prep-release.php new file mode 100644 index 0000000..248a27b --- /dev/null +++ b/pecl/prep-release.php @@ -0,0 +1,162 @@ + array( + "pdlib.cc", + "pdlib.php", + "php_pdlib.h", + "config.{m4,w32}", + "src/*.{cc,h}", + "dlib/**/*.{cpp,h}", + "dlib/**/**/*.{cpp,h}", + "dlib/**/**/**/*.{cpp,h}", + ), + 'test' => array( + "tests/*.{phpt}", + ), + 'doc' => array( + "README*", + "LICENSE", + "CREDITS", + ) + ); + $files = array(); + foreach($dirs as $role => $patterns) { + foreach ($patterns as $pattern) { + foreach (glob($pattern, GLOB_BRACE) as $file) { + $files[$file] = $role; + } + } + } + ksort($files); + return $files; +} + +function format_open_dir($dir, $tab) { + return sprintf('%s', str_repeat(" ", $tab), $dir); +} +function format_close_dir($tab) { + return sprintf("%s", str_repeat(" ", $tab)); +} +function format_file($filename, $tab, $role) { + return sprintf('%s', str_repeat(" ", $tab+1), $role, $filename); +} +function make_tree($files) { + $retval = array(); + $lastdir = "."; + $tab = 2; + + $retval[] = format_open_dir("/", $tab); + foreach($files as $file => $role) { + $dir = dirname($file); + $filename = basename($file); + if ($dir != $lastdir) { + $currdir = explode("/", $dir); + $prevdir = explode("/", $lastdir); + foreach($currdir as $n => $d) { + if (isset($prevdir[$n]) && $prevdir[$n] == $d) { + /* In case we are shorter then previous */ + $n++; + continue; + } + break; + } + if ($lastdir != ".") { + foreach(array_reverse(array_slice($prevdir, $n)) as $close) { + $retval[] = format_close_dir($tab--); + } + } + foreach(array_slice($currdir, $n) as $open) { + $retval[] = format_open_dir($open, ++$tab); + } + } + $retval[] = format_file($filename, $tab, $role); + $lastdir = $dir; + } + foreach(array_reverse(explode("/", $lastdir)) as $close) { + $retval[] = format_close_dir($tab--); + } + $retval[] = format_close_dir($tab); + + return $retval; +} + +function usage() { + global $argv; + + echo "Usage:\n\t"; + echo $argv[0], " \n"; + + exit(1); +} + +if ($argc != 3) { + usage(); +} + +$VERSION = $argv[1]; +$STABILITY = $argv[2]; + +/* 0.x.y. are developmental releases and cannot be stable */ +if ((int)$VERSION < 1) { + $STABILITY = "devel"; +} + +/* A release candidate is a "beta" stability in terms of PECL */ +if (stristr($VERSION, '-rc') !== false) { + $STABILITY = "beta"; +} + +verify_stability($STABILITY); +verify_version($VERSION, $STABILITY); + +$currtime = new DateTime('now', new DateTimeZone('UTC')); +$DATE = $currtime->format('Y-m-d'); +$TIME = $currtime->format('H:i:s'); + +$TREE = make_tree(get_files()); + +$contents = file_get_contents(__DIR__ . "/package.xml.in"); + +$REPLACE = array( + "%RELEASE_DATE%" => $DATE, + "%RELEASE_TIME%" => $TIME, + "%RELEASE_VERSION%" => $VERSION, + "%RELEASE_STABILITY%" => $STABILITY, + "%RELEASE_FILES%" => join("\n", $TREE), +); + +$contents = str_replace(array_keys($REPLACE), array_values($REPLACE), $contents); + +file_put_contents(__DIR__ . "/../package.xml", $contents); +echo "Wrote package.xml\n"; +