diff --git a/mrk-proto.h b/mrk-proto.h index 2c6f554..ce9399d 100644 --- a/mrk-proto.h +++ b/mrk-proto.h @@ -15,3 +15,25 @@ #define M_ANS_START 31 #define M_ANS_DATA 32 #define M_ANS_END 33 + +#if defined(__x86_64__) +# define ARCH "x86_64" +#elif defined(__i386__) +# define ARCH "ix86" +#elif defined(__arm__) +# define ARCH "arm" +#elif defined(__ppc64__) || defined(__powerpc64__) +# define ARCH "ppc64" +#elif defined(__ppc__) || defined(__powerpc__) +# define ARCH "ppc" +#endif + +#if defined(__linux__) +# define OS "linux" +#elif defined(__MACH__) +# define OS "osx" +#elif defined(__FreeBSD__) +# define OS "freebsd" +#elif defined(_WIN32) || defined(_WIN64) +# define OS "win" +#endif diff --git a/mrk.c b/mrk.c index 8a221af..1cbedc9 100644 --- a/mrk.c +++ b/mrk.c @@ -105,6 +105,8 @@ static const char *sane_path_veto[] = {"../", "./", NULL}; static const char *sane_path_ok = "01234567890-_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ. "; static char *server = "devs.enlightenment.org"; static int server_port = 10077; +static char *arch = ARCH; +static char *os = OS; static void err(char *msg) @@ -683,6 +685,8 @@ pakage_bin(void) WRTS("devrepo", build.devrepo); WRTS("contact", build.contact); WRTS("needs", build.needs); + snprintf(tmp, sizeof(tmp), "%s-%s", os, arch); + WRTS("arch", tmp); i = 0; EINA_LIST_FOREACH(build.tags, l, s) { @@ -1162,7 +1166,13 @@ _ipc2_cb_dat(void *data, int type, void *event) char tmp[4096]; down_file = file; - snprintf(tmp, sizeof(tmp), "%s", down_file); + snprintf(tmp, sizeof(tmp), + "%s/Applications/.tmp", + getenv("HOME")); + ecore_file_mkpath(tmp); + snprintf(tmp, sizeof(tmp), + "%s/Applications/.tmp/%s", + getenv("HOME"), down_file); if (ecore_file_exists(tmp)) err("file already exists"); down_f = fopen(file, "wb"); @@ -1226,15 +1236,17 @@ main(int argc, char **argv) " src\n" " bin\n" " extract FILE\n" - " install FILE\n" + " inst FILE\n" " clean\n" - " remove PKGNAME\n" - " release [FILE]\n" - " down PKGNAME\n" - " get PKGNAME\n" + " rm PKGNAME\n" + " rel [FILE]\n" + " down PKGNAME\n" + " get PKGNAME\n" // " list [CATEGORY]\n" // " search KEY1 [KEY2] [KEY3] [...]\n" // " new\n" +// " getsrc\n" + " check\n" "\n"); return -1; } @@ -1244,6 +1256,8 @@ main(int argc, char **argv) if (getenv("MRKHOST")) server = getenv("MRKHOST"); if (getenv("MRKPORT")) server_port = atoi(getenv("MRKPORT")); + if (getenv("MRKARCH")) arch = getenv("MRKARCH"); + if (getenv("MRKOS")) os = getenv("MRKOS"); if (!strcmp(argv[1], "build")) { @@ -1265,7 +1279,7 @@ main(int argc, char **argv) if (argc < 3) err("need file to extract"); if (!package_extract(argv[2])) return 1; } - else if (!strcmp(argv[1], "install")) + else if (!strcmp(argv[1], "inst")) { if (argc < 3) err("need file to install"); package_clean(); @@ -1275,13 +1289,13 @@ main(int argc, char **argv) { package_clean(); } - else if (!strcmp(argv[1], "remove")) + else if (!strcmp(argv[1], "rm")) { if (argc < 3) err("need package to remove"); if (!package_remove(argv[2])) return 1; package_clean(); } - else if (!strcmp(argv[1], "release")) + else if (!strcmp(argv[1], "rel")) { char tmp[4096]; char *pk; @@ -1313,6 +1327,36 @@ main(int argc, char **argv) if (!package_install(down_file)) return 1; ecore_file_unlink(down_file); } + else if (!strcmp(argv[1], "list")) + { + } + else if (!strcmp(argv[1], "search")) + { + } + else if (!strcmp(argv[1], "new")) + { + } + else if (!strcmp(argv[1], "getsrc")) + { + } + else if (!strcmp(argv[1], "check")) + { + char tmp[4096]; + ecore_file_recursive_rm("Marrakesh-Check"); + ecore_file_mkdir("Marrakesh-Check"); + if (!parse_bld("Marrakesh.mrk")) err("Parse build failed"); + if (!pakage_src("Marrakesh.mrk")) err("Source packaging failed"); + chdir("Marrakesh-Check"); + snprintf(tmp, sizeof(tmp), "../%s-%s.mks", build.name, build.version); + if (!package_extract(tmp)) err("Source extract failed"); + memset(&build, 0, sizeof(Build)); + if (!parse_bld("Marrakesh.mrk")) err("Parse build 2 from source failed"); + if (!build_proj()) err("Build project failed"); + memset(&build, 0, sizeof(Build)); + if (!parse_bld("Marrakesh.mrk")) err("Parse build 3 failed"); + if (!pakage_bin()) err("Package binary failed"); + printf("OK\n"); + } else { err("unknown subcommand!");