Skip to content

Commit 736385a

Browse files
committed
next
1 parent 501b16f commit 736385a

5 files changed

Lines changed: 122 additions & 96 deletions

File tree

.github/workflows/build_nix.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ jobs:
1616

1717
- env:
1818
MKN_LIB_LINK_LIB: 1
19-
KUL_GIT_CO: --depth 1
19+
MKN_KUL_GIT_CO: --depth 1
2020
run: |
21-
curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix
21+
curl -fL --retry 3 --retry-delay 2 -o mkn https://github.com/mkn/mkn/releases/download/latest/mkn_nix
2222
chmod +x mkn
2323
KLOG=2 ./mkn clean build run -dtOa "-std=c++17 -fPIC"

.github/workflows/build_osx.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ jobs:
1616

1717
- env:
1818
MKN_LIB_LINK_LIB: 1
19-
KUL_GIT_CO: --depth 1
19+
MKN_KUL_GIT_CO: --depth 1
2020
run: |
21-
curl -Lo mkn https://github.com/mkn/mkn/releases/download/latest/mkn_arm_osx
21+
curl -fL --retry 3 --retry-delay 2 -o mkn https://github.com/mkn/mkn/releases/download/latest/mkn_arm_osx
2222
chmod +x mkn
2323
KLOG=2 ./mkn clean build run -dtOa "-std=c++17 -fPIC"

.github/workflows/build_win.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
arch: amd64
1919

2020
- env:
21-
KUL_GIT_CO: --depth 1
21+
MKN_KUL_GIT_CO: --depth 1
2222
MKN_CL_PREFERRED: 1
2323
shell: cmd
2424
run: | # /bin/link interferes with cl/link.exe

mkn.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ profile:
1414
dep: mkn&${maiken_location}(${maiken_scm})[mod]
1515
if_arg:
1616
win_shared: -DYAML_CPP_DLL
17-
shared: -DKUL_SHARED
17+
shared: -DMKN_KUL_SHARED
1818

1919
- name: test
2020
parent: base

mod.cpp

Lines changed: 116 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -33,113 +33,139 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3333

3434
#include "maiken/module/init.hpp"
3535

36-
namespace mkn {
37-
namespace python3 {
36+
namespace mkn
37+
{
38+
namespace python3
39+
{
3840

39-
class ModuleMaker : public maiken::Module {
40-
private:
41+
class ModuleMaker : public maiken::Module
42+
{
43+
private:
4144
#if defined(_WIN32)
42-
const bool config_expected = 0;
45+
const bool config_expected = 0;
4346
#else
44-
const bool config_expected = 1;
47+
const bool config_expected = 1;
4548
#endif
46-
bool pyconfig_found = 0;
47-
std::string HOME, PY = "python3", PYTHON, PY_CONFIG = "python-config",
48-
PY3_CONFIG = "python3-config",
49-
PATH = mkn::kul::env::GET("PATH");
50-
mkn::kul::Dir bin;
51-
std::shared_ptr<kul::cli::EnvVar> path_var;
49+
bool pyconfig_found = 0;
50+
std::string HOME, PY = "python3", PYTHON, PY_CONFIG = "python-config",
51+
PY3_CONFIG = "python3-config", PATH = mkn::kul::env::GET("PATH");
52+
mkn::kul::Dir bin;
53+
std::shared_ptr<kul::cli::EnvVar> path_var;
5254

53-
protected:
54-
static void VALIDATE_NODE(YAML::Node const &node) {
55-
using namespace mkn::kul::yaml;
56-
Validator({NodeValidator("args")}).validate(node);
57-
}
55+
protected:
56+
static void VALIDATE_NODE(YAML::Node const& node)
57+
{
58+
using namespace mkn::kul::yaml;
59+
Validator({NodeValidator("args")}).validate(node);
60+
}
5861

59-
public:
60-
void init(maiken::Application &a, YAML::Node const & /*node*/)
61-
KTHROW(std::exception) override {
62-
bool finally = 0;
63-
if (!kul::env::WHICH(PY.c_str())) PY = "python";
64-
PYTHON = mkn::kul::env::GET("PYTHON");
65-
if (!PYTHON.empty()) PY = PYTHON;
62+
public:
63+
void init(maiken::Application& a, YAML::Node const& /*node*/)
64+
KTHROW(std::exception) override
65+
{
66+
bool finally = 0;
67+
if (!kul::env::WHICH(PY.c_str()))
68+
PY = "python";
69+
PYTHON = mkn::kul::env::GET("PYTHON");
70+
if (!PYTHON.empty())
71+
PY = PYTHON;
6672
#if defined(_WIN32)
67-
if (PY.rfind(".exe") == std::string::npos) PY += ".exe";
73+
if (PY.rfind(".exe") == std::string::npos)
74+
PY += ".exe";
6875
#endif
69-
mkn::kul::Process p(PY);
70-
mkn::kul::ProcessCapture pc(p);
71-
HOME = mkn::kul::env::GET("PYTHON3_HOME");
72-
if (!HOME.empty()) {
76+
mkn::kul::Process p(PY);
77+
mkn::kul::ProcessCapture pc(p);
78+
HOME = mkn::kul::env::GET("PYTHON3_HOME");
79+
if (!HOME.empty())
80+
{
7381
#if defined(_WIN32)
74-
bin = mkn::kul::Dir(HOME);
75-
if (!bin) KEXCEPT(kul::Exception, "$PYTHON3_HOME does not exist");
82+
bin = mkn::kul::Dir(HOME);
83+
if (!bin)
84+
KEXCEPT(kul::Exception, "$PYTHON3_HOME does not exist");
7685
#else
77-
bin = mkn::kul::Dir("bin", HOME);
78-
if (!bin) KEXCEPT(kul::Exception, "$PYTHON3_HOME/bin does not exist");
86+
bin = mkn::kul::Dir("bin", HOME);
87+
if (!bin)
88+
KEXCEPT(kul::Exception, "$PYTHON3_HOME/bin does not exist");
7989
#endif
80-
path_var = std::make_shared<kul::cli::EnvVar>(
81-
"PATH", bin.real(), mkn::kul::cli::EnvVarMode::PREP);
82-
mkn::kul::env::SET(path_var->name(), path_var->toString().c_str());
83-
p.var(path_var->name(), path_var->toString());
84-
};
90+
path_var = std::make_shared<kul::cli::EnvVar>("PATH", bin.real(),
91+
mkn::kul::cli::EnvVarMode::PREP);
92+
mkn::kul::env::SET(path_var->name(), path_var->toString().c_str());
93+
p.var(path_var->name(), path_var->toString());
94+
};
8595
#if defined(_WIN32)
86-
pyconfig_found = false; // doesn't exist on windows (generally)
96+
pyconfig_found = false; // doesn't exist on windows (generally)
8797
#else
88-
pyconfig_found = mkn::kul::env::WHICH(PY3_CONFIG.c_str());
98+
pyconfig_found = mkn::kul::env::WHICH(PY3_CONFIG.c_str());
8999
#endif
90-
if (!pyconfig_found) {
91-
pyconfig_found = mkn::kul::env::WHICH(PY_CONFIG.c_str());
92-
PY3_CONFIG = PY_CONFIG;
93-
}
94-
try {
95-
p << "-c"
96-
<< "\"import sys; print(sys.version_info[0])\"";
97-
p.start();
100+
if (!pyconfig_found)
101+
{
102+
pyconfig_found = mkn::kul::env::WHICH(PY_CONFIG.c_str());
103+
PY3_CONFIG = PY_CONFIG;
104+
}
105+
try
106+
{
107+
p << "-c"
108+
<< "\"import sys; print(sys.version_info[0])\"";
109+
p.start();
98110

99-
if (!pyconfig_found && config_expected) {
100-
finally = 1;
101-
KEXCEPT(kul::Exception, "python-config does not exist on path");
102-
}
103-
} catch (const mkn::kul::Exception &e) {
104-
KERR << e.stack();
105-
} catch (const std::exception &e) {
106-
KERR << e.what();
107-
} catch (...) {
108-
KERR << "UNKNOWN ERROR CAUGHT";
109-
}
110-
if (finally) exit(2);
111-
using namespace mkn::kul::cli;
111+
if (!pyconfig_found && config_expected)
112+
{
113+
finally = 1;
114+
KEXCEPT(kul::Exception, "python-config does not exist on path");
115+
}
116+
}
117+
catch (const mkn::kul::Exception& e)
118+
{
119+
KERR << e.stack();
120+
}
121+
catch (const std::exception& e)
122+
{
123+
KERR << e.what();
124+
}
125+
catch (...)
126+
{
127+
KERR << "UNKNOWN ERROR CAUGHT";
128+
}
129+
if (finally)
130+
exit(2);
131+
using namespace mkn::kul::cli;
112132

113-
std::string extension;
114-
if (pyconfig_found) {
115-
mkn::kul::os::PushDir pushd(a.project().dir());
116-
mkn::kul::Process p(PY3_CONFIG);
117-
mkn::kul::ProcessCapture pc(p);
118-
p << "--extension-suffix";
119-
if (path_var) p.var(path_var->name(), path_var->toString());
120-
p.start();
121-
extension = pc.outs();
122-
} else {
123-
mkn::kul::Process p(PY);
124-
mkn::kul::ProcessCapture pc(p);
125-
p << "-c"
126-
<< "\"import sysconfig; "
127-
"print(sysconfig.get_config_var('EXT_SUFFIX'))\"";
128-
p.start();
129-
extension = pc.outs();
130-
}
131-
a.m_cInfo.lib_ext = mkn::kul::String::LINES(extension)[0]; // drop EOL
132-
a.m_cInfo.lib_prefix = "";
133-
a.mode(maiken::compiler::Mode::SHAR);
134-
}
135-
};
136-
} // namespace python3
137-
} // namespace mkn
133+
std::string extension;
134+
if (pyconfig_found)
135+
{
136+
mkn::kul::os::PushDir pushd(a.project().dir());
137+
mkn::kul::Process p(PY3_CONFIG);
138+
mkn::kul::ProcessCapture pc(p);
139+
p << "--extension-suffix";
140+
if (path_var)
141+
p.var(path_var->name(), path_var->toString());
142+
p.start();
143+
extension = pc.outs();
144+
}
145+
else
146+
{
147+
mkn::kul::Process p(PY);
148+
mkn::kul::ProcessCapture pc(p);
149+
p << "-c"
150+
<< "\"import sysconfig; "
151+
"print(sysconfig.get_config_var('EXT_SUFFIX'))\"";
152+
p.start();
153+
extension = pc.outs();
154+
}
155+
a.m_cInfo.lib_ext = mkn::kul::String::LINES(extension)[0]; // drop EOL
156+
a.m_cInfo.lib_prefix = "";
157+
a.mode(maiken::compiler::Mode::SHAR);
158+
}
159+
};
160+
} // namespace python3
161+
} // namespace mkn
138162

139-
extern "C" KUL_PUBLISH maiken::Module *maiken_module_construct() {
140-
return new mkn::python3::ModuleMaker;
163+
extern "C" MKN_KUL_PUBLISH maiken::Module* maiken_module_construct()
164+
{
165+
return new mkn::python3::ModuleMaker;
141166
}
142167

143-
extern "C" KUL_PUBLISH void maiken_module_destruct(maiken::Module *p) {
144-
delete p;
168+
extern "C" MKN_KUL_PUBLISH void maiken_module_destruct(maiken::Module* p)
169+
{
170+
delete p;
145171
}

0 commit comments

Comments
 (0)